SQLDDL CREATE建表语句

SQL语言大致分为四个部分:

DML/DDL/DQL/DCL

今天分享DDL中的CREATE,建表语句:

CREATE

  ‍

1. 基本建表语法

CREATE TABLE 表名 (
1 列类型 约束,
2 列类型 约束,
    ...
    约束条件
) [字符集设置];

1.1 示例:创建员工表(employees)

1.1.1 表结构说明

  • id: 员工唯一标识,主键且自增。
  • name: 姓名,非空。
  • department: 部门名称,非空。
  • salary: 工资,小数类型,非空,默认值0。
  • hire_date: 入职日期,非空。
  • email: 邮箱,唯一且非空。

  完整建表语句:

CREATE TABLE employees (
    id INT AUTO_INCREMENT PRIMARY KEY COMMENT '员工ID',
    name VARCHAR(50) NOT NULL COMMENT '员工姓名',
    department VARCHAR(50) NOT NULL COMMENT '所属部门',
    salary DECIMAL(10, 2) NOT NULL DEFAULT 0 COMMENT '工资(单位:元)',
    hire_date DATE NOT NULL COMMENT '入职日期',
    email VARCHAR(100) UNIQUE NOT NULL COMMENT '邮箱'
) COMMENT='员工信息表'
CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

  语句解释:

  1. AUTO_INCREMENT 自增
  2. PRIMARY KEY 主键
  3. COMMENT ‘员工ID’ 列备注
  4. NOT NULL 非空
  5. NOT NULL DEFAULT 0 非空默认0
  6. UNIQUE NOT NULL 非空唯一
  7. COMMENT=’员工信息表’ 表备注

1.2 各列数据类型与约束详细解释

1.2.1 整数类型(INT)

id INT AUTO_INCREMENT PRIMARY KEY
  • INT: 存储整数,范围 -2147483648​ 到 2147483647​。
  • AUTO_INCREMENT: 自动递增,插入新记录时自动生成唯一ID。
  • PRIMARY KEY: 主键约束,唯一标识每条记录。

1.2.2 字符串类型(VARCHAR)

name VARCHAR(50) NOT NULL
  • VARCHAR(50) : 可变长度字符串,最大长度50字符。
  • NOT NULL: 该列不能为空,必须提供值。
  • COMMENT: 为列添加注释,方便理解用途。

1.2.3 小数类型(DECIMAL)

salary DECIMAL(10, 2) NOT NULL DEFAULT 0
  • DECIMAL(10,2) : 总共10位数字,小数点后保留2位,适合存储货币。
  • DEFAULT 0: 未指定值时,默认填0。

1.2.4 日期类型(DATE)

hire_date DATE NOT NULL
  • DATE: 存储日期,格式 YYYY-MM-DD​。
  • NOT NULL: 必须填写入职日期。

1.2.5 唯一约束(UNIQUE)

email VARCHAR(100) UNIQUE NOT NULL
  • UNIQUE: 确保邮箱列的值在表中唯一,避免重复。

  ‍

  ‍

1.3 表级约束与附加设置

1.3.1 主键约束

  显式指定主键

id INT AUTO_INCREMENT,
PRIMARY KEY (id)  -- 表级主键约束

  ‍

1.3.2 字符集与排序规则

  • CHARACTER SET utf8mb4: 支持存储中文、emoji等特殊字符。
  • COLLATE utf8mb4_unicode_ci: 排序规则,区分大小写不敏感。

1.3.3 表注释

  • COMMENT=’员工信息表’ : 为整个表添加注释,便于管理。

1.4 验证表结构

-- 查看表结构(简要)
DESCRIBE employees;
-- 查看完整的建表语句
SHOW CREATE TABLE employees;

2. 总结

2.1 常见列数据类型

类型用途示例
INT整数age INT
VARCHAR(n)可变长度字符串name VARCHAR(50)
DECIMAL(m,d)精确小数(货币)price DECIMAL(10,2)
DATE日期birth_date DATE
DATETIME日期时间create_time DATETIME
TEXT大文本(如文章)description TEXT
BOOLEAN布尔值(MySQL用TINYINT实现)is_active TINYINT(1)

2.2 其他约束说明

  • NOT NULL: 必须提供值,不能为NULL​。
  • DEFAULT: 指定默认值,如DEFAULT 0​或DEFAULT CURRENT_TIMESTAMP​。
  • UNIQUE: 列值唯一,如邮箱、手机号。
  • FOREIGN KEY: 外键约束(关联其他表,需谨慎使用)。
  • CHECK: 自定义条件约束(MySQL 8.0+支持)。

2.3 注意事项

  1. 主键选择: 通常用INT AUTO_INCREMENT​作为主键,确保唯一性。
  2. 字符集: 推荐使用utf8mb4​支持更广泛字符。
  3. 索引: 主键会自动创建索引,提高查询效率。
  4. 约束顺序: 先定义列级约束(如NOT NULL​),再定义表级约束(如PRIMARY KEY​)。

  ‍

文末声明:

您必须遵守关于,您可以随意转发/引用,但要注明原作者Leon或设置本文跳转连接,并且您必须在文中包含或提醒浏览者遵守作者声明
欢迎关注公众号获取第二手文章!高效工作法

暂无评论

发送评论 编辑评论


				
上一篇