3. 建库建表与数据类型
这是什么:表(table) = 数据库里放同类数据的一张清单,由行(一条记录)和列(一个属性)组成;数据类型规定每列能装什么。
为什么用:上一步有了 learn 库,可库里还空着。没有表,数据无处安放;类型选错,金额会冒出小数误差,中文会变乱码。
如何用:先用 CREATE TABLE 建一张用户表,本章把 INT、VARCHAR、DATETIME 这些常见类型挑一遍。
3.1 常用数据类型
选类型的原则:能小就小、数字用数字型、文本选对长度。
| 类型 | 用途 | 示例 |
|---|---|---|
INT |
整数 | 编号、数量 |
DECIMAL(10,2) |
精确小数 | 金额(float 有误差) |
VARCHAR(50) |
变长字符串 | 用户名、标题 |
TEXT |
长文本 | 文章正文 |
DATE / DATETIME |
日期(时间) | 注册时间 |
BOOLEAN |
布尔(内部是 tinyint) | 是否禁用 |
3.2 建一张用户表
CREATE TABLE `user` (
`id` INT NOT NULL AUTO_INCREMENT, -- 自增主键
`username` VARCHAR(50) NOT NULL, -- 必填
`email` VARCHAR(100) NULL, -- 可空
`age` INT DEFAULT 0,
`created_at` DATETIME DEFAULT CURRENT_TIMESTAMP, -- 默认插入时间
PRIMARY KEY (`id`) -- 主键
);
| 行 | 作用 |
|---|---|
AUTO_INCREMENT |
id 自动 +1,插入时不用手工填 |
NOT NULL |
不许为空 |
DEFAULT 0 |
没给值时的默认值 |
PRIMARY KEY (id) |
主键:唯一标识一行 |
你会看到:
Query OK, 0 rows affected
验证一下:
SHOW TABLES;
DESC `user`; -- 查看表结构(describe)
3.3 主键:一行的身份证
- 唯一:两行不能有相同 id
- 不为空
- 一般用自增
INT,插入时不用管它
一张表必须有主键),这是建表铁律。
3.4 修改表(够用就好)
-- 加一列
ALTER TABLE `user` ADD COLUMN `nickname` VARCHAR(50) AFTER `username`;
-- 改列类型
ALTER TABLE `user` MODIFY COLUMN `email` VARCHAR(150);
-- 删一列(危险)
ALTER TABLE `user` DROP COLUMN `age`;
教程阶段随便试;真实项目要改表前通常用数据库迁移工具管理版本(如 Flask-Migrate),.jsx以后会见到。
3.5 动手改
- 建一张
article表:id、titleVARCHAR(120) NOT NULL、contentTEXT、viewsINT DEFAULT 0、created_atDATETIME DESC检查结构是否如愿- 给 article 加一列
author_name,再删掉
3.6 小结
- 数字用 INT / DECIMAL,短文本 VARCHAR 定长度,长文交给 TEXT
- 主键 unique+not null,配合自增最省心
- 建、看、改表:
CREATE / DESC / ALTER