101.一张自增表里面总共有 7 条数据,删除了最后 2 条数据,重启 mysql 数据库,又插入了一条数据,此时 id 是几?
alter table tablename auto_increment = 11; //手动修改自增值
mysql8.0 之前版本 重启服务或者对表OPTIMIZE操作,自增列id的auto_increment会重置为当前列最大值加1
原因:Innodb表把自增主键的最大ID记录到内存中,重启数据库后,都会导致最大自增ID重置
MyISam引擎:MyISAM表会把自增主键的最大ID记录到数据文件里,重启MySQL自增主键的最大ID也不会丢失。
mysql8.0版本: 重启数据库后,不会导致最大自增ID重置
原因:mysql8.0每次变化时将自增计数器的最大值写入redo log,同时在每次检查点将其写入引擎私有的系统表
102.如何获取当前数据库版本?
select version() ;
103.说一下 ACID 是什么?
104.char 和 varchar 的区别是什么?
char(n) :固定长度类型,比如订阅 char(10),当你输入"abc"三个字符的时候,它们占的空间还是 10 个字节,其他 7 个是空字节。
char 优点:效率高;缺点:占用空间;适用场景:存储密码的 md5 值,固定长度的,使用 char 非常合适。
varchar(n) :可变长度,存储的值是每个值占用的字节再加上一个用来记录其长度的字节的长度。
所以,从空间上考虑 varcahr 比较合适;从效率上考虑 char 比较合适,二者使用需要权衡。
105.float 和 double 的区别是什么?
float数值类型用于表示单精度浮点数值,而double数值类型用于表示双精度浮点数值,float和double都是浮点型,而decimal是定点型;
MySQL 浮点型和定点型可以用类型名称后加(M,D)来表示,M表示该值的总共长度,D表示小数点后面的长度,M和D又称为精度和标度,如float(7,4)的 可显示为-999.9999,MySQL保存值时进行四舍五入,如果插入999.00009,则结果为999.0001。
float 最多可以存储 8 位的十进制数,并在内存中占 4 字节。
double 最可可以存储 16 位的十进制数,并在内存中占 8 字节。
FLOAT和DOUBLE在不指 定精度时,默认会按照实际的精度来显示,而DECIMAL在不指定精度时,默认整数为10,小数为0。
MySQL的浮点型和定点型解析和案例演示
106.mysql 的内连接、左连接、右连接有什么区别?
107.mysql 索引是怎么实现的?
图解MySQL索引(上)—MySQL有中“8种”索引?
图解MySQL索引(二)—为什么使用B+Tree
108.索引使用策略?
图解MySQL索引(三)—如何正确使用索引?
MYSQL | 最左匹配原则的原理
MySql中不等号的一点疑问:从为什么不等号有时也会用到索引说到“覆盖索引”
109.怎么验证 mysql 的索引是否满足需求?
使用 explain 查看 SQL 是如何执行查询语句的,从而分析你的索引是否满足需求。
explain 语法:explain select * from table where type=1。