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 用于权限操作) |
影响对象 | 影响查询结果集(临时虚拟表) | 影响表中的数据内容 | 影响数据库结构(表、视图等) | 影响用户或角色的权限 |