【MySQL 数据库】表的操作

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;

六、高频注意事项

  1. 删除字段 / 表前必备份,数据丢失无法恢复
  2. 字段命名避关键字 ,如 orderuser
  3. 字符集统一 ,推荐 utf8mb4 支持 emoji
  4. 生产优先 InnoDB,支持事务、外键、崩溃恢复
  5. ALTER 谨慎执行,大表会锁表,建议低峰操作

总结

MySQL 表操作核心就 4 类:

  • CREATE TABLE:建表定结构
  • DESC:查结构看细节
  • ALTER TABLE:改字段 / 表名
  • DROP TABLE:删表清数据

掌握这些,日常开发 90% 的表结构需求都能搞定。

相关推荐
雷工笔记4 小时前
MES 系统 设备保养管理模块详细设计方案
运维·数据库
晚风_END6 小时前
Linux|操作系统|zfs文件系统的使用详解
linux·运维·服务器·数据库·postgresql·性能优化·宽度优先
晚风_END11 小时前
Linux|操作系统|最新版openzfs编译记录
linux·运维·服务器·数据库·spring·中间件·个人开发
dLYG DUMS12 小时前
DBeaver连接本地MySQL、创建数据库表的基础操作
数据库·mysql
苍煜13 小时前
MySQL分库分表和ES到底怎么选?
数据库·mysql·elasticsearch
茉莉玫瑰花茶13 小时前
Qt 信号与槽 [ 1 ]
开发语言·数据库·qt
czlczl2002092513 小时前
松散索引扫描/跳跃索引扫描
数据库·mysql·性能优化
苍煜14 小时前
二叉树、红黑树、B树、B+树通俗教学:各自适配场景+MySQL索引终极选型原因
数据结构·b树·mysql
星马梦缘15 小时前
数据库作战记录 实验7、8
数据库·sql·oracle