SQL 创建表
SQL 创建表 CREATE TABLE · 难度:进阶 · +15XP
SQL 创建表 CREATE TABLE
CREATE TABLE是DDL(数据定义语言)中最核心的语句,用于创建新表。定义表时需要指定列名、数据类型和约束条件,设计好表结构是数据库设计的基石。
基本语法
CREATE TABLE 表名 (
列名1 数据类型 约束,
列名2 数据类型 约束,
...
表级约束
);
常用数据类型
| 类型 | 说明 | 示例 |
|---|---|---|
INT | 整数 | age INT |
DECIMAL(m,n) | 定点小数 | price DECIMAL(10,2) |
VARCHAR(n) | 变长字符串 | name VARCHAR(50) |
CHAR(n) | 定长字符串 | code CHAR(6) |
TEXT | 长文本 | content TEXT |
DATE | 日期(年-月-日) | birthday DATE |
DATETIME | 日期时间 | created_at DATETIME |
BOOLEAN | 布尔值 | is_active BOOLEAN |
约束条件
| 约束 | 说明 |
|---|---|
NOT NULL | 不能为空 |
UNIQUE | 值必须唯一 |
PRIMARY KEY | 主键(非空+唯一) |
FOREIGN KEY | 外键(关联另一张表) |
DEFAULT 值 | 默认值 |
AUTO_INCREMENT | 自动递增(MySQL) |
CHECK (条件) | 检查约束(MySQL 8.0+) |
完整建表示例
CREATE TABLE students (
id INT AUTO_INCREMENT PRIMARY KEY COMMENT '学号',
name VARCHAR(20) NOT NULL COMMENT '姓名',
age INT CHECK (age BETWEEN 0 AND 150) COMMENT '年龄',
city VARCHAR(50) DEFAULT '南宁' COMMENT '城市',
score DECIMAL(5,1) DEFAULT 0 COMMENT '成绩',
email VARCHAR(100) UNIQUE COMMENT '邮箱',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
INDEX idx_city (city),
INDEX idx_score (score)
) COMMENT='学生信息表';
实战练习
- 创建products表,包含id、名称、价格、库存、分类字段
- 创建orders表,包含订单号、客户名、金额、下单时间
- 给表格添加PRIMARY KEY约束和适当的默认值
- 使用AUTO_INCREMENT创建自增主键