# P05 05. 基础-SQL-通用语法及分类

> 本页是学习笔记，不等同于视频逐字稿。原声字幕未取得（匿名接口字幕轨为空且需登录，未使用任何账号），也没有逐句讲解记录；讲义只按节与页码对应，切点未逐句确证。

> 以同版讲义的公开镜像核对章节与页码（镜像非官方出品）；非逐字稿，示例为原创补充。

## P05 05. 基础-SQL-通用语法及分类

- 原视频：https://www.bilibili.com/video/BV1Kr4y1i7ru/?p=5（p=5），时长 5:51
- 讲义：2.1 通用语法 / 2.2 SQL 分类 p15（公开镜像；按主题对应，切点 notexact）

- 本集练习数据：practice/p05.sql（先执行，再对照小例）

### 一句话理解

这一集先立规矩：SQL 怎么写才不报错；再把 SQL 按用途分成 DDL、DML、DQL、DCL 四类，后面每集标题都带这个前缀。

### 步骤

1. 通用语法四条：语句可单行或多行书写，用分号结尾；用空格和换行让语句好读；MySQL 不区分大小写，但关键字习惯写大写；注释用 `-- 空格` 或 `#`（MySQL 特有）做单行，`/* */` 做多行。
2. 分类表按“对什么动手”切开：DDL 定义数据库对象（库、表、字段），DML 增删改数据，DQL 查询记录，DCL 建用户、管权限。
3. 记住这个分法，看标题就知道动的是结构还是数据：DDL 建表、DML 插改删、DQL 查询。DCL 在基础篇出现得少，但它管的是“谁能连、能干什么”，不是写业务 SQL 的那部分。
4. 这一集不要求背全表，只要求写语句时条件反射：先想清楚我是在改结构、改数据，还是查数据。

### SQL 示例

```
-- 单行注释：查员工姓名
SELECT name   # 行尾注释也合法
FROM employee;
```

说明：这条把注释、大小写和多行写法都用上了：`--` 后面必须有一个空格，`#` 是 MySQL 特有的行尾注释。结果只有一列 `name`，4 行（小林、小周、小陈、小李）。末尾分号不能省，否则客户端会停在 `->` 等你继续输入。

### 易错点

- `--` 后不加空格（`--注释`）在 MySQL 里不是注释，会被当语法错误。
- 以为“不区分大小写”等于表名也随便写。Linux 上表名大小写常与系统配置有关，统一小写最安全。
- 把 `#` 当标准 SQL 注释。它只在 MySQL 这类数据库可用，换库就报错。

### 30 秒速记

分号结尾；可单行可多行；关键字建议大写；`-- `/`#` 单行、`/* */` 多行；DDL 结构、DML 数据、DQL 查询、DCL 权限。

### 自测

1. DDL 和 DML 的分界线是什么？
   - 答：DDL 动“壳”：建库、建表、改字段、删表；DML 动“里面的行”：插入、修改、删除数据。分界线是操作对象，不是语句长短。
2. 为什么注释写法也会导致报错？
   - 答：注释是给解析器看的语法。`--` 在 MySQL 中要求后面跟空格，否则会被当成减号表达式；`#` 只是 MySQL 方言，其他数据库不一定认。

### 材料与来源

- [平台视频页] B站原视频 P05《05. 基础-SQL-通用语法及分类》 https://www.bilibili.com/video/BV1Kr4y1i7ru/?p=5
- [平台视频页] 本集采样画面 p05_t20.jpg（约 70s） https://www.bilibili.com/video/BV1Kr4y1i7ru/?p=5
- [平台视频页] 本集采样画面 p05_t50.jpg（约 175s） https://www.bilibili.com/video/BV1Kr4y1i7ru/?p=5

证据说明：以同版讲义公开镜像核对：讲义 2.1 通用语法 / 2.2 SQL 分类（p15）。原声字幕未取得（匿名接口字幕轨为空且需登录），讲师逐句讲解未核；本页示例、表与数字为站内原创，不是课堂原表。
