🐸 青蛙编程网
首页 / 数据库 / MySQL / 3. 建库建表与数据类型

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 动手改

  1. 建一张 article 表:id、title VARCHAR(120) NOT NULL、content TEXT、views INT DEFAULT 0、created_at DATETIME
  2. DESC 检查结构是否如愿
  3. 给 article 加一列 author_name,再删掉

3.6 小结

  • 数字用 INT / DECIMAL,短文本 VARCHAR 定长度,长文交给 TEXT
  • 主键 unique+not null,配合自增最省心
  • 建、看、改表:CREATE / DESC / ALTER

下一章:增删改:INSERT / UPDATE / DELETE 🐸

📥 下载本章代码

ZIP 内含本章全部代码文件与说明,解压即用,与教程内容同步生成。