讲解下 DDL、DML、DCL
DDL、DML、DCL 是 MySQL 中三种核心 SQL 语句类型,分别对应 “数据定义”“数据操作”“数据控制”,职责明确,具体定义、语法及示例如下:
# 1. DDL(Data Definition Language,数据定义语言)
核心作用:定义数据库、表、索引等 “数据结构”,不涉及数据本身的增删改查;
关键特性:执行后自动提交事务(无法 ROLLBACK),会修改数据结构的元信息;
常用语句:
CREATE:创建数据库、表、索引等;
CREATE DATABASE test_db; -- 创建数据库 CREATE TABLE user (id INT PRIMARY KEY, name VARCHAR(20)); -- 创建表 CREATE INDEX idx_name ON user(name); -- 创建索引1
2
3ALTER:修改数据库、表的结构(如添加字段、修改字段类型、删除索引);ALTER TABLE user ADD COLUMN age INT; -- 新增字段 ALTER TABLE user MODIFY COLUMN age TINYINT; -- 修改字段类型 ALTER TABLE user DROP INDEX idx_name; -- 删除索引1
2
3DROP:删除数据库、表、索引等;DROP DATABASE test_db; -- 删除数据库 DROP TABLE user; -- 删除表 DROP INDEX idx_name ON user; -- 删除索引1
2
3TRUNCATE:清空表数据(保留表结构),属于 DDL(非 DML);TRUNCATE TABLE user; -- 清空user表数据1
# 2. DML(Data Manipulation Language,数据操作语言)
核心作用:操作表中的 “数据”(增删改查),不修改数据结构;
关键特性:支持事务(InnoDB 中可 ROLLBACK),执行后需 COMMIT 才会持久化;
常用语句:
INSERT:插入数据;
INSERT INTO user (id, name) VALUES (1, '张三'), (2, '李四'); -- 批量插入1UPDATE:修改数据;UPDATE user SET name='张三三' WHERE id=1; -- 修改id=1的用户名称1DELETE:删除数据;DELETE FROM user WHERE id=2; -- 删除id=2的用户1SELECT:查询数据(部分分类中 SELECT 单独列为 DQL,数据查询语言);SELECT * FROM user WHERE id=1; -- 查询id=1的用户1
# 3. DCL(Data Control Language,数据控制语言)
核心作用:控制数据库的 “访问权限” 和 “事务控制”;
关键特性:执行后自动提交,影响用户对数据的操作权限;
常用语句:
- 权限控制:
GRANT(授予权限)、REVOKE(撤销权限);
GRANT SELECT, UPDATE ON test_db.user TO 'test_user'@'localhost' IDENTIFIED BY '123456'; -- 授予查询、修改权限 REVOKE UPDATE ON test_db.user FROM 'test_user'@'localhost'; -- 撤销修改权限1
2- 权限控制:
事务控制:
COMMIT(提交事务)、ROLLBACK(回滚事务)、SET TRANSACTION(设置事务隔离级别);COMMIT; -- 提交事务 ROLLBACK; -- 回滚事务 SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; -- 设置事务隔离级别1
2
3其他:
FLUSH PRIVILEGES(刷新权限,修改用户权限后生效);FLUSH PRIVILEGES; -- 刷新权限1
# 总结
- DDL:管 “结构”(建库、建表、改表);
- DML:管 “数据”(增删改查);
- DCL:管 “权限” 和 “事务”(授权、提交、回滚)。
上次更新: 12/30/2025