创建MySQL表是数据库开发的基础操作,通过CREATE TABLE语句可以实现表结构的自定义,满足不同业务场景的数据存储需求。

创建MySQL表的基础语法
MySQL中创建表的核心语法结构如下,其中表名和字段定义是必填项,其他选项可根据实际需求添加:
CREATE TABLE [IF NOT EXISTS] 表名 (
字段名1 数据类型 [约束条件],
字段名2 数据类型 [约束条件],
...
[表级约束条件]
) [表选项];
语法中的IF NOT EXISTS是可选参数,作用是当要创建的表不存在时才执行创建操作,避免出现表已存在的报错。表名需要符合MySQL的命名规范,不能使用MySQL的保留关键字,建议使用下划线分隔多个单词的命名方式。
常用字段数据类型选择
设计表结构时需要根据存储的数据特征选择合适的字段类型,以下是常用的数据类型分类:
- 数值类型:INT(整数)、BIGINT(长整数)、DECIMAL(精确小数)、FLOAT(单精度浮点数)
- 字符串类型:VARCHAR(可变长度字符串)、CHAR(固定长度字符串)、TEXT(长文本)
- 日期时间类型:DATE(日期)、DATETIME(日期时间)、TIMESTAMP(时间戳)
- 其他类型:BOOLEAN(布尔值)、JSON(JSON格式数据)
常见约束条件说明
约束条件用于保证表中数据的完整性和准确性,常用的约束如下:
| 约束名称 | 作用说明 |
|---|---|
| PRIMARY KEY | 主键约束,唯一标识表中的每一条记录,不能为空且不能重复 |
| NOT NULL | 非空约束,字段值不能为空 |
| UNIQUE | 唯一约束,字段值不能重复,但可以为空 |
| DEFAULT | 默认值约束,当插入数据未指定该字段值时,使用默认值 |
| FOREIGN KEY | 外键约束,关联其他表的主键,保证数据的参照完整性 |
创建表的完整示例
示例1:创建用户表
以下是一个存储用户基础信息的表创建示例,包含常用的字段和约束:
-- 创建用户表,存储用户id、用户名、密码、手机号、注册时间
CREATE TABLE IF NOT EXISTS user_info (
user_id INT UNSIGNED AUTO_INCREMENT COMMENT '用户id,主键自增',
username VARCHAR(50) NOT NULL COMMENT '用户名,非空',
password VARCHAR(100) NOT NULL COMMENT '用户密码,非空',
phone VARCHAR(20) UNIQUE COMMENT '手机号,唯一',
register_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '注册时间,默认当前时间',
PRIMARY KEY (user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户基础信息表';
示例2:创建订单表并添加外键约束
订单表需要关联用户表,通过外键保证订单所属用户一定存在于用户表中:
-- 创建订单表,关联用户表的user_id
CREATE TABLE IF NOT EXISTS order_info (
order_id INT UNSIGNED AUTO_INCREMENT COMMENT '订单id,主键自增',
user_id INT UNSIGNED NOT NULL COMMENT '用户id,关联用户表',
order_amount DECIMAL(10,2) NOT NULL COMMENT '订单金额',
order_status TINYINT NOT NULL DEFAULT 0 COMMENT '订单状态,0待支付,1已支付,2已取消',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (order_id),
-- 添加外键约束,关联user_info表的user_id
FOREIGN KEY (user_id) REFERENCES user_info (user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单信息表';
查看和验证创建的表
表创建完成后,可以通过以下语句验证表是否创建成功,以及查看表的结构:
-- 查看当前数据库中的所有表 SHOW TABLES; -- 查看user_info表的结构 DESC user_info; -- 查看创建user_info表的完整SQL语句 SHOW CREATE TABLE user_info;
常见创建错误及解决方法
- 错误1:表名使用MySQL保留关键字,比如使用
order作为表名,会直接报错。解决方法:修改表名,或者给表名加上反引号包裹,比如`order`。 - 错误2:创建外键时关联的字段类型和被关联字段类型不一致,比如用户表的user_id是INT UNSIGNED,订单表的user_id是INT,会创建失败。解决方法:保证两个关联字段的数据类型完全一致。
- 错误3:主键字段没有设置NOT NULL约束,虽然MySQL会自动给主键加非空,但显式声明更规范,避免后续维护误解。
注意:创建表前需要先选择对应的数据库,使用USE 数据库名;语句切换到目标数据库,否则会提示没有选中数据库的报错。
MySQL创建表CREATE_TABLE数据库操作修改时间:2026-06-29 21:51:47