什麼是 MySQL? SQL?

MySQL (MySQL Database Management System) 是一種開源的關係型數據庫管理系統(RDBMS),支持多用戶、多線程和多種存儲引擎,是一種基於SQL的數據庫,因此使用SQL (Structured Query Language )語言進行數據庫管理操作

簡單來說,SQL是一種程式語言,用於操作關係型數據庫,而MySQL是一種數據庫管理系統,它支持SQL語言,並提供了用於創建、管理和訪問數據庫的工具和服務

 

什麼是 MSSQL?

MSSQL (Microsoft SQL Server),是由Microsoft開發的一種關係型數據庫管理系統(RDBMS),是一個強大的數據庫系統,可以在Windows操作系統上運行

與MySQL差別在

1. MySQL是Oracle公司開發,而MSSQL是Microsoft公司開發

2. MySQL是一個開源的免費數據庫,一般可以免費下載和使用,商用也只要付少少的費用,而MSSQL是一個商業數據庫,需要購買許可證才能使用

3. MySQL通常比MSSQL更快,它具有更輕量級的架構,較少的系統資源使用和更快的查詢速度。但MSSQL處理大型資料方面表現更好

4. MySQL支援多個操作系統,Windows,Linux,Mac OS等,而MSSQL只支援Windows和一些雲服務平台

兩者儲存數據和查詢系統很相似,都支援 ANSI-SQL,也都可以使用 SQL 語言來查詢。兩者幾乎相通,只差在介面,會一種幾乎就等於會另一種了

 

為什麼想學 MySQL?

很實際的,想轉職,當西語業務久了很疲乏(其實也才三年),除了語言、興趣學的adobe軟體,我沒有任何深入的專長

2019在巴拿馬那年也意識到,自己不想當全職老師。對數據分析有興趣,就從這方向重新開始吧,也許學一學還能轉成後端、seo工程師、轉做app,甚至當數位游牧 越想越覺得~真~的~學不完

 

MySQL 怎麼學?

先看這部,其實跟 EXCEL 滿像的

 

之後看了這個

 

報名政府合作機構的就業輔導課程+各大學公開課程+自己買網課,彌補自己的不足

下面是學過的課程/看過的網頁,或想學還沒學的

 

SQLBolt

w3school

codecademy

Leetcode

PS [Leetcode] 刷題新手先備與相關知識分享

 

怎麼安裝 MySQL?

進入MySQL Community,下載MySQL程式

 


【先來個基本概念

表格是 tables,表格內容是 key

 主鍵 (Primary Key) 「唯一」表示每一筆資料

emp_id   是主鍵 (Primary Key)

表格1employee

emp_id name major

1101

Cata Programming
1102 Tomas Language
1103 Biga Design

 

 外鍵 (Foreign Key) 對應到另一張表格的主鍵

branch_id   是外鍵 (Foreign Key)

表格1employee

emp_id name major branch_id
1101 Cata Programming

1

1102 Tomas Language 2
1103 Biga Design

3

表格2branch

branch_id branch name
1 software department
2 RD department
Design department

 

 外鍵 (Foreign Key) 也可以在自己的表格中設置外鍵 (Foreign Key)

sup_id   是外鍵 (Foreign Key)

表格1employee

emp_id name birth_date sex salary major branch_id sup_id
1101 Cata 0515 F 80000 Programming

1

null
1102 Tomas   M 100000 Language 2 1101
1103 Biga   F 80000 Design

3

1102

表格2branch

branch_id branch name manager_id
1 software department 1101
2 RD department 1102
Design department 1103

表格3client

client_id client_name phone
001 Jordan 02-2222-2222
002 Maite 03-3333-333

表格4work_with

emp_id   client_id   同時是自己表格中的主鍵 (Primary Key),同時也是外鍵 (Foreign Key)

emp_id client_id total_sales
1102 001 100000
1101 002 500000
1102 002 15000
1103 002 600000

 

【創建、刪減資料庫

CREATE DATABASE 創建資料庫

DROP DATABASE 刪減資料庫

SHOW DATABASES  顯示所有資料庫

 

【CREATE 創建、DROP 刪減、ALTER TABLE ... ADD/ ALTER TABLE ... DROP COLUMN 增加/刪減表格列,

INSERT INTO 輸入表格資料、UPDATE+SET+WHERE 更改表格資料、DELETE+FROM+WHERE 刪除某列表格

0. 一定要先 CREATE DATABASE 創建資料庫

SET SQL_SAFE_UPDATES = 0;   關閉預設更新模式

1. USE 資料庫

2. CREATE TABLE 在資料庫裡面創建表格   (<>DROP TABLE)

3. DESCRIBE 顯示表格

INT  整數

後面加一些 CONSTRAINTS 限制

AUTO_INCREMENT 會自動輸入 1 2 3...

