【MySQL】数据库表的操作

【MySQL】数据库表的操作

MySQL数据库表的操作

MySQL表的操作

github地址

有梦想的电信狗

0. 前言

在学习 MySQL 的过程中,“表”是数据库操作的核心对象
无论是存储用户信息、记录日志、还是管理订单数据,一切都离不开表的创建、查看、修改与删除。
很多初学者在接触 SQL 时,只知道 CREATE TABLE 的基本语法,却容易忽略存储引擎、字符集、表结构调整等细节。
本文将以通俗易懂的方式,系统讲解 MySQL 表的常用操作命令与注意事项
通过实例演示和图示说明,让你不仅会“用”,还真正理解“为什么这样用”。

目标:让你在学完本篇后,能独立完成表的定义、调整与安全删除操作,
并对存储引擎、结构变化等底层机制有更清晰的认识。

1. 创建表

语法

CREATETABLE table_name ( field1 datatype, field2 datatype, field3 datatype )characterset 字符集 collate 校验规则 engine 存储引擎;

说明

  • field:表示列名
  • datatype:表示列的类型
  • character set字符集,如果没有指定字符集,则以所在数据库的字符集为准
  • collate校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准

创建表示例

createdatabase users;# 创建表首先需要 创建并使用数据库use users;

以下两种写法均可

# 创建表 以下两种写法均可createtable user1 ( id int, name varchar(20)comment'用户名', password char(32)comment'密码是32位的md5值', birthday datecomment'生日')characterset utf8 engine MyISAM;createtableifnotexists user2 ( id int, name varchar(20)comment'用户名', password char(32)comment'密码是32位的md5值', birthday datecomment'生日')charset=utf8 collate=utf8_general_ci engine=InnoDB;
  • 建表后,相应数据库的文件夹中出现了不同个数的表结构,是因为两张表使用了不同的存储引擎
  • 不同的存储引擎,对于在磁盘中文件个数的要求的不同
在这里插入图片描述

说明

  • 不同的存储引擎,创建表的文件不一样
    • user1表存储引擎是MyISAM,在数据目录中有三个不同的文件,分别是:
      • users.frm:表结构
      • users.MYD:表数据
      • users.MYI:表索引
    • 其中在MySQL 5.7 中,MyISAM存储引擎的表在数据目录中有以上三个不同的文件,MySQL 8.0 之后数据目录中优化为了两个文件

2. 查看表与表结构

命令汇总一览

# 查看当前正在使用的数据库selectdatabase();# 查看数据库中存在的表showtables;# 查看 表的结构desc table_name # table_name 为表名 desc 为 describe 的前四个字母

查看已有表

语法

# 查看 当前数据库已有的表selectdatabase();showtables;
在这里插入图片描述

查看表的具体结构

语法

# 查看 表的具体结构desc table_name # table_name 为表名

使用示例

# 查看 表 user1 的具体结构desc user1 # user1 为表名# 查看 表 user2 的具体结构desc user2 # user2 为表名
在这里插入图片描述
在这里插入图片描述

查看表创建时的使用的命令

语法

showcreatetable table_name;# 查看表创建时的使用的命令showcreatetable table_name \G # 该写法获取到的结果更直观,该命令需要去掉分号

使用示例

showcreatetable user1;# 查看表创建时的使用的命令showcreatetable user1 \G # 该写法获取到的结果更直观,该命令需要去掉分号
在这里插入图片描述

3. 修改表

在项目实际开发中,经常需要修改某个表的结构,比如字段名字字段大小字段类型表的字符集类型表的存储引擎等等。我们还有添加字段,删除字段等等的需求。这时我们就需要修改表

修改表名

  • 修改表名
altertable oldName renameto newName;altertable oldName rename newName;# to 可以省略
在这里插入图片描述

修改表的属性

语法

# 新增列属性ALTERTABLE tablename ADD(column datatype [DEFAULT expr][,column datatype]...);# 修改列属性ALTERTABLE tablename MODIfy(column datatype [DEFAULT expr][,column datatype]...);# 删除列ALTERTABLE tablename DROP(column);

先给表中添加两条记录

insertintouservalues(1,'张三','12345','2025-5-20');insertintouservalues(2,'李四','54321','2025-6-18');
在这里插入图片描述

在表中添加列

语法

