MySQL表操作完全指南(从创建到删除)

 更新时间:2026年07月13日 09:33:17   作者:时间的拾荒人  
在 MySQL 的学习与面试中,对数据表的操作是重中之重,无论是创建、查看、修改还是删除表,都是日常开发与面试考察的核心技能,本文将基于实战案例,带你全面掌握 MySQL 表的操作,需要的朋友可以参考下

1. 引言

在 MySQL 的学习与面试中,对数据表的操作是重中之重。无论是创建、查看、修改还是删除表,都是日常开发与面试考察的核心技能。本文将基于实战案例,带你全面掌握 MySQL 表的操作,内容通俗易懂,代码完整可运行,助你轻松应对面试。

2. 创建表

2.1 语法详解

创建表是使用数据库的第一步,其基本语法如下:

CREATE TABLE table_name (
    field1 datatype,
    field2 datatype,
    field3 datatype
) character set 字符集 collate 校验规则 engine 存储引擎;

参数说明:

  • field:表示列名(字段名)。
  • datatype:表示列的数据类型(如 intvarchardate 等)。
  • character set:字符集。如果没有指定,则以所在数据库的默认字符集为准。
  • collate:校验规则。如果没有指定,则以所在数据库的默认校验规则为准。
  • engine:存储引擎(如 InnoDBMyISAM)。

2.2 创建表案例

下面我们创建一个 users 表,包含用户的基本信息:

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

小贴士: comment 关键字用于添加字段注释,方便后期维护。

存储引擎与文件结构:

不同的存储引擎,创建表时生成的文件也不同。以 MyISAM 引擎为例,在数据库目录下会生成三个文件:

  • users.frm:表结构定义文件。
  • users.MYD:表数据文件。
  • users.MYI:表索引文件。

InnoDB 引擎则不同,它会在数据库目录下生成两个文件:

  • users.frm:表结构定义文件。
  • users.ibd:表数据和索引文件。

面试考点: 面试官常问 MyISAM 和 InnoDB 的区别,其中文件存储结构就是一个关键点。

3. 查看表结构

创建好表之后,我们可以使用 desc 命令来查看表的结构:

desc 表名;

示例:

mysql> desc users;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(11)     | YES  |     | NULL    |       |
| name     | varchar(20) | YES  |     | NULL    |       |
| password | char(32)    | YES  |     | NULL    |       |
| birthday | date        | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+

小贴士: desc 是 describe 的缩写,两者功能相同。

4. 修改表(ALTER TABLE)

在实际项目开发中,经常需要修改表的结构,比如添加字段、修改字段类型、删除字段、重命名表等。这时就需要使用 ALTER TABLE 语句。

4.1 添加字段

语法:

ALTER TABLE tablename ADD (column datatype [DEFAULT expr] [, column datatype] ...);

案例:users 表中添加一个 assets 字段,用于保存用户头像的图片路径,并将其放在 birthday 字段之后。

mysql> alter table users add assets varchar(100) comment '图片路径' after birthday;

💡 小贴士: after birthday 表示将新字段插入到 birthday 字段之后。如果不指定位置,默认添加到最后一列。

验证结果:

mysql> desc users;
+----------+--------------+------+-----+---------+-------+
| Field    | Type         | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| id       | int(11)      | YES  |     | NULL    |       |
| name     | varchar(20)  | YES  |     | NULL    |       |
| password | char(32)     | YES  |     | NULL    |       |
| birthday | date         | YES  |     | NULL    |       |
| assets   | varchar(100) | YES  |     | NULL    |       |
+----------+--------------+------+-----+---------+-------+

插入数据验证:

mysql> insert into users values(1,'a','b','1982-01-04'),(2,'b','c','1984-01-04');

查看数据:

mysql> select * from users;
+------+------+----------+------------+-------+
| id   | name | password | birthday   | assets |
+------+------+----------+------------+-------+
|    1 | a    | b        | 1982-01-04 | NULL  |
|    2 | b    | c        | 1984-01-04 | NULL  |
+------+------+----------+------------+-------+

注意: 插入新字段后,对原来表中的数据没有影响,新字段的值默认为 NULL。

4.2 修改字段

语法:

