SQL CREATE TABLE 建表语句完全指南
全面掌握SQL建表语法:数据类型选择、约束定义、主键外键、默认值、自增列、索引创建 · 难度:入门 · +20XP
CREATE TABLE 概述
CREATE TABLE 是DDL中最核心的语句,用于定义数据库表的结构——列名、数据类型和约束条件。
基本语法
CREATE TABLE table_name (
column1 datatype constraint,
column2 datatype constraint,
...
table_constraints
);
完整建表示例
CREATE TABLE students (
id INT AUTO_INCREMENT PRIMARY KEY, -- 主键,自增
name VARCHAR(50) NOT NULL, -- 姓名,非空
age INT DEFAULT 18, -- 年龄,默认18
gender ENUM('男','女'), -- 性别枚举
email VARCHAR(100) UNIQUE, -- 邮箱唯一
class_id INT, -- 班级ID
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (class_id) REFERENCES classes(id) -- 外键
);
常用数据类型
| 类型 | 说明 | 示例 | ||
|---|---|---|---|---|
INT / BIGINT | 整数 | age INT | ||
DECIMAL(M,N) | 精确小数 | price DECIMAL(10,2) | ||
VARCHAR(N) | 变长字符串 | name VARCHAR(100) | ||
TEXT | 长文本 | content TEXT | ||
DATE | 日期 | birth_date DATE | ||
TIMESTAMP | 时间戳 | created_at TIMESTAMP | ||
BOOLEAN | 布尔值 | is_active BOOLEAN | ||
ENUM | 枚举 | status ENUM('a','b') |
约束详解
| 约束 | 关键字 | 作用 | ||
|---|---|---|---|---|
| 主键 | PRIMARY KEY | 唯一标识每行,自动NOT NULL+UNIQUE | ||
| 非空 | NOT NULL | 该列不能为空 | ||
| 唯一 | UNIQUE | 该列值不能重复 | ||
| 默认值 | DEFAULT | 没提供值时使用的默认值 | ||
| 外键 | FOREIGN KEY ... REFERENCES | 引用另一张表的主键 | ||
| 检查 | CHECK | 自定义约束条件 |
CREATE TABLE orders (
id INT PRIMARY KEY,
user_id INT NOT NULL,
total DECIMAL(10,2) CHECK (total > 0), -- 金额必须>0
status VARCHAR(20) DEFAULT 'pending',
FOREIGN KEY (user_id) REFERENCES users(id)
ON DELETE CASCADE -- 用户删除时级联删除订单
);
常用DDL操作
-- 修改表结构
ALTER TABLE students ADD COLUMN phone VARCHAR(20);
ALTER TABLE students MODIFY COLUMN age SMALLINT;
ALTER TABLE students DROP COLUMN phone;
-- 删除表
DROP TABLE IF EXISTS temp_data;
-- 创建索引
CREATE INDEX idx_name ON students(name);
CREATE UNIQUE INDEX idx_email ON students(email);
💡 练习任务
创建一套课程管理系统的表:courses(课程)、enrollments(选课记录),包含适当的数据类型、主键、外键和约束。