SQL(结构化查询语言)根据其功能可分为六大核心类别,每类负责不同的数据库操作任务:
1. DDL:数据定义语言 (Data Definition Language)
功能 :定义/修改数据库 对象(表、视图、索引、数据库 等)的结构 。
核心语句:
-
创建数据库
sqlCREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集] [COLLATE 排序规则];
-
查询所有数据库
sqlSHOW DATABASES;
-
使用数据库
sqlUSE 数据库名;
-
删除数据库
sqlDROP DATABASE [IF EXISTS] 数据库名;
-
查询当前数据库
sqlSELECT DATABASE();
-
查询当前数据库所有表
sqlSHOW TABLES;
-
查询表结构
sqlDESC 表名;
-
查询指定表的建表语句
sqlSHOW CREATE TABLE 表名;
-
添加表当中的字段
sqlALTER TABLE 表名 ADD 字段名 类型 [COMMENT 注释] [约束];
-
修改表中数据类型
sqlALTER TABLE 表名 MODIFY 字段名 新数据类型;
-
修改表中字段名和字段类型
sqlALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型 [COMMENT 注释] [约束];
-
`清空表数据(保留结构)
sqlTRUNCATE TABLE logs; -- 比 DELETE 更快,不可回滚
-
`重命名表名(部分数据库支持)
sqlALTER TABLE 旧表名 RENAME TO 新表名;
-
删除表
sqlDORP TABLE [IF EXISTS] 表名;
-
删除指定表,并重新创建该表
sqlTRUNCATE TABLE 表名;
2. DML:数据操作语言 (Data Manipulation Language)
功能 :操作表 中的数据记录 (增、删、改)。
核心语句:
-
给指定字段插入数据
sqlINSERT INTO 表名(字段名1, 字段名2, ...) VALUES (值1, 值2, ...);
-
给全部字段插入数据
sqlINSERT INTO 表名 VALUES (值1, 值2, ...);
-
批量添加数据
sqlINSERT INTO 表名(字段名1, 字段名2, ...) VALUES (值1, 值2, ...), (值1, 值2, ...), ...;
-
UPDATE
:更新数据sqlUPDATE 表名 SET 字段名1 = 值1, 字段名2 = 值2, ... [WHERE 条件];
-
DELETE
:删除数据(以行为单位)sqlDELETE FROM 表名 [WHERE 条件];
注意 :DML 操作需显式提交事务(
COMMIT
)才会永久生效。
3. DQL:数据查询语言 (Data Query Language)
功能 :从表中检索数据 (90%的SQL使用场景)。
唯一但核心语句:
-
SELECT
:查询数据sqlSELECT name, email FROM users WHERE id > 10 ORDER BY name;
-
常搭配子句:
WHERE
(过滤)、JOIN
(多表连接)、
GROUP BY
(分组)、HAVING
(分组过滤)、
ORDER BY
(排序)、LIMIT
(限制行数)、SELECT
(字段列表)
具体详细介绍可点击 ------ SQL查询实战:高效数据检索全攻略
4. DCL:数据控制语言 (Data Control Language)
功能 :管理数据库访问权限与安全性 。
核心语句:
-
查询用户
sqlUSE mysql; SELECT * FROM user;
-
创建用户
sqlGRANT USER '用户名'@'主机号' IDENTIFIED BY '密码';
-
修改用户密码
sqlALTER USER '用户名'@'主机名' IDENTIFED WITH mysql_native_password BY '新密码';
-
删除用户
sqlDROP USER '用户名'@'主机号';
-
授予权限
sqlGRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';
-
撤销权限
sqlREVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';
5. TCL:事务控制语言 (Transaction Control Language)
功能 :管理数据库事务 (保证数据一致性)。
核心语句:
-
BEGIN
/START TRANSACTION
:开启事务 -
COMMIT
:提交事务(永久保存更改)sqlCOMMIT;
-
ROLLBACK
:回滚事务(撤销未提交的更改)sqlROLLBACK;
-
SAVEPOINT
:设置事务保存点(部分回滚)sqlSAVEPOINT sp1; -- 设置保存点 ROLLBACK TO sp1; -- 回滚至保存点
6. 其他扩展类别
-
CCL:游标控制语言 (Cursor Control Language)
用于遍历结果集(如DECLARE CURSOR
,FETCH
,CLOSE
)。 -
存储过程/函数 (非纯SQL但广泛使用):
sqlCREATE PROCEDURE GetUser(IN uid INT) BEGIN SELECT * FROM users WHERE id = uid; END;
分类总结对比
类别 | 功能 | 关键语句 | 是否自动提交 |
---|---|---|---|
DDL | 定义/修改结构 | CREATE, ALTER, DROP | 自动提交 |
DML | 操作数据记录 | INSERT, UPDATE, DELETE | 需显式提交 |
DQL | 查询数据 | SELECT | - |
DCL | 权限管理 | GRANT, REVOKE | 自动提交 |
TCL | 事务控制 | COMMIT, ROLLBACK, SAVEPOINT | - |
关键特性说明
- DDL 自动提交 :执行
CREATE
/ALTER
/DROP
后立即生效(无法回滚)。 - DML 需事务控制 :必须显式执行
COMMIT
或ROLLBACK
才能生效/撤销。 - DQL 不改变数据:仅查询,安全且可频繁使用。
- 权限最小化原则:通过 DCL 严格控制用户访问权限(如只读权限)。
- 事务的 ACID 保障:TCL 确保原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。
掌握这些分类有助于编写高效、安全的 SQL 语句,并理解数据库操作的底层逻辑。