MySQL 创建数据表

用 CREATE TABLE 建表,定义列、类型、约束与引擎。

Beginner
Key Points建表时定好主键、NOT NULL、默认值与引擎,省去日后 ALTER 的麻烦。

基本语法

SQL
USE shop;

CREATE TABLE users (
  id        INT UNSIGNED NOT NULL AUTO_INCREMENT,
  username  VARCHAR(50)  NOT NULL,
  email     VARCHAR(120) NOT NULL,
  age       TINYINT UNSIGNED DEFAULT 0,
  created_at DATETIME    NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (id),
  UNIQUE KEY uk_email (email)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Output
Query OK, 0 rows affected (0.04 sec)

约束一览

约束作用
PRIMARY KEY唯一标识一行,非空且唯一
NOT NULL该列必须有值
UNIQUE值不重复(可多列组合)
DEFAULT未指定时填充默认值
AUTO_INCREMENT自增,常用于主键
FOREIGN KEY关联另一张表的主键

查看表结构

SQL
DESC users;
SHOW CREATE TABLE users;
Output
+------------+------------------+------+-----+-------------------+----------------+
| Field      | Type             | Null | Key | Default           | Extra          |
+------------+------------------+------+-----+-------------------+----------------+
| id         | int unsigned     | NO   | PRI | NULL              | auto_increment |
| username   | varchar(50)      | NO   |     | NULL              |                |
| email      | varchar(120)     | NO   | UNI | NULL              |                |
| age        | tinyint unsigned | YES  |     | 0                 |                |
| created_at | datetime         | NO   |     | CURRENT_TIMESTAMP |                |
+------------+------------------+------+-----+-------------------+----------------+
Always set ENGINE=InnoDB — it is the only engine with transactions and foreign keys. MySQL 8.0 defaults to it, but being explicit is clearer.

Friends & Partners