SQL 关系分类与语言分类详解
SQL(结构化查询语言)是操作关系型数据库的标准语言,其体系可从关系类型和语言功能两个维度进行分类。理解这些分类有助于清晰把握 SQL 的核心功能和应用场景。
SQL 关系分类(数据存储形式)
SQL 中涉及的 “关系” 本质上是二维表结构,根据存储方式和生命周期可分为三类:
1. 表(Table):物理存储的基础关系
定义:数据库中永久存储的二维表,包含行(记录)和列(字段),是数据的物理载体。
特性:
- 独立存在于数据库中,数据持久化存储在磁盘上。
- 支持
INSERT
、UPDATE
、DELETE
等操作修改数据。 - 结构由
CREATE TABLE
定义,可通过ALTER TABLE
修改。
示例:
1
2
3
4
5-- 创建表(物理存储)
CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL
);
2. 视图(View):逻辑定义的虚拟关系
定义:由
SELECT
查询定义的虚拟表,不实际存储数据,仅保存查询逻辑,使用时动态计算结果。特性:
- 数据依赖于基础表(视图的数据源),基础表数据变化会实时反映到视图。
- 可简化复杂查询(将多表关联逻辑封装为视图),并限制用户访问范围(如隐藏敏感字段)。
- 支持
SELECT
操作,部分视图可通过INSERT/UPDATE/DELETE
修改(需满足特定条件,如基于单表且包含主键)。
示例:
1
2
3-- 创建视图(逻辑定义,不存储数据)
CREATE VIEW active_users AS
SELECT id, name FROM users WHERE status = 1;
3. 临时表(Temporary Table):会话级的临时关系
定义:在查询执行或会话期间临时创建的表,用于存储中间结果,会话结束或事务提交后自动删除。
特性:
- 仅在当前会话可见,不同会话的临时表互不干扰。
- 适合处理复杂查询中的中间数据(如多步计算、大数据量过滤)。
- MySQL 中以
#
或TEMPORARY
关键字标识,如CREATE TEMPORARY TABLE temp_data ...
。
示例:
1
2
3-- 创建临时表(会话结束后自动删除)
CREATE TEMPORARY TABLE temp_orders AS
SELECT user_id, SUM(amount) FROM orders GROUP BY user_id;
SQL 语言分类(按功能)
根据操作目的,SQL 可分为五类,涵盖从数据查询到权限控制的全流程:
1. 数据查询语言(DQL:Data Query Language)
功能:从表或视图中检索数据。
核心语句:
SELECT
示例:
1
SELECT id, name FROM users WHERE age > 18; -- 查询18岁以上用户
2. 数据操作语言(DML:Data Manipulation Language)
功能:修改表中的数据(新增、更新、删除)。
核心语句:
INSERT
、UPDATE
、DELETE
特性:操作默认在事务中,可通过
ROLLBACK
回滚,需COMMIT
提交生效。示例:
1
2
3INSERT INTO users (id, name) VALUES (1, '张三'); -- 新增
UPDATE users SET age = 20 WHERE id = 1; -- 更新
DELETE FROM users WHERE status = 0; -- 删除
3. 数据定义语言(DDL:Data Definition Language)
功能:定义或修改数据库对象(表、视图、索引等)的结构。
核心语句:
CREATE
、ALTER
、DROP
、TRUNCATE
特性:操作自动提交(隐式事务),无法通过
ROLLBACK
回滚,需谨慎执行。示例:
1
2
3
4CREATE TABLE products (id INT); -- 创建表
ALTER TABLE products ADD price DECIMAL; -- 修改表结构
DROP VIEW active_users; -- 删除视图
TRUNCATE TABLE logs; -- 清空表数据(保留结构)
4. 数据控制语言(DCL:Data Control Language)
功能:管理数据库权限(授权、撤销权限)。
核心语句:
GRANT
、REVOKE
示例:
1
2GRANT SELECT ON users TO 'user1'@'localhost'; -- 授权查询权限
REVOKE UPDATE ON users FROM 'user1'@'localhost'; -- 撤销更新权限
5. 事务控制语言(TCL:Transaction Control Language)
功能:管理事务的提交、回滚和保存点,确保数据一致性。
核心语句:
COMMIT
、ROLLBACK
、SAVEPOINT
示例:
1
2
3
4BEGIN; -- 开始事务
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT; -- 提交事务(若出错则执行 ROLLBACK)
v1.3.10