DML、DQL、DDL的区别
在数据库操作中,DML、DQL 和 DDL 是三种不同类型的 SQL 命令,它们的功能和用途有明显区别:
1. DML(Data Manipulation Language)
数据操纵语言,用于操作数据库中的数据(增删改)。
常见命令:
INSERT: 向表中插入数据。
INSERT INTO users (name, age) VALUES ('Alice', 30);
UPDATE: 修改表中的数据。
UPDATE users SET age = 31 WHERE name = 'Alice';
DELETE: 删除表中的数据。
DELETE FROM users WHERE age > 40;
特点:
- 操作对象:表中的数据记录。
- 事务影响:通常需要事务支持(如 MySQL 的 START TRANSACTION),可回滚。
- 返回结果:影响的行数(如 1 row affected)。
2. DQL(Data Query Language)
数据查询语言,用于从数据库中查询数据。
核心命令:
SELECT: 查询数据。
SELECT name, age FROM users WHERE age < 35;
特点:
- 操作对象:表中的数据记录。
- 事务影响:只读操作,不修改数据,无需事务。
- 返回结果:查询结果集(表格形式)。
- 扩展性:常与聚合函数(如 COUNT、SUM)、排序(ORDER BY)、分组(GROUP BY)等结合使用。
3. DDL(Data Definition Language)
数据定义语言,用于定义和管理数据库的结构(表、索引、视图等)。
常见命令:
CREATE:创建数据库对象(如表、索引)。
CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(50));
ALTER: 修改数据库对象结构。
ALTER TABLE users ADD COLUMN email VARCHAR(100);
DROP: 删除数据库对象。
DROP TABLE users;
TRUNCATE: 清空表数据(保留表结构)。
TRUNCATE TABLE users;
特点:
- 操作对象:数据库的结构(如表格、索引)。
- 事务影响:通常不可回滚(执行即生效)。
- 返回结果:成功 / 失败信息(如 Query OK)。
对比总结
类别 | 操作对象 | 主要命令 | 是否修改数据 | 是否可回滚 |
---|---|---|---|---|
DML | 表中的数据记录 | INSERT、UPDATE、DELETE | 是 | 是(需事务) |
DQL | 表中的数据记录(只读) | SELECT | 否 | 否 |
DDL | 数据库的结构(表、索引等) | CREATE、ALTER、DROP | 否 | 否 |
示例对比
1.DML(修改数据):
-- 修改用户年龄(DML)
UPDATE users SET age = 25 WHERE id = 1;
2.DQL(查询数据):
-- 查询年龄大于20的用户(DQL)
SELECT * FROM users WHERE age > 20;
3.DDL(修改结构):
-- 添加新字段(DDL)
ALTER TABLE users ADD COLUMN created_at TIMESTAMP;
其他相关概念
DCL(Data Control Language): 数据控制语言,用于管理权限(如 GRANT、REVOKE)。
TCL(Transaction Control Language): 事务控制语言,用于管理事务(如 COMMIT、ROLLBACK)。
本文来自博客园,作者:꧁༺星星的轨迹方程式༻꧂,转载请注明原文链接:https://www.cnblogs.com/SuSVIP/p/18887345