SQL中的四大核心语言:DQL、DML、DDL、DCL详解
一、DQL(数据查询语言):数据检索的核心工具
DQL(Data Query Language,数据查询语言) 是SQL中专门用于从数据库中检索数据 的语言,其核心目标是获取符合条件的数据,而不改变数据库的结构或内容。它是SQL中最基础、最常用的子集,几乎所有数据库操作都离不开数据查询。
核心语句 :SELECT(查询)、WHERE(条件筛选)、JOIN(多表关联)、GROUP BY(分组)、ORDER BY(排序)、HAVING(分组后筛选)、LIMIT(限制结果数量)等。
主要功能:
-
基础查询:检索表中的指定列或所有列(如
SELECT name, age FROM employees;); -
条件查询:通过
WHERE子句筛选符合条件的行(如SELECT * FROM products WHERE price > 100;); -
排序与分组:通过
ORDER BY对结果排序(如SELECT * FROM orders ORDER BY order_date DESC;),通过GROUP BY对数据进行分组(如SELECT department, COUNT(*) FROM employees GROUP BY department;); -
聚合计算:使用
SUM()(求和)、AVG()(平均值)、COUNT()(计数)等聚合函数统计数据(如SELECT AVG(salary) FROM employees;); -
多表关联:通过
INNER JOIN(内连接)、LEFT JOIN(左连接)等关联多个表(如SELECT e.name, d.department_name FROM employees e INNER JOIN departments d ON e.department_id = d.department_id;)。
特点:
-
只读性:DQL语句不会修改数据库中的数据,仅返回查询结果集(临时虚拟表);
-
灵活性:支持复杂查询(如子查询、嵌套查询、函数应用),满足多样化数据检索需求;
-
非破坏性:查询操作不会影响原始数据,仅用于数据分析和信息提取。
二、DML(数据操作语言):数据修改的核心工具
DML(Data Manipulation Language,数据操作语言) 是SQL中用于修改数据库中数据 的语言,其核心目标是实现对表中数据的增、删、改操作,直接影响数据库中的数据内容。
核心语句 :INSERT(插入)、UPDATE(更新)、DELETE(删除)。
主要功能:
-
插入数据:向表中添加新记录(如
INSERT INTO employees (name, age) VALUES ('张三', 25);); -
更新数据:修改表中已存在的记录(如
UPDATE employees SET age = 26 WHERE name = '张三';); -
删除数据:删除表中符合条件的记录(如
DELETE FROM employees WHERE age < 18;)。
特点:
-
数据修改性:DML语句会直接改变数据库中的数据内容,是数据库应用中最常用的操作;
-
事务相关性 :DML操作通常需要事务控制 (如
BEGIN TRANSACTION、COMMIT、ROLLBACK),以确保数据的一致性(如批量插入数据时,若中途出错可回滚); -
影响行数 :DML语句执行后会返回受影响的行数(如
UPDATE语句返回修改的行数),用于判断操作是否成功。
三、DDL(数据定义语言):数据库结构管理的核心工具
DDL(Data Definition Language,数据定义语言) 是SQL中用于定义或修改数据库结构 的语言,其核心目标是管理数据库的逻辑结构(如表、视图、索引等),不涉及数据内容的修改。
核心语句 :CREATE(创建)、ALTER(修改)、DROP(删除)、TRUNCATE(清空)。
主要功能:
-
创建对象:创建数据库、表、视图、索引等(如
CREATE TABLE employees (id INT PRIMARY KEY, name VARCHAR(50), age INT);); -
修改对象:修改现有对象的结构(如
ALTER TABLE employees ADD email VARCHAR(100);); -
删除对象:删除数据库、表、视图等(如
DROP TABLE employees;); -
清空表:清空表中的所有数据但保留表结构(如
TRUNCATE TABLE employees;)。
特点:
-
结构管理性:专注于数据库对象的创建、修改和删除,是数据库设计的核心工具;
-
不可回滚性 :DDL操作默认自动提交 (无事务支持),无法回滚(如
DROP TABLE删除表后无法恢复); -
影响元数据:DDL操作会改变数据库的元数据(如表结构、索引信息),需谨慎使用。
四、DCL(数据控制语言):数据库安全管理的核心工具
DCL(Data Control Language,数据控制语言) 是SQL中用于控制数据库访问权限 的语言,其核心目标是管理用户对数据库对象的访问权限,确保数据库的安全性。
核心语句 :GRANT(授权)、REVOKE(撤销授权)。
主要功能:
-
授权:授予用户或角色对数据库对象的权限(如
GRANT SELECT, INSERT ON employees TO 'user1'@'localhost';,授予user1查询和插入employees表的权限); -
撤销授权:撤销用户或角色的权限(如
REVOKE DELETE ON employees FROM 'user1'@'localhost';,撤销user1删除employees表的权限)。
特点:
-
安全管理性:专注于数据库的权限管理,是数据库管理员(DBA)的核心职责之一;
-
用户/角色管理 :可针对用户或角色(如
admin、developer)分配权限,实现细粒度的访问控制; -
权限类型 :支持多种权限(如
SELECT、INSERT、UPDATE、DELETE、ALL PRIVILEGES等),覆盖数据库操作的各个方面。
五、四大语言的核心区别
| 维度 | DQL(数据查询语言) | DML(数据操作语言) | DDL(数据定义语言) | DCL(数据控制语言) |
|---|---|---|---|---|
| 核心功能 | 从数据库中检索数据 | 修改数据库中的数据(增、删、改) | 定义或修改数据库结构(表、视图等) | 控制数据库访问权限(授权、撤销) |
| 核心语句 | SELECT |
INSERT、UPDATE、DELETE |
CREATE、ALTER、DROP、TRUNCATE |
GRANT、REVOKE |
| 数据修改性 | 只读,不改变数据库中的数据 | 直接修改数据库中的数据 | 不直接操作数据,仅修改结构 | 不直接操作数据或结构,仅管理权限 |
| 事务支持 | 无需事务(只读操作) | 需要事务(确保操作的原子性) | 无需事务(自动提交) | 部分支持(如COMMIT/ROLLBACK用于权限操作) |
| 影响对象 | 影响查询结果集(临时虚拟表) | 影响表中的数据内容 | 影响数据库结构(表、视图等) | 影响用户或角色的权限 |