建表

数据类型关键字

关键字 含义 使用建议 示例
INT 整数 用于 ID、数量、年龄。 id INT
VARCHAR(n) 可变长度字符串 最常用。用于姓名、地址、账号。n 是最大长度。 name VARCHAR(50)
CHAR(n) 固定长度字符串 用于长度固定的数据,如身份证号、性别(M/F)、哈希值。 gender CHAR(1)
DATETIME 日期和时间 格式 YYYY-MM-DD HH:MM:SS。用于起飞时间、下单时间。 fly_time DATETIME
DATE 仅日期 格式 YYYY-MM-DD。用于生日。 birthday DATE
DECIMAL(M, D) 精确小数 涉及钱一定要用它M是总位数,D是小数位。 price DECIMAL(10, 2)

(代表最多10位数字,其中包含2位小数)
TEXT 长文本 用于存储文章内容、很长的备注。 content TEXT

列属性/约束关键字

这些关键字跟在数据类型后面,用来限制数据的行为。

关键字 含义 作用 示例
PRIMARY KEY 主键 最重要的关键字。整张表的唯一身份证,不能重复,不能为空。 id INT PRIMARY KEY
AUTO_INCREMENT 自增 只能配合整数主键使用。让数据库自动填 1, 2, 3… id INT PRIMARY KEY AUTO_INCREMENT
NOT NULL 非空 必填项。如果插入数据时没填这列,会报错。NULL与之相反。 username VARCHAR(20) NOT NULL
UNIQUE 唯一 这列的值不能重复(但可以为空)。常用于手机号、邮箱。 phone VARCHAR(11) UNIQUE
DEFAULT 默认值 如果不填,就用这个预设值。 status INT DEFAULT 0
COMMENT 注释 给代码写备注,方便以后维护。 COMMENT '航班号'

表级设置

关键字 含义 作用
ENGINE=InnoDB 存储引擎 MySQL 的默认引擎,支持事务(Transaction),做项目必选
CHARSET=utf8mb4 字符集 强烈建议加上。支持中文,甚至支持 Emoji 表情。

航班管理表示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
CREATE TABLE flights (
-- 1. 主键
flight_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '内部流水号ID',

-- 2. 必填 (NOT NULL)
flight_code VARCHAR(10) NOT NULL COMMENT '航班号,如 CA1001',
aircraft_model VARCHAR(20) NOT NULL COMMENT '机型',

-- 3. 时间与地点 (DATETIME)
origin VARCHAR(50) NOT NULL COMMENT '出发地',
destination VARCHAR(50) NOT NULL COMMENT '目的地',
departure_time DATETIME NOT NULL COMMENT '计划起飞时间',

-- 4. 金额与状态 (DECIMAL + DEFAULT)
price DECIMAL(10, 2) NOT NULL DEFAULT 0.00 COMMENT '票价',
status VARCHAR(10) DEFAULT 'Scheduled' COMMENT '状态:Scheduled, Delayed, Cancelled',

-- 5. 选填信息 (没有 NOT NULL)
gate_number VARCHAR(5) COMMENT '登机口,可能还没分配所以允许为空',

-- 6. 约束加强 (UNIQUE)
-- 确保同一天不会有重复的航班号 (联合唯一索引,选学)
UNIQUE (flight_code, departure_time)

) ENGINE=InnoDB CHARSET=utf8mb4 COMMENT='航班信息主表';

这里的几个设计细节:

  1. utf8mb4:防止你存入中文地名时出现乱码。

  2. DECIMAL(10, 2):票价用了 DECIMAL 而不是 FLOAT,保证金额计算精确(浮点数在计算机里容易出现 99.999999 这种情况)。

  3. COMMENT:每一行都加了注释,这在多人协作(或者你过两周再看代码)时非常有用。

添加数据

可以一次添加一条数据,也可以一次性添加多条数据。

基本语法:

1
2
INSERT INTO 表名 (列名1, 列名2, ...)
VALUES (值1, 值2, ...);

添加一条数据

1
2
INSERT INTO students (id, name, score)
VALUES (102, '李四', 88);

情况 B:添加多条数据 (批量插入)

只需在 VALUES 后用逗号分隔多组括号即可。

1
2
3
4
INSERT INTO students (id, name, score)
VALUES
(103, '王五', 90),
(104, '赵六', 76);

修改数据

要修改某一条特定数据,需要通过 WHERE 子句来指定条件,否则整张表的数据都会被修改。

基本语法:

1
2
3
UPDATE 表名
SET 列名1 = 新值1, 列名2 = 新值2, ...
WHERE 筛选条件;

示例场景: 将名字为 “张三” (id 为 101) 的同学的分数修改为 95 分。

1
2
3
UPDATE students
SET score = 95
WHERE id = 101;

修改列

1
2
3
4
5
-- 修改列定义,将默认值改为 '未支付'
ALTER TABLE orders MODIFY COLUMN status VARCHAR(20) DEFAULT '未支付' COMMENT '订单状态';

-- 如果你想把之前所有的旧数据也一起刷成 '未支付' (可选)
-- UPDATE orders SET status = '未支付' WHERE status = '已支付';

外键