MySQL数据表详解|创建、查看、修改、删除实战教程

前言

前面我们掌握了MySQL数据库(库级) 的所有操作,包括创建、修改、删除、备份还原等。而在实际开发中,我们真正存储、操作业务数据的核心是数据表。

数据表是数据库的核心载体,所有的业务数据、字段约束、数据格式都依赖数据表定义。本篇文章将从零讲解MySQL数据表的完整操作,包含建表语法、存储引擎文件差异、查看表结构、修改表结构、删除表等高频实操命令,全程搭配真实运行案例,覆盖开发99%的表结构操作场景。

一、数据表创建:标准语法与核心规则

1.1 完整建表语法

MySQL创建数据表支持自定义字段、数据类型、字符集、校验规则、存储引擎,语法结构如下:

sql 复制代码
create table table_name (
    field1 datatype,
    field2 datatype,
    field3 datatype
)
[character set 字符集]
[collate 校验规则]
[engine 存储引擎];

1.2 核心参数说明

  • field:数据表列名(字段名),自定义命名,贴合业务场景

  • datatype:字段数据类型(int、varchar、date、char等),约束字段存储的数据格式

  • CHARACTER SET :表字符集,未指定时,默认继承所在数据库的字符集

  • COLLATE :表校验规则,未指定时,默认继承所在数据库的校验规则

  • ENGINE:表存储引擎,决定数据存储方式、索引机制、事务特性

1.3 实战建表案例

创建一张用户数据表 users,指定字段、备注、utf8字符集、MyISAM存储引擎:

sql 复制代码
create table users (
    id int comment '用户ID',
    name varchar(20) comment '用户名',
    password char(32) comment '密码,32位md5加密值',
    birthday date comment '用户生日'
)
character set utf8
engine MyISAM;

1.4 存储引擎对应文件差异(核心知识点)

不同存储引擎的数据表,在磁盘中生成的文件完全不同,这是区分MyISAM和InnoDB的基础特征:

MyISAM引擎表(以上方users表为例)

创建成功后,数据目录会生成三个独立文件:

  • users.frm:存储表结构信息(字段、类型、备注等)

  • users.MYD:存储表真实数据

  • users.MYI:存储表索引数据

InnoDB引擎表

InnoDB是MySQL默认存储引擎,仅生成 .frm 表结构文件,数据和索引统一存储在系统共享文件中,不单独拆分文件,也是企业项目主流存储引擎。

二、查看数据表结构

开发中经常需要查看数据表的字段、类型、是否为空、默认值等结构信息,核心命令:

基础语法

sql 复制代码
desc 表名;

实战查询

sql 复制代码
desc users;

执行后可清晰查看所有字段的Field(字段名)、Type(数据类型)、Null(是否可为空)、Key(索引)、Default(默认值)、Extra(额外属性)。

三、数据表修改(开发最高频操作)

项目迭代过程中,经常需要调整表结构:新增字段、修改字段长度/类型、删除冗余字段、修改表名、修改字段名等。所有表结构修改均使用 ALTER TABLE 命令。

前置准备:插入测试数据

为了直观验证修改效果,先给users表插入两条测试数据:

sql 复制代码
insert into users values
(1,'a','b','1982-01-04'),
(2,'b','c','1984-01-04');

3.1 新增字段

业务迭代新增属性时,需要给数据表添加新字段,可指定字段位置、备注、默认值。

语法
sql 复制代码
alter table 表名 add 字段名 数据类型 [comment 备注] [位置];
实战案例

在users表生日字段后,新增图片路径字段 assets:

sql 复制代码
alter table users add assets varchar(100) comment '图片路径' after birthday;

效果验证 :执行 DESC users 可看到新增字段,原有数据完全保留,新增字段默认值为NULL,新增字段不会影响原有表数据。

3.2 修改字段数据类型/长度

当字段长度不足以满足业务需求时,可通过 MODIFY 修改字段类型、长度、约束。

语法
sql 复制代码
alter table 表名 modify 字段名 新数据类型;
实战案例