DECIMAL (4,2)  總共四位數,兩位是小數

VANCHAR (10)  字串,最多10個字  

(  ) 後面加一些 CONSTRAINTS 限制

NOT NULL  值不能空白

UNIQUE 值不能重複

DEFAULT" "  預設內容

DATE   日期 YYYY-MM-DD

TIMESTAMP  日期時間 YYYY-MM-DD HH:MM:SS

BLOB   影片圖案

4. ALTER TABLE ...... ADD 增加列

5. ALTER TABLE ...... DROP COLUMN 刪除列

6. INSERT INTO `表格` VALUES    輸入表格資料,可以指定輸入某些項目

7. SELECT * FROM `表格`     顯示表格 

8. UPDATE `表格` + SET `某欄名稱` = "更改後內容" + WHERE `某欄名稱` = "原內容"   更改表格內容

如果沒有WHERE, 欄位內,所有相符的屬性都會一起更改

9. UPDATE `表格` + SET `某欄名稱` = "更改後內容" + WHERE `某欄名稱` = "原內容",也可以替換內容

10. DELETE FROM `表格` + WHERE `某主鍵` = ;   刪除某列

11. AND OR >, <, <>  搭配使用

12. DELECT FROM `表格`   清空表格

 

【SELECT 選擇要顯示的內容】

SELECT `某欄名稱`, `某欄名稱` FROM `表格`;

SELECT * FROM `表格`;     整個表格都要

ORDER BY `表格`    排序

預設 ASC 由低到高, DESC 由高到低

LIMIT 筆數   限制回傳筆數

混 ASC DESC 使用

與 WHERE 混用

WHERE `表格` IN(" ", " ")     可代替 or 寫法

 

【試著創立多表格資料庫】

創立第一個表格 `employee`

設 PRIMARY KEY:

設 emp_id 為 PRIMARY KEY

emp_id name birth_date sex salary major branch_id sup_id
1101 Cata 1996-05-15 F 80000 programming

1

NULL
1102 Tomas 1990-07-29 M 100000 language 2 1101
1103 Biga 1996-04-22 F 80000 design

3

1102

 

創立第二個表格 `branch`

設 PRIMARY KEY:

設 branch_id 為 PRIMARY KEY

設 FOREIGN KEY:

`branch`表格`manager_id` 設為 `employee` 表格  `emp_id` 的 FOREIGN KEY

branch_id branch name manager_id
1 software department 1101
2 RD department 1102
Design department 1103

 

設置連結 

ON DELETE SET NULL 代表員工如果離職,manager_id 會被設為 NULL

設 FOREIGN KEY:

`employee`表格`branch_id` 設為 `branch` 表格  `branch_id` 的 FOREIGN KEY

`employee`表格`sup_id` 設為 `employee` 表格  `emp_id` 的 FOREIGN KEY

 

創立第三個表格 `client`

設 PRIMARY KEY:

設 client_id 為 PRIMARY KEY

client_id client_name phone
001 Jordan 02-2222-2222
002 Maite 03-3333-333

 

創立第四個表格 `work_with`

ON DELETE CASCADE 代表員工如果離職,兩張表的' emp_id 、client_id 會跟著一起被刪掉

設 PRIMARY KEY:

設 emp_id 、client_id 為 PRIMARY KEY

設 FOREIGN KEY:

`work_wi th`表格`emp_id` 設為 `employee` 表格  `emp_id` 的 FOREIGN KEY

``work_with`表格`client_id` 設為 `client` 表格  `client_id` 的 FOREIGN KEY

emp_id client_id total_sales
1102 001 100000
1101 002 500000
1102 002 15000
1103 002 600000

表格都創立好後,開始輸入表格資料

第一張表格 `employee` 的 branch_id 是 FOREIGN KEY,在當下還沒對應到第二張表格 `branch` 的 branch_id

如果先輸入第二張 `branch` 表格?  第二張表格 `branch` 的 manager_id 是 FOREIGN KEY,在當下還沒對應到第一張表格 `employee` 的 emp_id

如果先把 `branch` 的 manager_id 都先設成 NULL? 兩張表建好再改回來就可以了!

繼續建好其他兩張表 `client`, `work_with`

 

練習一下

 

【練習】

aggregate functions 聚合函數

 

PS 這樣如果有男生符合條件,答案會錯誤

 

Wildcard 萬用字元

 

Union 聯集

 

Join 連接

 

Subquery 子查詢

 

 

 

 

 

 

 

 

 

 

 

 

文章標籤
全站熱搜
創作者介紹
創作者 Cata Viva 拉丁樂 的頭像
Cata Viva 拉丁樂

Cata Viva 拉丁樂

Cata Viva 拉丁樂 發表在 痞客邦 留言(0) 人氣(462)