MySQL 表是数据存储的核心容器,掌握表的创建、查看、修改、删除是数据库开发必备技能。本文结合实战案例,带你系统学习 MySQL 表的所有基础操作,小白也能快速上手。
一、创建表(CREATE TABLE)
创建表是定义数据结构的第一步,需指定字段名、数据类型,还可配置字符集、校验规则、存储引擎。
1. 基础语法
sql
CREATE TABLE table_name (
field1 datatype,
field2 datatype,
field3 datatype
) CHARACTER SET 字符集 COLLATE 校验规则 ENGINE 存储引擎;
- field:列名(字段名)
- datatype:列的数据类型(int、varchar、date 等)
- CHARACTER SET:字符集,不指定则继承数据库字符集
- COLLATE:校验规则,不指定则继承数据库规则
- ENGINE:存储引擎,决定表的存储方式与特性
2. 实战案例
创建用户表 users,包含 id、姓名、密码、生日:
sql
CREATE TABLE users (
id INT,
name VARCHAR(20) COMMENT '用户名',
password CHAR(32) COMMENT '密码是32位的md5值',
birthday DATE COMMENT '生日'
) CHARACTER SET utf8 ENGINE MyISAM;
3. 存储引擎与文件说明
不同存储引擎生成的磁盘文件不同:
- MyISAM :3 个文件
users.frm:表结构文件users.MYD:表数据文件users.MYI:表索引文件
- InnoDB (默认):2 个文件
表名.frm:表结构表名.ibd:数据 + 索引合并存储
文件路径示例(Windows):C:\ProgramData\MySQL\MySQL Server 5.7\Data\数据库名\
二、查看表结构(DESC)
创建表后,用 DESC 命令快速查看字段、类型、是否为空等信息。
语法
sql
DESC 表名;
-- 或 DESCRIBE 表名;
示例
sql
DESC users;
返回结果包含:
- Field:字段名
- Type:数据类型
- Null:是否允许为空
- Key:索引类型
- Default:默认值
- Extra:额外信息(自增等)
三、修改表(ALTER TABLE)
业务迭代中常需调整表结构,ALTER TABLE 可完成添加字段、修改字段、删除字段、重命名表 / 字段等操作。
1. 添加字段
sql
ALTER TABLE 表名 ADD 字段名 数据类型 [COMMENT '注释'] [位置];
- 位置:
FIRST(最前)、AFTER 字段名(指定字段后)
示例 :给 users 加图片路径字段,放在 birthday 后:
sql
ALTER TABLE users ADD assets VARCHAR(100) COMMENT '图片路径' AFTER birthday;
✅ 新增字段不影响原有数据,旧数据该字段默认为 NULL。
2. 修改字段类型 / 长度
sql
ALTER TABLE 表名 MODIFY 字段名 新数据类型;
示例 :把 name 长度从 20 改为 60:
sql
ALTER TABLE users MODIFY name VARCHAR(60);
3. 删除字段
⚠️ 危险操作:删除字段会永久丢失该列所有数据!
sql
ALTER TABLE 表名 DROP 字段名;
示例 :删除 password 字段:
sql
ALTER TABLE users DROP password;
4. 重命名表
sql
ALTER TABLE 旧表名 RENAME [TO] 新表名;
-- TO 可省略
示例 :users 改名为 employee:
sql
ALTER TABLE users RENAME TO employee;
5. 重命名字段
CHANGE 需完整定义新字段(名称 + 类型):
sql
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 数据类型;
示例 :name 改为 xingming:
sql
ALTER TABLE employee CHANGE name xingming VARCHAR(60);
四、删除表(DROP TABLE)
彻底删除表结构 + 所有数据,不可逆,务必谨慎!
语法
sql
DROP [TEMPORARY] TABLE [IF EXISTS] 表名1 [, 表名2...];
- IF EXISTS:表不存在也不报错,脚本必备
- TEMPORARY:仅删除临时表
示例
sql
-- 安全删除单表
DROP TABLE IF EXISTS users;
-- 同时删除多表
DROP TABLE IF EXISTS t1, t2, employee;
五、完整操作流程(实战回顾)
sql
-- 1. 创建表
CREATE TABLE users (
id INT,
name VARCHAR(20),
password CHAR(32),
birthday DATE
) CHARSET utf8 ENGINE MyISAM;
-- 2. 插入测试数据
INSERT INTO users VALUES
(1,'a','b','1982-01-04'),
(2,'b','c','1984-01-04');
-- 3. 添加字段
ALTER TABLE users ADD assets VARCHAR(100) AFTER birthday;
-- 4. 修改字段长度
ALTER TABLE users MODIFY name VARCHAR(60);
-- 5. 删除字段
ALTER TABLE users DROP password;
-- 6. 重命名表
ALTER TABLE users RENAME TO employee;
-- 7. 重命名字段
ALTER TABLE employee CHANGE name xingming VARCHAR(60);
-- 8. 删除表
DROP TABLE IF EXISTS employee;
六、高频注意事项
- 删除字段 / 表前必备份,数据丢失无法恢复
- 字段命名避关键字 ,如
order、user等 - 字符集统一 ,推荐
utf8mb4支持 emoji - 生产优先 InnoDB,支持事务、外键、崩溃恢复
- ALTER 谨慎执行,大表会锁表,建议低峰操作
总结
MySQL 表操作核心就 4 类:
- CREATE TABLE:建表定结构
- DESC:查结构看细节
- ALTER TABLE:改字段 / 表名
- DROP TABLE:删表清数据
掌握这些,日常开发 90% 的表结构需求都能搞定。