将name字段长度从20修改为60:

sql 复制代码
alter table users modify name varchar(60);

效果验证:查表可发现name字段长度更新为60,原有数据完全保留,无数据丢失。

3.3 删除字段

针对业务废弃的冗余字段,可直接删除。

语法
sql 复制代码
alter table 表名 drop 字段名;
实战案例

删除users表中的password字段:

sql 复制代码
alter table users drop password;

高危注意事项:删除字段为不可逆操作,字段对应的所有历史数据会被全部清空,生产环境操作前务必备份数据!

3.4 修改数据表名称

语法
sql 复制代码
alter table 旧表名 rename to 新表名;
实战案例

将users表重命名为employee:

sql 复制代码
alter table users rename to employee;

修改表名不会影响表内任何数据和字段结构,仅修改表的名称。

3.5 修改字段名称(重命名字段)

若业务字段命名不规范,可通过CHANGE 命令修改字段名,必须重新定义字段完整数据类型。

语法
sql 复制代码
alter table 表名 change 旧字段名 新字段名 完整数据类型;
实战案例

将employee表的name字段重命名为xingming,保留原有varchar(60)类型:

sql 复制代码
alter table employee change name xingming varchar(60);

核心注意:CHANGE命令必须携带完整字段类型,缺一不可,否则会语法报错。

四、删除数据表

对于废弃、无用的数据表,可直接删除,删除后表结构、表数据、索引全部清空。

标准语法

sql 复制代码
drop [temporary] table [if exists] 表名1, 表名2...;

参数说明

  • IF EXISTS:容错参数,表存在才删除,避免表不存在导致的报错

  • 支持批量删除多张数据表,用逗号分隔表名

实战案例

sql 复制代码
-- 删除单张表
drop table if exists t1;

-- 批量删除多张表
drop table if exists t2,t3;

高危提醒:drop table是不可逆操作,删除后表结构和所有数据无法恢复,生产环境严禁随意执行!

五、全文核心总结

  1. 建表时字符集、校验规则默认继承数据库配置,MyISAM引擎表生成3个磁盘文件,InnoDB仅生成表结构文件

  2. 新增字段:ADD命令,不影响原有数据,可自定义字段位置

  3. 修改字段属性:MODIFY命令,仅改类型、长度,不改字段名

  4. 修改字段名:CHANGE命令,必须重写完整字段类型

  5. 删除字段/表:均为高危不可逆操作,生产环境操作前必须备份

  6. 表重命名仅修改名称,不影响任何数据和结构,是安全操作

相关推荐
FYKJ_201015 小时前
springboot雅集社区养老管理系统04456-计算机课程设计、毕业设计
vue.js·spring boot·python·mysql·typescript·spark·django
FYKJ_201015 小时前
express皖美特色农产品网售系统53118-计算机课程设计、毕业设计
javascript·vue.js·spring boot·mysql·typescript·spark·express
FYKJ_201016 小时前
springboot羽毛球场地管理系统00626-计算机课程设计、毕业设计
vue.js·spring boot·python·mysql·typescript·spark·django
FYKJ_201017 小时前
django药饮个性化推荐系统54839-计算机课程设计、毕业设计
vue.js·spring boot·python·mysql·typescript·spark·django
IT枫斗者枫哥1 天前
MyBatis一对多分页:LIMIT 20,为什么凑不齐20个订单?
java·数据库
Flynt1 天前
"MySQL搜不动就上ES"?我先在50万行数据上测了它自带的ngram全文索引
mysql·elasticsearch·搜索引擎
Y001 天前
PostgreSQL 的锁:为什么你的 ALTER TABLE 会卡住,以及怎么查
数据库·postgresql
imDwAaY1 天前
Redo Log 和 Binlog 为什么需要两阶段提交?
后端·mysql
灰原喜欢柯南1 天前
OceanBase 运维管理知识点——OCP 监控、诊断与变更控制
数据库·oceanbase
码农-0041 天前
Springboot 集成 Ehcache操作数据库显示SQL语句设置
数据库·spring boot·sql