# 新增列属性ALTERTABLE tablename ADD(column datatype [DEFAULT expr][,column datatype]...);

示例

  • user表添加一个字段,用于保存图片路径
altertableuseradd image_path varchar(128)comment'用户的图片路径'after birthday;select*fromuser;
在这里插入图片描述

在表中修改列属性

语法

# 修改列属性ALTERTABLE tablename MODIfy(column datatype [DEFAULT expr][,column datatype]...);

使用示例

  • user表中的name列的类型改为最长为60的变长字符串varchar(60)
altertableusermodify name varchar(60);
在这里插入图片描述

在表中删除列

注意:删除字段一定要小心,删除字段及其对应的列数据都没了

语法

# 删除列ALTERTABLE tablename DROP(column);

使用示例

  • 将表中的 password 列删除
# 将表中的 password 列删除altertableuserdrop password;
在这里插入图片描述

修改表的列名

语法

 alter table name_table change 表的旧列名 表的新列名 列数据类型; # --新字段需要完整定义 

使用示例

showtables;# 显示可使用的表descuser;# 查看表的属性altertableuser change name NAME varchar(80);# 修改 name 为 NAME,并指定数据类型为 varchar(80)descuser;# 查看修改后的结果
在这里插入图片描述

4. 删除表

实际中不到万不得已,不建议对表执行删除操作

用法

语法

DROP[TEMPORARY]TABLE[IFEXISTS] tbl_name [, tbl_name]...

使用示例

droptable user2;
在这里插入图片描述

注意与危害

在 MySQL 中执行 DROP TABLE 删除表操作,看似简单,但其危害往往非常严重。以下是对其危害的简述和分析:


🧨 一、数据不可恢复

  • 删除表会直接删除所有数据,包括表结构、索引、约束等元信息。
  • DELETE FROM table 不同,DROP TABLE 不会留下可恢复的数据记录。
  • 即使有 rollback 或事务机制,也无法恢复,因为 DROP TABLEDDL(数据定义语句),会 隐式提交事务

⚙️ 二、表结构丢失

  • 执行后,表的定义信息在数据字典中被清除,无法再重新创建出完全一致的表。
  • 若无备份,连字段类型、索引、约束等设计信息都无法找回。

💣 三、可能导致依赖关系破坏

  • 如果被删除的表被其他表(或视图、存储过程、外键等)依赖:
    • 外键约束失效;
    • 视图或存储过程无法执行;
    • 应用程序可能出现严重错误或崩溃。

🕳 四、日志与恢复机制受限

  • 虽然二进制日志(binlog)会记录 DROP TABLE 操作,但恢复时只能回放到删除之前的某个时间点。
  • 若未开启 binlog 或未及时备份,彻底丢失

⚡ 五、误操作风险高

  • 在生产环境中,执行 DROP TABLE 常因疏忽造成不可逆的业务损失
  • 常见误操作:
    • 在错误的数据库上执行;
    • 执行 DROP DATABASE 导致所有表被删除;
    • 使用自动化脚本时未限定环境(如测试/生产混用)。

✅ 安全建议

  1. 先备份:执行前务必使用 mysqldump 或物理备份工具备份表数据与结构。
  2. 限制权限:禁止普通账号执行 DROP 操作。

使用回收站机制:将表改名代替直接删除:

RENAMETABLE users TO users_backup_20251017;

使用 IF EXISTS:防止误删不存在的表。

DROPTABLEIFEXISTS users;

总结一句话:

DROP TABLE 是 MySQL 中最具破坏性的命令之一,一旦执行,数据和表结构将同时消失且无法通过事务恢复,因此必须慎用、先备份、再确认。

5. 结语

本文围绕 MySQL 中表的创建、查看、修改与删除进行了系统讲解,
从语法到示例,再到潜在风险分析,帮助你全面掌握“表”这一数据库的核心概念。

希望通过这篇文章,你不仅能熟练执行相关 SQL 命令,
更能在项目开发中学会思考与防范——比如在修改或删除表前养成备份的习惯。

数据库是系统的基石,而表结构的设计与维护,则是构建这座大厦的地基。
打好基础,才能在后续的数据库优化、索引设计、事务操作中更加得心应手。

学完这一章,建议继续深入学习:表约束(主键、外键、唯一约束)索引与查询优化视图与存储过程

