点击卡片,关注 InsideMySQL

新年好,各位码农小可爱们,祝大家虎年大吉,新的一年 day day up

作为虎年 IMG 的第一篇公众号文章,不如我们来刷个题吧,看看有哪些小可爱们可以做对。

1. 假设表x的表结构和内容如下所示:

mysql> show create table x\G***********1.row*************Table:xCreate Table: CREATE TABLE `x`(`a` INT NOT NULL AUTO INCREMENT,`b` VARCHAR(1),PRIMARY KEY (`a`)) ENGINE=InnODB;
mysql> SELECT * FROM x;| a | b || 0 | a || 2 | b |
mysql> ALTER TABLE x MODIFY COLUMN b VARCHAR(5);

请问执行完ALTER TABLE x MODIFY COLUMN b VARCHAR(5)后,表x中的数据是怎样的?

2. 假设表y的表结构和内容如下所示:

mysql> show create table y\G***********1.row*************Table:yCreate Table: CREATE TABLE `y`(`a` INT,`b` VARCHAR(1),PRIMARY KEY (`a`)) ENGINE=InnODB;
mysql> SELECT * FROM y;| a | b || 0 | a || 2 | b |
mysql> ALTER TABLE y MODIFY COLUMN a INT AUTO_INCREMENT;

请问执行完ALTER TABLE y MODIFY COLUMN a INT AUTO_INCREMENT后,表x中的数据是怎样的?

若不在 MySQL 环境下执行上述两条 DDL 语句,相信大多数同学的答案会是错误的。

即便通过执行 DDL 语句知道了最终的答案,那你知道 why 么?

这是一个非常有意思的问题,甚至可以说是 MySQL 一个“愚蠢至极”的 Bug。

周四晚上 21:00 来姜老师的抖音直播间,我将会通过分析源码的方式告诉同学们为什么 MySQL 是这么运行的。

IMG群是码农的交流社区,IMG微信群交流内容包括但不限于技术、经济、军事、八卦等话题。欢迎有态度的码农们加入IMG大家庭。

IMG目前有少林群、武当群、峨眉群、华山群、M悦会(高端VIP群)

仅限码农入群,猎头或其他行业勿加,入群请加姜老师个人微信82946772,并备注:码农入IMG群