# P07 07. 基础-SQL-DDL-表操作-创建&查询

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

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

## P07 07. 基础-SQL-DDL-表操作-创建&查询

- 原视频：https://www.bilibili.com/video/BV1Kr4y1i7ru/?p=7（p=7），时长 10:35
- 讲义：2.3.2.1 表操作-查询创建 p18–20（公开镜像；按主题对应，切点 notexact）

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

### 一句话理解

库里要有表才能存数据。这一集学 CREATE TABLE 建表，以及建完怎么查看表列表、表结构和建表语句。

### 步骤

1. 建表语法：`CREATE TABLE 表名(字段 类型 [COMMENT 注释], ...) [COMMENT 表注释];`。每个字段一行更好读，最后一个字段后面不加逗号——画面用红字专门提醒了这点。
2. 建之前先 `USE 库名;`，否则表会建到当前默认库；建完用 `SHOW TABLES;` 确认它到底在哪个库。
3. 查看结构用 `DESC 表名;`，给字段名、类型、是否可为 NULL、键、默认值；想看完整建表语句用 `SHOW CREATE TABLE 表名;`。
4. 画面里的示例表是 `id、name、age、gender` 四列，终端里建的是 `tb_user` 并带 COMMENT。注释不是给数据库看的，是给后来维护的人看的。

### SQL 示例

```
CREATE TEMPORARY TABLE emp_demo (
  id INT COMMENT '编号',
  name VARCHAR(10) COMMENT '姓名',
  age TINYINT UNSIGNED COMMENT '年龄'
) COMMENT '练习用员工表';
DESC emp_demo;
```

说明：`TEMPORARY` 建的是一张只属于当前连接的表，断开就消失，适合练习，不会污染练习库。`DESC` 的结果有 Field、Type、Null、Key、Default、Extra 六列、3 行：看 Field 列确认字段名，看 Type 列确认类型，看 Null 列确认是否允许空。

### 易错点

- 最后一个字段后多写逗号，直接语法错误。
- 不先 USE 就建表，表跑到别的库里，回头 `SHOW TABLES` 找不到。
- 把 COMMENT 当约束。它只是说明文字，不会阻止插入不合规的数据。

### 30 秒速记

先 USE 再建表；字段行末不加逗号；DESC 看结构；SHOW CREATE TABLE 看原始语句；COMMENT 只是注释。

### 自测

1. `DESC` 和 `SHOW CREATE TABLE` 都能看表，有什么区别？
   - 答：DESC 给的是结构化摘要：每个字段的类型、是否可空、键、默认值；SHOW CREATE TABLE 给的是完整建表 SQL，含字符集、注释、索引定义。想快速确认字段用前者，想复刻表用后者。
2. 为什么建表语句要求“最后一个字段后不加逗号”？
   - 答：字段定义之间用逗号分隔，逗号是分隔符而不是结束符。最后多一个逗号意味着解析器在等下一个字段，于是报语法错误。

### 材料与来源

- [平台视频页] B站原视频 P07《07. 基础-SQL-DDL-表操作-创建&查询》 https://www.bilibili.com/video/BV1Kr4y1i7ru/?p=7
- [平台视频页] 本集采样画面 p07_t50.jpg（约 317s） https://www.bilibili.com/video/BV1Kr4y1i7ru/?p=7
- [平台视频页] 本集采样画面 p07_t60.jpg（约 380s） https://www.bilibili.com/video/BV1Kr4y1i7ru/?p=7
- [官方文档] MySQL 8.0 Reference Manual: CREATE TABLE https://dev.mysql.com/doc/refman/8.0/en/create-table.html

证据说明：以同版讲义公开镜像核对：讲义 2.3.2.1 表操作-查询创建（p18–20）。原声字幕未取得（匿名接口字幕轨为空且需登录），讲师逐句讲解未核；本页示例、表与数字为站内原创，不是课堂原表。
