- 一张表,里面id是自增主键,当插入17条数据以后,在删除15-17的数据,这时候把MySQL给重启,在insert一条数据,这时候主键id是15还是18?
答:如果是myisam引擎,那么就是18,理由:myisam表会把自增主键记录存储在数据文件中,MySQL引擎重启以后,数据文件是不会丢失的。
innodb引擎,就是15,理由:innodb把自增长ID记录存放入内存中,在重启数据库或者对表进行optimize操作,都会导致最大ID丢失 - Heap表是什么?
heap表存在于内存中,用于临时高速存储的。
(1)blob或者text字段是不允许的
(2)只能使用比较符号=,<,>,=>,= <
(3)heap不支持AUTO_INCREMENT
(4)索引不能为null - MySQL服务器端口号是什么?
MySQL默认端口号为3306 -
(1)MySQL是一款开源的软件,无需付费跟oracle相比,MySQL的优势是什么?
(2)操作简单、部署方便,用户可以根据应用的需求去定制数据库
(3)Mysql 的引擎是插件式 - 如何区分float和double?
浮点数为8位精度存储在float,并且有四个字节;
浮点数存储在double中,精度为18,有8个字节; - 区分CHAR_LENGTH和LENGTH?
CHAR_LENGTH是字符数,而LENGTH是字节数。Latin字符的这两个数据是相同的,但是对于Unicode和其他编码,它们是不同的 - 请简洁描述Mysql中InnoDB支持的四种事务隔离级别名称,以及逐级之间的区别?
SQL标准定义的四个隔离级别为:
read uncommited :读到未提交数据
read committed:脏读,不可重复读
repeatable read:可重读
serializable :串行事物 - 在Mysql中ENUM的用法是什么?
ENUM是一个字符串对象,用于指定一组预定义的值,并可在创建表时使用。
Create table size(name ENUM('Smail,‘Medium’,‘Large’); - CHAR和VARCHAR的区别?
CHAR和VARCHAR类型在存储和检索方面有所不同
CHAR列长度固定为创建表时声明的长度,长度值范围是1到255
当CHAR值被存储时,它们被用空格填充到特定长度,检索CHAR值时需删除尾随空格。 - 如何获取当前的Mysql版本?
SELECT VERSION();用于获取当前Mysql的版本。 - 列设置为AUTO INCREMENT时,如果在表中达到最大值,会发生什么情况?
它会停止递增,任何进一步的插入都将产生错误,因为密钥已被使用。 - Mysql查询是否区分大小写?
不区分 - Mysql如何优化DISTINCT?
DISTINCT在所有列上转换为GROUP BY,并与ORDER BY子句结合使用。 - NOW()和CURRENT_DATE()有什么区别?
NOW()命令用于显示当前年份,月份,日期,小时,分钟和秒。
CURRENT_DATE()仅显示当前年份,月份和日期。 - Mysql中有哪几种锁?
MyISAM支持表锁,InnoDB支持表锁和行锁,默认为行锁
表级锁:开销小,加锁快,不会出现死锁。锁定粒度大,发生锁冲突的概率最高,并发量最低
行级锁:开销大,加锁慢,会出现死锁。锁力度小,发生锁冲突的概率小,并发度最高