【MySQL】解析資料庫語言類型 DDL、DML、DCL、DQL

【MySQL】解析資料庫語言類型 DDL、DML、DCL、DQL

本篇重點

  • 了解 DML、DDL、DCL 和 DQL 分別是資料庫裡的哪些功能

以下說明會以 MySQL 的指令做說明


在資料庫管理中,DML、DDL、DCL 和 DQL 是資料庫領域中的四種類型,它們各自負責著不同的任務。

舉例的中括號 [ ] 為替換字串

DDL (Data Definition Language) 數據定義語言

DDL用於定義和管理資料庫結構。

包括創建、修改和刪除資料庫、資料表、索引等對象的操作。

常見指令

  • CREATE:建立資料庫的物件 (資料表、索引等)
  • DESCRIBE:查詢資料表的結構資訊
  • ALTER:修改現有資料庫對象的結構 (新增欄位、修改資料型別等)
  • TRUNCATE:刪除資料表中的所有資料,但保留資料表的結構
  • DROP:刪除資料庫的物件 (資料表、索引等)

舉例

創建資料庫

mysql
1
2
3
4
CREATE DATABASE [資料庫名稱];

// 創建 "mydatabase" 資料庫
CREATE DATABASE mydatabase;

創建資料表

mysql
1
2
3
4
5
6
7
8
CREATE TABLE [資料表名稱];

// 創建 "customers" 資料表
CREATE TABLE customers (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
email VARCHAR(100)
);

查詢資料表的結構資訊

mysql
1
2
3
4
DESCRIBE [資料表名稱];

// 查看 "customers" 資料表結構資訊
DESCRIBE customers;

修改資料表結構

mysql
1
2
3
4
5
6
7
ALTER TABLE [資料表名稱] [修改事項];

// "customers" 資料表新增一個欄位 "phone"
ALTER TABLE customers ADD phone VARCHAR(20);

// 刪除 "customers" 資料表的 "phone" 欄位
ALTER TABLE customers DROP COLUMN phone;

清空資料表所有資料

mysql
1
2
3
4
TRUNCATE TABLE [資料表名稱];

// 清空 "customers" 資料表內所有內容
TRUNCATE TABLE customers;

刪除資料表

mysql
1
2
3
4
DROP TABLE [資料表名稱];

// 刪除 "customers" 資料表
DROP TABLE customers;

健忘筆記

刪除資料功能 (TRUNCATE 指令或刪除資料表的欄位等) 無法回滾(Rollback),一旦執行就無法還原被刪除的資料。在使用刪除功能時,請再三確認要刪除的資料。

DML (Data Manipulation Language) 數據操作語言

DML 是用於操作和處理資料。

包括對資料進行插入、更新和刪除等操作。

常見指令

  • INSERT INTO:新增資料到資料表中
  • UPDATE:更改資料表中的資料
  • DELETE:刪除資料表中的資料

健忘筆記

在一些資料庫系統中,SELECT 指令也可能被視為 DML 指令的一部分,這取決於特定資料庫的標準。但在 MySQL 中,通常將 SELECT 指令歸類為 DQL 指令。

舉例

新增資料

mysql
1
2
3
4
INSERT INTO [資料庫名稱] ([欄位]) VALUES ([值]);

// 在 "customers" 資料表新增一筆客戶資料
INSERT INTO customers (name, email) VALUES ('John', 'john@example.com');

更新資料

mysql
1
2
3
4
UPDATE [資料庫名稱] SET [修改值] WHERE [條件];

// 在 "customers" 資料表更新一筆客戶資料
UPDATE customers SET email = 'newJohn@example.com' WHERE name = 'John';

刪除資料

mysql
1
2
3
4
DELETE FROM [資料庫名稱] WHERE [條件];

// 在 "customers" 資料表刪除一筆客戶資料
DELETE FROM customers WHERE name = 'John';

DQL (Data Query Language) 數據查詢語言

DQL 用於查詢資料庫的資料。

主要目的是檢索所需的數據,而不涉及對數據進行修改。

常見指令

  • SELECT:查詢資料庫中的資料
  • WHERE:條件篩選資料
  • DISTINCT:檢索唯一的資料值
  • ORDER BY:依指定的欄位排序資料
  • GROUP BY:依指定的欄位分組

