1. 數(shù)據(jù)庫的三范式是什么
- 第一范式:強調(diào)的是列的原子性兰伤,即數(shù)據(jù)庫表的每一列都是不可分割的原子數(shù)據(jù)項吻育。
- 第二范式:要求實體的屬性完全依賴于主關鍵字扼雏。所謂完全 依賴是指不能存在僅依賴主關鍵字一部分的屬性礼饱。
- 第三范式:任何非主屬性不依賴于其它非主屬性作郭。
2. MySQL支持哪些存儲引擎
MySQL 支持多種存儲引擎,比如 InnoDB,MyISAM,Memory,Archive 等等.在大多數(shù)的情況下,直接選擇使用 InnoDB 引擎都是最合適的,InnoDB 也是 MySQL 的默認存儲引擎哨查。
MyISAM 和 InnoDB 的區(qū)別有哪些:
- InnoDB 支持事務逗抑,MyISAM 不支持
- InnoDB 支持外鍵,而 MyISAM 不支持
- InnoDB 是聚集索引寒亥,數(shù)據(jù)文件是和索引綁在一起的邮府,必須要有主鍵,通過主鍵索引效率很高溉奕;MyISAM 是非聚集索引褂傀,數(shù)據(jù)文件是分離的,索引保存的是數(shù)據(jù)文件的指針加勤,主鍵索引和輔助索引是獨立的仙辟。
- Innodb 不支持全文索引同波,而 MyISAM 支持全文索引,查詢效率上 MyISAM 要高叠国;
- InnoDB 不保存表的具體行數(shù)未檩,MyISAM 用一個變量保存了整個表的行數(shù)。
- MyISAM 采用表級鎖(table-level locking)粟焊;InnoDB 支持行級鎖(row-level locking)和表級鎖,默認為行級鎖冤狡。