ALTER TABLE tablename MODIFY (column datatype [DEFAULT expr] [, column datatype] ...);

案例:name 字段的长度从 varchar(20) 修改为 varchar(60)

mysql> alter table users modify name varchar(60);

验证结果:

mysql> desc users;
+----------+--------------+------+-----+---------+-------+
| Field    | Type         | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| id       | int(11)      | YES  |     | NULL    |       |
| name     | varchar(60)  | YES  |     | NULL    |       |  <= 长度变成60
| password | char(32)     | YES  |     | NULL    |       |
| birthday | date         | YES  |     | NULL    |       |
| assets   | varchar(100) | YES  |     | NULL    |       |
+----------+--------------+------+-----+---------+-------+

4.3 删除字段

语法:

ALTER TABLE tablename DROP (column);

案例: 删除 password 列。

mysql> alter table users drop password;

验证结果:

mysql> desc users;
+----------+--------------+------+-----+---------+-------+
| Field    | Type         | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| id       | int(11)      | YES  |     | NULL    |       |
| name     | varchar(60)  | YES  |     | NULL    |       |
| birthday | date         | YES  |     | NULL    |       |
| assets   | varchar(100) | YES  |     | NULL    |       |
+----------+--------------+------+-----+---------+-------+

警告: 删除字段一定要小心!删除字段及其对应的列数据都会永久丢失,无法恢复。

4.4 重命名表

语法:

ALTER TABLE 旧表名 RENAME [TO] 新表名;

案例:users 表重命名为 employee

mysql> alter table users rename to employee;

小贴士: to 关键字可以省略。

验证结果:

mysql> select * from employee;
+------+------+------------+-------+
| id   | name | birthday   | assets |
+------+------+------------+-------+
|    1 | a    | 1982-01-04 | NULL  |
|    2 | b    | 1984-01-04 | NULL  |
+------+------+------------+-------+

4.5 修改字段名

语法:

ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新字段类型;

注意: 使用 CHANGE 修改字段名时,必须重新指定字段的完整定义(包括类型、约束等)。

案例:name 列修改为 xingming,类型为 varchar(60)

mysql> alter table employee change name xingming varchar(60);

验证结果:

mysql> desc employee;
+----------+--------------+------+-----+---------+-------+
| Field    | Type         | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| id       | int(11)      | YES  |     | NULL    |       |
| xingming | varchar(60)  | YES  |     | NULL    |       |
| birthday | date         | YES  |     | NULL    |       |
| assets   | varchar(100) | YES  |     | NULL    |       |
+----------+--------------+------+-----+---------+-------+

5. 删除表

语法:

DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...

示例: 删除 t1 表。

drop table t1;

警告: 轻易不要修改和删除表!在生产环境中,删除表操作极其危险,务必三思而后行。

6. 小总结

本文详细介绍了 MySQL 中关于表的核心操作,包括:

  • 创建表:掌握 CREATE TABLE 语法,理解存储引擎对文件结构的影响。
  • 查看表结构:使用 DESC 命令快速了解表定义。
  • 修改表:灵活运用 ALTER TABLE 进行添加、修改、删除字段及重命名表等操作。
  • 删除表:了解 DROP TABLE 的用法,并牢记其危险性。

这些操作是数据库面试中的高频考点,也是日常开发的基础。建议你亲手在本地 MySQL 环境中练习一遍,加深理解。

7. 经典面试题

1. 请简述 MyISAMInnoDB 两种存储引擎在表文件存储上的区别?

参考答案:

  • MyISAM 引擎的表会生成三个文件:.frm(表结构)、.MYD(数据)、.MYI(索引)。
  • InnoDB 引擎的表会生成两个文件:.frm(表结构)、.ibd(数据和索引)。

2. 使用 ALTER TABLE 修改字段时,MODIFYCHANGE 有什么区别?

参考答案:

  • MODIFY 用于修改字段的数据类型或约束,但不能修改字段名。
  • CHANGE 既可以修改字段名,也可以修改字段的数据类型和约束,但使用 CHANGE 时必须重新指定字段的完整定义。

3. 在 users 表中,如何在 birthday 字段之后添加一个 email 字段?

参考答案:

ALTER TABLE users ADD email varchar(100) AFTER birthday;

