MySQL从建库到删库跑路 -- 4.表的操作

4 表操作

4.1 查找一个库中所有的表

  • 这个命令可以用于查找一个库中所有的表
SQL 复制代码
show tables from db_name;
sql 复制代码
mysql> show tables from hello;
+-----------------+
| Tables_in_hello |
+-----------------+
| hero            |
| test_bin        |
| test_ci         |
+-----------------+
3 rows in set (0.00 sec)

4.2 创建表

SQL 复制代码
create table table_name (
	field1 datatype,
	field2 datatype,
	field3 datatype
) [character set charset_name] [collate collation_name] [engine engine_name];
  • 这里我们可以指定存储引擎

4.3 查看表结构

SQL 复制代码
desc table_name;
字段 解释
Field 字段名
Type 类型
Null 是否允许为空
Key 索引类型
Default 默认值
Extra 扩展
  • 关于扩展

  • 扩展可以让一些字段拥有一些其他特性,比方说自动增长啥的

  • 关于索引

  • 首先,一个表在没有索引的情况下,本质上就会变成一个类似于deque的东西(一个缝合怪结构),以至于每次查找数据都需要从头遍历到尾,时间复杂度是O(N)

  • 于是我们可以给一个列创建索引,本质上是一个B+树,那么当查找这个列的元素时,就可以在B+树查找,效率为O(logN),本质上就是空间换时间

  • 值得一提的是,因为是deque,所以插入效率其实是挺高的,几乎就是O(1),但是如果有索引了,那么插入效率就会降到O(logN)

  • 另外,我觉得可以聊聊"写放大"问题

4.4 写放大问题(扩展)

  • 现在你有一个表cards,你想修改一个行中的id,修改大小也就几字节而已,那么在做这个操作时,到底动了多少磁盘多大的空间?

  • 你知道的,操作系统做读写时,即便不在MySQL中,也会按照页大小进行读写,换句话说,我们也就想修改几个字节而已,结果操作系统会读4KB到内存,这就是写放大问题

  • 另外,innodb这个存储引擎,他认为操作系统一个页为4KB太小了,所以innodb会按照16KB读到内存,这就加剧了写放大问题

  • 所以老实说,写放大问题我们没法避免,只能说尽可能减少这个问题发生的频率

  • 如果有索引,写放大问题一定会被放大,因为不仅基础的deque会有写放大,同时查找B+树也会有写放大问题

  • 不过老实说,如果在数据量没到达一定程度前,这点写放大其实问题都不大

  • 所以说,其实有索引的情况下,一定程度上会使得写效率降低一个数量级

4.5 修改表

  • 这几个命令用于增加,删除,修改一个表中的列
SQL 复制代码
alter table tablename add (column datatype [default expr][,column datatype]...);

alter table tablename modify (column datatype [default expr][,column datatype]...);

alter table tablename drop (column);
  • 你可以一次性新增或者修改多个列(如果你只对一个列做操作,记得把括号删了,括号是"多列模式")
  • 删除需谨慎!

  • 这个命令可以用于修改一个表的名字

SQL 复制代码
alter table table_name rename [to] other_name
  • 加to和不加to没有任何区别

4.6 删除表

SQL 复制代码
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...
  • [TEMPORARY]用于删除一个临时表
  • 关于临时表,MySQL允许用户创建一个临时的表,可以用于临时拆分一个超复杂的表,也可以用于用户测试一些指令什么的
  • 允许用户创建一个和正式表同名的临时表,临时表无法被其他用户看见,临时表会在用户退出MySQL时自动被释放
  • 如果加了这个关键字,即便存在一个同名的正式表,MySQL也不会尝试去删除正式表,换句话说,这是保护正式表的一种措施,保证只删除临时表
相关推荐
乐橙开放平台1 小时前
离岗检测怎么实现?通过客流相机或 AI 摄像头识别岗位区域无人状态,再推送告警消息
人工智能·笔记·后端·数码相机·物联网·自动化·音视频
ZhengEnCi10 小时前
模型训练完整流程:从数据准备到模型上线的 10 个关键步骤(全文可跑)
后端·算法
王中阳Go10 小时前
后端转 Agent 岗面试怎么答:8 个高频问题与应答口径
人工智能·后端·python·大语言模型
程序猿DD10 小时前
OctaFuse Gateway 2.18.0:MCP 接入支持 OAuth,供应商粘性绑定可视化管理
后端
ZhengEnCi12 小时前
Agent 规则管理:让 Memory 做索引、让 Skill 存规则——上下文上限实测与分工方案
后端
香蕉大香蕉(06敬畏市场)12 小时前
MySQL 单点详解(07)
java·数据库·mysql·ai·博客·八股
nice_lcj52012 小时前
深入理解 Java 反射:从 Class 对象到方法调用(含性能实测 + 迷你 IOC 实战 + 面试考点)
java·开发语言·后端·面试
骑着蜗牛撵大象32713 小时前
2026 后端 AI 工程化:Spring AI 管调用、MCP 管工具、Agent 内嵌管自治
java·人工智能·后端·spring·ai·可观测性·mcp
摸爬滚打的小李13 小时前
Spring XML + WAR + Tomcat 项目启动
后端