上一篇
MySQL如何用命令创建表
- 电脑教程
- 2025-06-07
- 2474
使用CREATE TABLE命令定义表名,指定字段名和数据类型,如CREATE TABLE users (id INT, name VARCHAR(30));
### 一、创建MySQL表的核心命令语法 在MySQL中创建表的核心命令是`CREATE TABLE`,基础语法如下: ```sql CREATE TABLE [IF NOT EXISTS] 表名 ( 列名1 数据类型 [约束条件], 列名2 数据类型 [约束条件], ... [表级约束] ) [ENGINE=存储引擎] [DEFAULT CHARSET=字符集];
▶ 关键参数说明:
- IF NOT EXISTS:防止表名重复时报错(推荐使用)
- ENGINE:指定存储引擎(如InnoDB、MyISAM),InnoDB是MySQL 8.0默认引擎
- DEFAULT CHARSET:设置字符集(推荐
utf8mb4
支持表情符号)
MySQL常用数据类型详解
类型分类 | 常用类型 | 说明 | 示例 |
---|---|---|---|
整数 | INT |
大整数(占4字节) | age INT |
TINYINT |
小整数(-128~127) | status TINYINT(1) |
|
小数 | DECIMAL(M,D) |
精确小数(M总位数,D小数位) | price DECIMAL(10,2) |
FLOAT |
单精度浮点数 | ratio FLOAT |
|
字符串 | VARCHAR(N) |
可变长度字符串(N≤65535) | name VARCHAR(50) |
CHAR(N) |
定长字符串(空格填充) | code CHAR(10) |
|
日期时间 | DATE |
日期(YYYY-MM-DD) | birthday DATE |
DATETIME |
日期时间(YYYY-MM-DD HH:MM:SS) | create_time DATETIME |
必学的6大字段约束
- 主键约束:唯一标识记录
id INT PRIMARY KEY AUTO_INCREMENT
- 唯一约束:禁止重复值
email VARCHAR(100) UNIQUE
- 非空约束:禁止空值
username VARCHAR(50) NOT NULL
- 默认值:未填写时的默认数据
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
- 外键约束(关联表数据):
user_id INT, FOREIGN KEY (user_id) REFERENCES users(id)
- 自动增长:常用于主键
id INT AUTO_INCREMENT
实战创建用户表示例
-- 创建带完整约束的用户表 CREATE TABLE IF NOT EXISTS users ( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(50) NOT NULL UNIQUE, password CHAR(60) NOT NULL COMMENT '存储加密后的密码', email VARCHAR(100) NOT NULL UNIQUE, age TINYINT UNSIGNED DEFAULT 18, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
▶ 代码解析:
AUTO_INCREMENT
:id自动生成(1,2,3…)UNIQUE
:用户名和邮箱不可重复DEFAULT 18
:年龄未填写时默认为18ON UPDATE CURRENT_TIMESTAMP
:修改时自动更新时间戳COMMENT
:字段注释(提升可维护性)
4个创建表后的验证操作
-
查看表结构:
DESC users;
(图片仅示意)
-
查看建表语句:
SHOW CREATE TABLE users;
-
插入测试数据:
INSERT INTO users (username, password, email) VALUES ('john_doe', 'encrypted_pass', 'john@example.com');
-
查询数据验证:
SELECT * FROM users;
避坑指南:创建表必看注意事项
-
命名规范:
- 表名/字段名使用蛇形命名法(
user_role
) - 禁止使用MySQL保留字(如
order
需转义为`order`)
- 表名/字段名使用蛇形命名法(
-
性能优化:
- 主键尽量使用短数据类型(如
BIGINT
优于VARCHAR
) - 大文本字段用
TEXT
类型,与主表分离存储
- 主键尽量使用短数据类型(如
-
字符集统一:
-- 全局设置(推荐在my.cnf配置) DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
-
存储引擎选择:
- 需要事务支持 → InnoDB(默认)
- 只读分析场景 → MyISAM(已逐步淘汰)
️ 关键提示:生产环境修改表结构必须停机维护,建议使用
pt-online-schema-change
工具在线DDL。
知识扩展:表结构修改命令
-- 添加字段 ALTER TABLE users ADD COLUMN phone VARCHAR(15) AFTER email; -- 修改字段类型 ALTER TABLE users MODIFY age SMALLINT; -- 删除字段(谨慎操作!) ALTER TABLE users DROP COLUMN phone;
通过命令行掌握建表是DBA和开发者的必备技能,建议结合mysqldump
定期备份表结构,更多高级功能可参考:
- MySQL 8.0官方文档
- InnoDB存储引擎详解
引用说明:本文操作基于MySQL 8.0.28验证,语法兼容5.7+版本,部分示例参考MySQL官方手册及O’Reilly《高性能MySQL》。