数据库的DDL、DML、DQL、DCL语言详解与应用场景
字数 1054 2025-11-07 22:15:48
数据库的DDL、DML、DQL、DCL语言详解与应用场景
一、概念描述
数据库操作语言是SQL的核心组成部分,根据功能分为四类:
- DDL(数据定义语言):用于定义或修改数据库结构(如表、索引),包括
CREATE、ALTER、DROP等语句。 - DML(数据操作语言):用于操作表中的数据(增删改),如
INSERT、UPDATE、DELETE。 - DQL(数据查询语言):专指
SELECT语句,用于查询数据。 - DCL(数据控制语言):控制数据访问权限,如
GRANT授权、REVOKE撤销权限。
二、DDL详解与示例
-
CREATE:创建数据库对象。
CREATE TABLE employees ( id INT PRIMARY KEY, name VARCHAR(50) NOT NULL, salary DECIMAL(10,2) );- 关键点:定义列的数据类型、约束(如
PRIMARY KEY、NOT NULL)。
- 关键点:定义列的数据类型、约束(如
-
ALTER:修改表结构。
ALTER TABLE employees ADD COLUMN department VARCHAR(20); ALTER TABLE employees MODIFY COLUMN salary INT; -- 修改数据类型- 注意:修改数据类型可能导致数据丢失,需谨慎。
-
DROP:删除对象。
DROP TABLE employees; -- 连数据带结构彻底删除- 与
TRUNCATE(DML)区别:DROP删除结构,TRUNCATE只清空数据。
- 与
三、DML详解与示例
-
INSERT:插入数据。
INSERT INTO employees (id, name, salary) VALUES (1, 'Alice', 50000);- 批量插入效率更高:
INSERT INTO employees VALUES (2, 'Bob', 60000), (3, 'Charlie', 70000);
- 批量插入效率更高:
-
UPDATE:修改数据。
UPDATE employees SET salary = 55000 WHERE id = 1;- 必须用
WHERE限定范围,否则全表更新。
- 必须用
-
DELETE:删除数据。
DELETE FROM employees WHERE id = 1;- 与
TRUNCATE对比:DELETE逐行删除可回滚,TRUNCATE快速清空不可回滚。
- 与
四、DQL核心语法与优化
-
基础查询:
SELECT name, salary FROM employees WHERE salary > 50000 ORDER BY salary DESC;- 执行顺序:
FROM→WHERE→SELECT→ORDER BY。
- 执行顺序:
-
多表关联:
SELECT e.name, d.department_name FROM employees e JOIN departments d ON e.department_id = d.id;- 使用别名简化代码,注意关联条件避免笛卡尔积。
-
聚合函数与分组:
SELECT department, AVG(salary) AS avg_salary FROM employees GROUP BY department HAVING AVG(salary) > 60000; -- HAVING过滤分组后的结果
五、DCL权限管理
-
GRANT:授予权限。
GRANT SELECT, INSERT ON employees TO user1;- 可细化到列级别:
GRANT UPDATE (name) ON employees TO user1;
- 可细化到列级别:
-
REVOKE:撤销权限。
REVOKE INSERT ON employees FROM user1;
六、应用场景总结
- DDL:适用于数据库设计阶段(如建表)、结构变更(版本升级)。
- DML:业务逻辑中频繁使用(如用户注册、订单更新)。
- DQL:数据分析、报表生成的核心工具。
- DCL:多用户系统权限管理(如区分管理员与普通用户)。
七、注意事项
- DDL通常自动提交事务,执行前需备份数据。
- DML操作需结合事务(
BEGIN TRANSACTION、COMMIT)保证一致性。 - DQL复杂查询应利用索引避免全表扫描。