4. 删除表中的某一列时,需要注意什么?

参考答案:
删除字段时,该字段及其对应的所有数据都会被永久删除,无法恢复。因此,在执行 ALTER TABLE ... DROP 操作前,务必确认该字段的数据不再需要,并建议先备份数据。

5. 如何安全地删除一个表?

参考答案:
使用 DROP TABLE IF EXISTS 表名; 语句。IF EXISTS 关键字可以防止因表不存在而报错。但在生产环境中,删除表前最好先确认是否有其他对象依赖该表,并做好数据备份。

以上就是MySQL表操作完全指南(从创建到删除)的详细内容,更多关于MySQL表操作从创建到删除的资料请关注脚本之家其它相关文章!

相关文章

  • 浅谈MySQL之浅入深出页原理

    浅谈MySQL之浅入深出页原理

    首先,我们需要知道,页(Pages)是InnoDB中管理数据的最小单元。Buffer Pool中存的就是一页一页的数据。当我们要查询的数据不在Buffer Pool中时,InnoDB会将记录所在的页整个加载到Buffer Pool中去;同样,将Buffer Pool中的脏页刷入磁盘时,也是按照页为单位刷入磁盘的
    2021-06-06
  • SQL Server 出现Error: 1326错误(管理器无法连接远程数据库)问题解决方案

    SQL Server 出现Error: 1326错误(管理器无法连接远程数据库)问题解决方案

    这篇文章主要介绍了SQL Server 出现Error: 1326错误(管理器无法连接远程数据库)问题解决方案的相关资料,这里对1326 错误进行了详细介绍及解决办法,需要的朋友可以参考下
    2016-11-11
  • mysql父子集查询(根据父级查询所有子集)

    mysql父子集查询(根据父级查询所有子集)

    某些场景可能需要维护一些有父子关系的数据,本文主要介绍了mysql父子集查询(根据父级查询所有子集),具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02
  • mysql滑动聚合/年初至今聚合原理与用法实例分析

    mysql滑动聚合/年初至今聚合原理与用法实例分析

    这篇文章主要介绍了mysql滑动聚合原理与用法,结合实例形式分析了mysql滑动聚合的相关功能、原理、使用方法及操作注意事项,需要的朋友可以参考下
    2019-12-12
  • mysql中not in隐含陷阱详解

    mysql中not in隐含陷阱详解

    NOT IN 的作用和 IN 恰好相反,NOT IN 用来判断表达式的值是否不存在于给出的列表中;如果不是,返回值为 1,否则返回值为 0,下面这篇文章主要给大家介绍了关于mysql中not in隐含陷阱的相关资料,需要的朋友可以参考下
    2022-04-04
  • MySQL中如何将字符串替换简单示例

    MySQL中如何将字符串替换简单示例

    mysql是一种常用的关系型数据库管理系统,它提供了多种函数来处理和操作数据,下面这篇文章主要给大家介绍了关于MySQL中如何将字符串替换的相关资料,需要的朋友可以参考下
    2024-07-07
  • mysql学习笔记之完整的select语句用法实例详解

    mysql学习笔记之完整的select语句用法实例详解

    这篇文章主要介绍了mysql学习笔记之完整的select语句用法,结合实例形式详细分析了mysql select语句各种常见参数、使用方法及操作注意事项,需要的朋友可以参考下
    2020-04-04
  • MySQL是如何保证数据的完整性

    MySQL是如何保证数据的完整性

    这篇文章主要介绍了MySQL是如何保证数据的完整性,帮助大家更好的理解和学习MySQL,感兴趣的朋友可以了解下
    2020-08-08
  • MySQL定时备份方案(利用Linux crontab)

    MySQL定时备份方案(利用Linux crontab)

    这篇文章主要给大家介绍了关于MySQL定时备份方案的相关资料,文中通过示例代码以及图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-07-07
  • 解决“无法启动mysql服务 错误1069”的方法

    解决“无法启动mysql服务 错误1069”的方法

    本文给大家分享的是小编解决自己网站无法连接数据库的时候遇到的“无法启动mysql服务 错误1069”的方案,有相同需求的小伙伴可以参考下
    2017-08-08

最新评论