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. 表重命名仅修改名称,不影响任何数据和结构,是安全操作

相关推荐
Wang's Blog1 小时前
PostgreSQL笔记20: 实例、集群、模板数据库与表空间 —— 逻辑体系架构深度解析
数据库·笔记·postgresql
杨运交9 小时前
[060][调度模块]Redisson vs Redis 原生锁:两种分布式锁实现深度对比
数据库·redis·分布式
FungLeo9 小时前
Node 后端实战 · 列表查询到底怎么写?一个通用 DSL 封装,过滤分页排序一次搞定
数据库·node.js·serverless·dsl 封装·通用列表查询
抓蛙师10 小时前
多租户 tenant_id SQL 注入漏洞分析与应急响应报告
数据库·sql
ACP广源盛1392462567310 小时前
Qwen3.8‑2.4T 开源落地@ACP#国产 MoE 私有化部署下 GSV2221 视频转换芯片机遇分析
大数据·数据库·人工智能
七牛开发者11 小时前
为什么 Go 很适合 AI 辅助开发?
数据库·人工智能·python·elasticsearch·log4j
何以解忧,唯有..13 小时前
数据库索引失效的常见情况与优化策略
数据库·sql·oracle
这个DBA有点耶13 小时前
分布式数据库到底该不该上?从判断标准到架构选型的实战思考
数据库·架构·dba
01_ice14 小时前
MySQL库和表的操作
数据库·mysql