SQL语言DL,DML,DCL,TCL的关系

153 阅读3分钟

🧱 1. DDL(Data Definition Language)数据定义语言

🔧 作用

用于定义数据库结构(如数据库、表、视图、索引等),即创建或修改数据库中的“结构”。

⚙️ 原理

DDL 命令在执行时,会在系统的元数据(metadata)中记录或更新结构信息。

📌 常用命令

  • CREATE:创建数据库对象(表、视图等)
  • ALTER:修改表结构(增加、修改字段)
  • DROP:删除数据库对象
  • TRUNCATE:快速清空表数据

🌍 应用范围

设计和管理数据库架构

🧪 应用场景举例

  • 在新系统上线前创建数据库表:
sql
CopyEdit
CREATE TABLE users (
  id INT PRIMARY KEY,
  name VARCHAR(100),
  email VARCHAR(100)
);
  • 变更表结构,如新增列:
sql
CopyEdit
ALTER TABLE users ADD COLUMN created_at TIMESTAMP;

📝 2. DML(Data Manipulation Language)数据操作语言

🔧 作用

用于对数据库表中的数据进行操作(增、删、改、查)。

⚙️ 原理

DML 操作一般只影响数据,不影响结构。操作会被记录在日志中,以便恢复。

📌 常用命令

  • SELECT:查询数据
  • INSERT:插入新数据
  • UPDATE:更新已有数据
  • DELETE:删除数据

🌍 应用范围

日常的数据管理与业务操作

🧪 应用场景举例

  • 插入用户数据:
sql
CopyEdit
INSERT INTO users (id, name, email) VALUES (1, 'Alice', 'alice@example.com');
  • 查询所有用户:
sql
CopyEdit
SELECT * FROM users;
  • 更新用户邮箱:
sql
CopyEdit
UPDATE users SET email = 'new@example.com' WHERE id = 1;

🛡️ 3. DCL(Data Control Language)数据控制语言

🔧 作用

用于控制对数据库的访问权限和安全性。

⚙️ 原理

通过系统权限管理模块对用户权限进行管理(授予或撤销)。

📌 常用命令

  • GRANT:授予权限
  • REVOKE:撤销权限

🌍 应用范围

数据库安全管理、权限分配

🧪 应用场景举例

  • 给用户授予查询权限:
sql
CopyEdit
GRANT SELECT ON users TO analyst;
  • 撤销用户的删除权限:
sql
CopyEdit
REVOKE DELETE ON users FROM analyst;

🔁 4. TCL(Transaction Control Language)事务控制语言

🔧 作用

用于管理数据库事务(事务是数据库操作的一个最小单元,具有原子性、一致性、隔离性、持久性,即 ACID)。

⚙️ 原理

TCL 保证一系列数据库操作要么全部成功,要么全部失败(回滚)。

📌 常用命令

  • BEGINSTART TRANSACTION:开始事务
  • COMMIT:提交事务
  • ROLLBACK:回滚事务
  • SAVEPOINT:设置保存点
  • SET TRANSACTION:设置事务属性

🌍 应用范围

对需要数据一致性的操作进行控制,如金融转账、订单处理等。

🧪 应用场景举例

  • 银行账户转账操作:
sql
CopyEdit
START TRANSACTION;

UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;

COMMIT;

如果中间发生错误,则:

sql
CopyEdit
ROLLBACK;

✅ 总结对比表格

模型全称作用常用语句应用场景
DDLData Definition Language定义数据库结构CREATE, ALTER, DROP, TRUNCATE创建表、添加字段
DMLData Manipulation Language操作数据SELECT, INSERT, UPDATE, DELETE数据增删改查
DCLData Control Language控制权限GRANT, REVOKE分配用户权限
TCLTransaction Control Language控制事务BEGIN, COMMIT, ROLLBACK银行转账、订单提交