1.一张表,里面有ID自增主键,当insert了17条记录之后,删除了第15,16,17条记录,再把Mysql重启,再insert一条记录,这条记录的ID是18还是15?
答:(1)如果表的类型是MyISAM,那么是18。因为MyISAM会把自增主键的最大ID记录到数据库文件夹,重启Mysql自增主键的最大ID也不会丢失。
(2)如果表的类型是InnoDB,那么是15。因为InnoDB表只是把自增主键的最大ID记录到内存中,所以重启数据库或者是对表进行OPTIMIZE操作,都会导致最大ID丢失。
2.Mysql的技术特点是什么?
答:Mysql数据库软件是一个客户端或服务器系统,其中包括:支持各种客户端程序和库的多线程SQL服务器、不同的后端、广泛的应用程序编程接口和管理工具。
3.Heap表是什么?
答:(1)BLOB或TEXT字段是不允许的
(2)只能使用比较运算符=,<,>,=>,=<
(3)HEAP表不支持AUTO_INCREAMENT
(4)索引不可为null
4.Mysql服务器默认端口是什么?
答:3306
5.与oracle相比,Mysql有什么优势?
答:(1)MySQL是开源软件,随时可用,无需付费
(2)MySQL是便携式的
(3)带有命令提示符的GUI
(4)使用MySQL查询浏览器支持管理
6.如何区分float和double的区别
答:(1)浮点数以8位精度存储在float中并且有四个字节
(2)浮点数存储在double中,精度为18位,有八个字节
7.区分CHAR_LENGTH和LENGTH?
答:(1)Char_length是字符数,而length是字节数。
(2)latin字符的这两个数据是相同的,但是对于Unicode和其他编码,他们是不同的。
8.请简洁描述MySQL中InnoDB支持的四种事务隔离级别名称,以及逐级之间的区别?
Read uncommitted :读到未提交数据
在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用,因为他的性能也不比其他级别好多少。读取未提交的数据也被称之为脏读。
Read committed:脏读,不可重复读
这是大多数数据库系统默认隔离级别(但不是MySQL默认的),它满足了隔离的简单定义:一个事务只能看见已经提交事务所做的改变。这种隔离级别也支持所谓的不可重复读。
Repeatable read:可重读
这是MySQL默认的事务隔离级别,它确保同一事务的多个实例在并发读取数据时,会看到同样的数据行。不过理论上,这会导致另一个棘手的问题,幻读。简单的说,幻读指当用户读取某一范围的数据行时,另一个事务又在该范围内插入了新行,当用户再读取该范围的数据行时,会发现有新的幻影行 InnoDB和Falcon存储引擎通过多版本并发控制(MVCC Multiversion Concurrency Control 间隙锁)机制解决了该问题。注:其实多版本只是解决不可重复读问题,而加上间隙锁(也就是这所谓的并发控制)才解决了幻读问题。
serializable:串行事务
这是最高的隔离级别,它通过强制事务排序,使之不可能相互冲突,从而解决幻读问题。简言之它是在每个读的数据行上加上共享锁。在这个级别,可能导致大量的超时现象和锁竞争。