1200px-MySQL.svg.png

 

什麼是 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程式

1678457560455.jpg

 


【先來個基本概念

表格是 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  顯示所有資料庫

1678463737673.jpg

 

【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   影片圖案

1678505145423.jpg

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

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

1678506517441.jpg

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

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

1678507323720.jpg

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

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

1678512640310.jpg

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

1678513073915.jpg

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

1678513363297.jpg

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

1678515750381.jpg

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

1678515808627.jpg

 

【SELECT 選擇要顯示的內容】

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

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

1678516330503.jpg

1678516408243.jpg

ORDER BY `表格`    排序

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

1678517402656.jpg

LIMIT 筆數   限制回傳筆數

1678518075329.jpg

混 ASC DESC 使用

1678518054370.jpg

與 WHERE 混用

1678518251304.jpg

1678518380710.jpg

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

1678519327291.jpg

 

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

創立第一個表格 `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

1.jpg

 

創立第二個表格 `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

2.jpg

 

設置連結 

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

3.jpg

 

創立第三個表格 `client`

設 PRIMARY KEY:

設 client_id 為 PRIMARY KEY

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

4.jpg

 

創立第四個表格 `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

5.jpg

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

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

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

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

螢幕擷取畫面 2023-03-29 232905.png

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

螢幕擷取畫面 2023-03-29 233113.png

 

練習一下

螢幕擷取畫面 2023-03-29 233505.png

螢幕擷取畫面 2023-03-29 233516.png

螢幕擷取畫面 2023-03-29 233527.png

螢幕擷取畫面 2023-03-29 233537.png

 

【練習】

aggregate functions 聚合函數

螢幕擷取畫面 2023-03-29 234200.png

 

螢幕擷取畫面 2023-03-29 234618.png

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

螢幕擷取畫面 2023-03-29 234521.png

螢幕擷取畫面 2023-03-29 234935.png

螢幕擷取畫面 2023-03-29 235035.png

螢幕擷取畫面 2023-03-29 235227.png

 

Wildcard 萬用字元

螢幕擷取畫面 2023-03-30 000015.png

螢幕擷取畫面 2023-03-30 000137.png

螢幕擷取畫面 2023-03-30 000509.png

螢幕擷取畫面 2023-03-30 000901.png

螢幕擷取畫面 2023-03-30 000901.png

 

Union 聯集

螢幕擷取畫面 2023-03-30 001639.png

螢幕擷取畫面 2023-03-30 002106.png

螢幕擷取畫面 2023-03-30 002353.png

 

Join 連接

螢幕擷取畫面 2023-03-30 004701.png

螢幕擷取畫面 2023-03-30 004842.png

螢幕擷取畫面 2023-03-30 005032.png

螢幕擷取畫面 2023-03-30 005507.png

 

Subquery 子查詢

螢幕擷取畫面 2023-03-30 011510.png

螢幕擷取畫面 2023-03-30 011520.png

螢幕擷取畫面 2023-03-30 012753.png

 

 

 

 

 

 

 

 

 

 

 

 

arrow
arrow
    文章標籤
    MySQL SQL 自學MySQL
    全站熱搜

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