如何在mysql中创建数据表_mysql建表SQL基础讲解

来源:这里教程网 时间:2026-02-28 20:43:06 作者:

在 MySQL 中创建数据表,核心是使用

CREATE TABLE
语句,明确指定表名、字段名、数据类型、约束条件(如主键、非空、默认值等)。 语句写对了,表就建成了;细节没注意,后续可能出错或不满足业务需求。

基础语法结构要记牢

最简形式如下:

CREATE TABLE 表名 (
  字段名1 数据类型 [约束],
  字段名2 数据类型 [约束],
  ...
);

字段名不能用 MySQL 保留字(如
order
group
),若必须用,需用反引号包裹:
`order`
每条字段定义末尾加逗号,最后一行字段后不加逗号 常见数据类型:整型用
INT
,字符串用
VARCHAR(长度)
,时间用
DATETIME
TIMESTAMP

主键和常用约束别漏掉

一张表通常要有主键(唯一标识每一行),且多数字段应有合理约束:

PRIMARY KEY
:设为主键,自动
NOT NULL
+ 唯一,一般搭配
AUTO_INCREMENT
用于自增 ID
NOT NULL
:该字段不允许为空,登录用户名、创建时间这类字段建议加上
DEFAULT '值'
:插入时未提供该字段值,就用默认值,比如
status DEFAULT 'active'
COMMENT '说明'
:给字段加注释,方便团队理解,例如
age INT COMMENT '用户年龄,单位为岁'

建表时顺便考虑字符集和存储引擎

中文环境下,推荐显式指定:

CHARSET=utf8mb4
:支持完整 Unicode(包括 emoji),比旧版
utf8
更可靠
COLLATE=utf8mb4_unicode_ci
:排序与比较规则,大小写不敏感且支持多语言
ENGINE=InnoDB
:默认且推荐的存储引擎,支持事务、外键、行级锁

完整示例:

CREATE TABLE users (
  id INT PRIMARY KEY AUTO_INCREMENT,
  username VARCHAR(50) NOT NULL UNIQUE,
  email VARCHAR(100) NOT NULL,
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
  status ENUM('active', 'inactive') DEFAULT 'active' COMMENT '账户状态'
) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

建表前先检查,避免重复或报错

执行建表语句前,建议做两件事:

SHOW TABLES;
查看当前数据库已有哪些表,防止重名
DROP TABLE IF EXISTS 表名;
可安全重建(仅开发/测试环境用,生产慎用)
建完后用
DESCRIBE 表名;
SHOW CREATE TABLE 表名;
确认字段、约束、编码是否符合预期

相关推荐