SQL(Structured Query Language,结构化查询语言)根据功能可分为以下几大类别:
一、数据查询语言(DQL - Data Query Language)
用于从数据库中查询数据,是 SQL 中最常用的类别之一。
核心语句:
SELECT:用于从一个或多个表中检索数据记录
常用子句:
FROM:指定要查询的表
WHERE:过滤查询结果,只保留满足条件的记录
GROUP BY:将结果集按一个或多个列进行分组
HAVING:与 GROUP BY 配合使用,过滤分组后的结果
ORDER BY:对查询结果进行排序(升序 ASC 或降序 DESC)
LIMIT/OFFSET:限制返回的记录数量(不同数据库语法略有差异)
JOIN:用于多表关联查询(INNER JOIN、LEFT JOIN 等)
示例:
-- 查询年龄大于 18 的学生信息,并按年龄降序排列
SELECT name, age, gender
FROM students
WHERE age > 18
ORDER BY age DESC;
二、数据操纵语言(DML - Data Manipulation Language)
用于对数据库中的数据进行插入、更新和删除操作,主要针对表中的记录。
核心语句:
INSERT:向表中插入新记录
UPDATE:更新表中已存在的记录
DELETE:删除表中的记录
示例:
-- 插入新记录
INSERT INTO students (name, age) VALUES ('张三', 20);
-- 更新记录
UPDATE students SET age = 21 WHERE name = '张三';
-- 删除记录
DELETE FROM students WHERE age < 18;
三、数据定义语言(DDL - Data Definition Language)
用于定义和管理数据库对象(如数据库、表、索引、视图等)的结构。
常用语句:
CREATE:创建数据库、表、索引、视图等对象
ALTER:修改数据库或表的结构(如添加列、修改数据类型等)
DROP:删除数据库、表、索引、视图等对象
TRUNCATE:清空表中所有记录(保留表结构)
COMMENT:为数据库对象添加注释
示例:
-- 创建表
CREATE TABLE students (
id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL
);
-- 修改表(添加列)
ALTER TABLE students ADD COLUMN age INT;
-- 删除表
DROP TABLE students;
-- 清空表数据
TRUNCATE TABLE students;
四、数据控制语言(DCL - Data Control Language)
用于控制数据库的访问权限和安全级别,主要涉及用户权限管理。
常用语句:
GRANT:授予用户某种权限
REVOKE:撤销用户已有的权限
CREATE USER:创建数据库用户
DROP USER:删除数据库用户
示例:
-- 授予用户查询权限
GRANT SELECT ON database_name.table_name TO 'username'@'host';
-- 撤销用户的插入权限
REVOKE INSERT ON database_name.table_name FROM 'username'@'host';
五、事务控制语言(TCL - Transaction Control Language)
用于管理数据库事务,确保数据操作的原子性、一致性、隔离性和持久性(ACID 特性)。
常用语句:
COMMIT:提交事务,将事务中所有操作永久保存到数据库
ROLLBACK:回滚事务,取消事务中所有未提交的操作
SAVEPOINT:在事务中设置保存点,允许回滚到指定的保存点
SET TRANSACTION:设置事务的属性(如隔离级别)
示例:
-- 开始事务(某些数据库默认自动开启)
START TRANSACTION;
-- 执行数据操作
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
-- 提交事务
COMMIT;
-- 若发生错误,回滚事务
ROLLBACK;
总结
SQL 按功能分为五大类,各类别用途明确:
DQL:查询数据(SELECT 为主)
DML:操纵数据(INSERT、UPDATE、DELETE)
DDL:定义结构(CREATE、ALTER、DROP 等)
DCL:控制权限(GRANT、REVOKE 等)
TCL:管理事务(COMMIT、ROLLBACK 等)