CREATE TABLE

创建数据表,定义列、数据类型、约束和索引

语法

CREATE TABLE [IF NOT EXISTS] table_name (
  column_name data_type [constraints],
  ...
  [INDEX | PRIMARY KEY | UNIQUE | FOREIGN KEY]
) [ENGINE=InnoDB] [DEFAULT CHARSET=utf8mb4];

参数

参数说明示例级别
PRIMARY KEY 主键约束 id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY 常用
NOT NULL 非空约束 username VARCHAR(50) NOT NULL 常用
DEFAULT 默认值 status TINYINT DEFAULT 1 常用
UNIQUE 唯一约束 email VARCHAR(100) UNIQUE 常用
FOREIGN KEY 外键约束 FOREIGN KEY (user_id) REFERENCES users(id) 进阶
COMMENT 列注释 status TINYINT COMMENT '0:禁用 1:启用' 常用

示例

创建用户表

CREATE TABLE IF NOT EXISTS users (
  id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  username VARCHAR(50) NOT NULL UNIQUE COMMENT '用户名',
  email VARCHAR(100) NOT NULL UNIQUE COMMENT '邮箱',
  password_hash VARCHAR(255) NOT NULL COMMENT '密码哈希',
  status TINYINT DEFAULT 1 COMMENT '0:禁用 1:启用',
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
  updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  INDEX idx_email (email),
  INDEX idx_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';
包含自增主键、唯一约束、默认值和索引

创建订单表(含外键)

CREATE TABLE orders (
  id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  order_no VARCHAR(32) NOT NULL UNIQUE COMMENT '订单号',
  user_id BIGINT UNSIGNED NOT NULL COMMENT '用户ID',
  total_amount DECIMAL(10,2) NOT NULL DEFAULT 0.00,
  status TINYINT DEFAULT 0 COMMENT '0:待付款 1:已付款 2:已发货 3:已完成',
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE RESTRICT,
  INDEX idx_user_id (user_id),
  INDEX idx_status_created (status, created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
外键关联用户表,ON DELETE RESTRICT 防止误删

查看表结构

DESC users;
SHOW CREATE TABLE users;
DESC 看列信息,SHOW CREATE TABLE 看完整建表语句

创建临时表

CREATE TEMPORARY TABLE tmp_active_users AS
  SELECT id, username FROM users WHERE status = 1;
临时表在连接断开后自动删除

常见错误

ERROR 1050 (42S01): Table 'users' already exists 使用 CREATE TABLE IF NOT EXISTS 避免重复创建
ERROR 1215 (HY000): Cannot add foreign key constraint 检查外键列和引用列的数据类型是否完全一致(包括 UNSIGNED)

技巧

相关命令