让我们在下一篇中继续探索更高阶的 MySQL 世界 🚀

以上就是本文的所有内容了,如果觉得文章对你有帮助,欢迎 点赞⭐收藏 支持!如有疑问或建议,请在评论区留言交流,我们一起进步

分享到此结束啦
一键三连,好运连连!
你的每一次互动,都是对作者最大的鼓励!征程尚未结束,让我们在广阔的世界里继续前行! 🚀

Read more

某东APP端sslpning抓包+ep,cipher,sign等魔改算法+so层解析

某东APP端sslpning抓包+ep,cipher,sign等魔改算法+so层解析

本文仅用于逆向研究交流,禁止非法用途,如遇侵权联系删除!!! 准备 某购物APP 15.2.80版本 通过豌豆荚下载 aHR0cHM6Ly93d3cud2FuZG91amlhLmNvbS9hcHBzLzI3OTk4Ny9oaXN0b3J5X3YxMDE3NjE= 设备mi6 抓包工具reqable APP抓包 这个app直接抓是抓不到的因为有ssl pinning 这里推荐的方案是 Lsposed+JustTrustMe 过掉ssl pinning 接口分析 接口位置为首页下拉 关键词搜下面 首先看参数 再看请求体 有很多都是加密 我们本篇就先分析这几个 body和ep中都很像base64加密但是我测试了一下都不是  估计是魔改的算法 sign像是md5 st时间戳 sv暂时不知道 魔改base64分析 把下载的安装包拖进去进行jadx反编译分析 反编译之后搜索ep里面关键字cipher 可以看到这里把参数put进去的我们看看JSONObject是怎么来的 定位到了生存位置我们分析下JSONObject生成流程

By Ne0inhk
从零开始打造高性能数据结构——手把手教你实现环形缓冲

从零开始打造高性能数据结构——手把手教你实现环形缓冲

◆ 博主名称: 小此方-ZEEKLOG博客 大家好,欢迎来到小此方的博客。 ⭐️个人专栏:《C语言》_小此方的博客-ZEEKLOG博客 算法_小此方的博客-ZEEKLOG博客  ⭐️踏破千山志未空,拨开云雾见晴虹。 人生何必叹萧瑟,心在凌霄第一峰。 目录 一,普通队列的劣势 1. 空间浪费严重(“假溢出”问题) 2. 需要频繁移动元素(若避免浪费) 3. 扩容成本高 4. 无法解决“假溢出”导致的提前扩容 二,环形缓冲结构分析  1. “循环”取模实现指针回绕  2.“循环”,轮流入座而不是排长队 三,实现环形缓冲 1,MyCircularQueue(k): 构造器   1,结构体搭建   2,初始化 3,为什么选择k+1块空间而不是k块空间?

By Ne0inhk

优选算法——前缀和

👇作者其它专栏 《数据结构与算法》《算法》《C++起始之路》 前缀和相关题解 1.前缀和 算法思路: a.先预处理出来一个【前缀和】数组:         用dp[i]表示:[1,i]区间内所有元素的和,那么dp[i-1]里面存的就是[1,i-1]区间内所有元素的和,那么:可得到递推公式:dp[i]=dp[i-1]+arr[i]; b.使用前缀和数组,【快速】求出【某一个区间内】所有元素的和:         当访问的区间是[l,r]时:区间内所有元素的和为:dp[r]-dp[l-r]。 #include <

By Ne0inhk
蓝桥杯C++组算法知识点整理 · 考前突击(上)【小白适用】

蓝桥杯C++组算法知识点整理 · 考前突击(上)【小白适用】

【背景说明】本文的作者是一名算法竞赛小白,在第一次参加蓝桥杯之前希望整理一下自己会了哪些算法,于是有了本文的诞生。分享在这里也希望与众多学子共勉。如果时间允许的话,这一系列会分为上中下三部分和大家见面,祝大家竞赛顺利! 【文风说明】本文主要会用代码+注释的方式来解释内容。相信学过编程的人都会发现程序比长篇大论更易理解! 目录 一、语言基础 1.1 编程基础 1.2 竞赛常用库函数 1.2.1 sort 函数 1.2.2 最值查找 1.2.3 二分查找 1.2.4 大小写转换 1.2.5 全排列 1.2.6 其它库函数整理 1.3 STL的用法 1.

By Ne0inhk