- 说说MySQL数据库中MyISAM类型表的特点?
答:
一个MYISAM类型的表中有三个文件,分别是索引文件、表结构文件、数据文件
MYISAM类型的表,不支持事务,但是每次查询都是原子操作
支持表级锁,每次操作都是对整个表加锁
会存储表的总行数
采用的是非聚集索引,索引文件的数据域存储指向数据文件的指针。辅索引与主索引基本一致,但是辅索引不用保证唯一性。 - 说说MySQL数据库中InnoDb类型表的特点?
答:一个InnoDb引擎存储在一个文件空间(共享表空间,表大小不受操作系统控制,一个表可能分布在多个文件里),也有可能为多个(设置为独立表空间,表大小受操作系统文件大小限制,一般为 2G),受操作系统文件大小的限制
支持ACID的事务,支持事务的四种隔离级别
支持行级锁及外键约束,因此可以支持写并发
不存储总行数
主键索引采用聚集索引(索引的数据域存储数据文件本身),辅索引的数据域存
储主键的值。因此从辅索引查找数据,需要先通过辅索引找到主键值,再访问主键索引(回表)。最好使用自增主键,防止插入数据时,为维持B+树结构,文件做大的调整 - 说说MySQL中InnoDB支持的四种事务隔离级别?
答:
read uncommited :读到未提交数据
read committed:读已提交数据
repeatable read:可重读
serializable :串行事务 - myisamchk是用来做什么的?
答:用来压缩 MyISAM 表,减少了磁盘或内存的使用。 - MyISAM Static 和 MyISAM Dynamic 有什么区别?
答:在 MyISAM Static 上的所有字段有固定宽度。MyISAM Dynamic就是有像 TEXT,BLOB这样的字段,用来适应不同长度的数据类型,简单说就是会变,就是动态的。所以MyISAM Static在受损情况下更容易恢复。 - 如果一个表有一列定义为TIMESTAMP,将发生什么?
答:每当行被更改时的时候,时间戳字段将获取当前时间戳。 - 列设置为AUTO INCREMENT时,如果在表中达到最大值,会发生什么情况?
答:它会停止递增,任何进一步的插入都将产生错误,因为密钥已经被使用了。 - 怎样才能找出最后一次插入时分配了哪个自动增量?
答:LAST_INSERT_ID 将返回由Auto_increment分配的最后一个值,并且不需要指
定表名称。 - 怎么看到为表格定义的所有索引?
答: SHOW INDEX FROM +< tablename >。 - 说说NOW()和CURRENT_DATE()有什么区别?
答:NOW()命令可以显示当前年份,月份,日期,小时,分钟和秒,而CURRENT_DATE()只会h显示当前年份,月份和日期。