在SQL中,根据功能和操作对象的不同,通常将语文分为四大类:DQL(数据查询语言)、DML(数据操作语言)、DDL(数据定义语言)、DCL(数据控制语言)
一、DQL(Data Query Language,数据查询语言)
-
定义:用于从数据库中检索数据,不修改数据或数据库结构
-
核心命令:
-
SELECT:查询数据
-
-
用途:
-
从表中提取特定条件的过滤
-
支持复杂的条件过滤、排序、分组、聚合等操作
-
-
示例:
SELECT name, age FROM users WHERE age > 18 ORDER BY name;
二、DML(Data Manipulation Language,数据操作语言)
-
定义:用于对数据库中的数据进行增、删、改操作,直接影响数据内容
-
核心命令:
-
INSERT:插入新数据
-
UPDATE:更新现有数据
-
DELETE:删除数据
-
-
用途:
-
维护数据库中的数据记录
-
操作单位通常是表中的行(记录)
-
INSERT INTO users (name, age) VALUES ('Alice', 25); UPDATE users SET age = 26 WHERE name = 'Alice'; DELETE FROM users WHERE age < 18;
三、DDL(Data Definition Language,数据定义语言)
-
定义:用于定义或修改数据库结构(如表、索引、视图等),直接影响数据库对象的逻辑结构
-
核心命令:
-
CREATE:创建数据库对象(如表、索引)
-
ALTER:修改现有对象结构
-
DROP:删除数据库对象
-
TRUNCATE:快速清空表数据(删除表并重建结构)
-
-
用途:
-
管理数据库的物理和逻辑结构
-
操作单位是数据库对象(如表、列)
-
-
示例:
CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(50)); ALTER TABLE users ADD COLUMN email VARCHAR(100); DROP TABLE users;
四、DCL(Data Control Language,数据控制语言)
-
定义:用于控制数据库访问权限和事务管理,确保数据安全性和完整性。
-
核心命令:
-
GTANT:授予用户权限
-
REVOKE:撤销用户权限
-
COMMIT:提交事务(属于TCL)
-
ROLLBACK:回滚事务(属于TCL)
-
-
用途:
-
管理用户对数据库对象的访问权限
-
控制事务的提交或回滚(严格来说,事务控制属于TCL)
-
-
示例:
GRANT SELECT, INSERT ON users TO user1; REVOKE DELETE ON users FROM user1;
主要区别总结
类别 | 全称 | 功能 | 核心命令 | 操作对象 | 是否自动提交 |
---|---|---|---|---|---|
DQL | Data Query Language | 查询数据 | SELECT | 数据记录 | 不修改数据,无提交 |
DML | Data Manipulation Language | 操作数据(增删改) | INSERT , UPDATE , DELETE | 数据记录 | 需显式提交或回滚事务 |
DDL | Data Definition Language | 定义/修改数据库结构 | CREATE , ALTER , DROP , TRUNCATE | 数据库对象(表、索引) | 自动提交,无法回滚 |
DCL | Data Control Language | 控制访问权限和事务 | GRANT , REVOKE | 用户权限 | 自动提交 |
注意事项
-
事务控制语言(TCL):
-
COMMIT
和ROLLBACK
通常被归类为TCL,用于管理DML操作的事务。 -
DCL更侧重权限管理,而TCL侧重事务的提交与回滚。
-
-
DDL的自动提交特性:
-
DDL语句(如
CREATE
、ALTER
)执行后会自动提交,无法通过ROLLBACK
撤销。
-
-
TRUNCATE的特殊性:
-
虽然
TRUNCATE
清空表数据,但属于DDL(直接操作表结构),而非DML。
-