SQL中的四大核心语言:DQL、DML、DDL、DCL

379 阅读5分钟

一、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 TRANSACTIONCOMMITROLLBACK),以确保数据的一致性(如批量插入数据时,若中途出错可回滚);

  • 影响行数​: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)的核心职责之一;

  • 用户/角色管理​:可针对用户或角色(如admindeveloper)分配权限,实现细粒度的访问控制;

  • 权限类型​:支持多种权限(如SELECTINSERTUPDATEDELETEALL PRIVILEGES等),覆盖数据库操作的各个方面。

五、四大语言的核心区别

维度DQL(数据查询语言)​DML(数据操作语言)​DDL(数据定义语言)​DCL(数据控制语言)​
核心功能从数据库中检索数据修改数据库中的数据(增、删、改)定义或修改数据库结构(表、视图等)控制数据库访问权限(授权、撤销)
核心语句SELECTINSERTUPDATEDELETECREATEALTERDROPTRUNCATEGRANTREVOKE
数据修改性只读,不改变数据库中的数据直接修改数据库中的数据不直接操作数据,仅修改结构不直接操作数据或结构,仅管理权限
事务支持无需事务(只读操作)需要事务(确保操作的原子性)无需事务(自动提交)部分支持(如COMMIT/ROLLBACK用于权限操作)
影响对象影响查询结果集(临时虚拟表)影响表中的数据内容影响数据库结构(表、视图等)影响用户或角色的权限