舉例

查詢資料

mysql
1
2
3
4
SELECT [欄位名稱] FROM [資料表名稱];

// 搜索 table_name 資料表內所有欄位的資料
SELECT * FROM table_name;

篩選條件

mysql
1
2
3
4
SELECT [欄位名稱] FROM [資料表名稱] WHERE [篩選條件];

// 搜索 table_name 資料表內 uid = 123 的資料
SELECT * FROM table_name WHERE uid = 123;

搜索唯一值

mysql
1
2
3
4
SELECT DISTINCT [欄位名稱] FROM [資料表名稱];

// 搜索 order_list 資料表內 uid 唯一值的資料
SELECT DISTINCT uid FROM order_list;

依指定欄位排序資料

mysql
1
2
3
4
5
6
7
SELECT [欄位名稱] FROM [資料表名稱] ORDER BY [欄位名稱] (ASC/DESC);

// 搜索 order_list 資料表內所有資料並以uid做排序
SELECT * FROM order_list ORDER BY uid;

// 設定順序由大排到小
SELECT * FROM order_list ORDER BY uid DESC;

健忘筆記

ORDER BY 未指定排序,預設使用 ASC (升冪),順序由小排到大,如果想要由大排到小,可以設定 ORDER BY [欄位名稱] DESC;

依指定的欄位分組

mysql
1
2
3
4
SELECT [欄位名稱] FROM [資料表名稱] GROUP BY [欄位名稱];

// 依 team 去分組,計算每組的人數
SELECT team, COUNT(*) FROM table_name GROUP BY team;

DCL (Data Control Language) 數據控制語言

DCL 用於控制資料庫的使用權限和訪問權限。

包括授予、撤銷用戶的權限,以及確保資料庫的安全性和完整性。

常見指令

  • CREATE USER:創建新的使用者
  • DROP USER:刪除現有的使用者
  • GRANT:授予使用者特定的權限和許可權
  • REVOKE:撤銷使用者的特定權限和許可權

舉例

創建新的使用者

mysql
1
2
3
4
CREATE USER [使用者名稱]@[IP位置或主機名] IDENTIFIED BY 'password';

// 創建新使用者 "mary",並設定密碼
CREATE USER 'mary'@'localhost' IDENTIFIED BY 'password';

健忘筆記

IDENTIFIED BY 是用於設定使用者密碼的指令,可以省略這個指令讓使用者直接進入資料庫,但這樣就有安全性的問題

刪除現有的使用者

mysql
1
2
3
4
DROP USER [使用者名稱]@[IP位置或主機名];

// 刪除資料庫使用者 "mary"
DROP USER 'mary'@'localhost';

授予權限

mysql
1
2
3
4
GRANT [權限] ON [資料庫名稱].* TO [使用者名稱]@[IP位置或主機名];

// 授予 "john" 在 my_database 搜尋和寫入和刪除的權限
GRANT SELECT, INSERT, DELETE ON my_database.* TO 'john'@'localhost';

健忘筆記

‘john‘@’localhost’ 是用來指定使用者帳號和使用者連接的 IP,指定連接 IP 確保資料庫的安全性
my_database.* 是指定 my_database 資料庫的所有資料表,也可以指定特定資料表的權限,例如 my_database.my_table

收回權限

mysql
1
2
3
4
REVOKE [權限] ON [資料庫名稱].* FROM [使用者名稱]@[IP位置或主機名];

// 收回 "john" 在 my_database 刪除的權限
REVOKE DELETE ON my_database.* FROM 'john'@'localhost';

結論

有一次在看 MySQL 文件的時候裡面提到 DQL,但也沒有特別解釋什麼是 DQL,後來去查才知道這是資料庫語言類型,感覺很容易忘記所以有了這篇😆

  • DDL:定義和管理資料庫結構
  • DML:操作和處理資料
  • DQL:查詢資料庫的資料
  • DCL:控制資料庫的使用權限和訪問權限。

【MySQL】解析資料庫語言類型 DDL、DML、DCL、DQL

https://forgetfulengineer.github.io/Backend/MySQL/Analyzing-4-Types-of-Database-Language/

作者

健忘工程師

發表於

2024-04-11

更新於

2024-04-11

許可協議


評論

複製完成