1. 程式人生 > >Mysql有關的資料庫面試題

Mysql有關的資料庫面試題

1.資料庫事務的四個特性:    原子性,一致性,隔離性,永續性2.檢視的作用: 檢視是虛擬的表,與包含資料的表不一樣,檢視只包含使用時動態檢索資料的查詢;不包含任何列或資料。使用檢視可以簡化複雜的sql操作,隱藏具體的細節,保護資料;檢視建立後,可以使用與表相同的方式利用它們。檢視不能被索引,也不能有關聯的觸發器或預設值,如果檢視本身內有order by 則對檢視再次order by將被覆蓋。3.drop,delete與truncate的區別:drop直接刪除表truncate刪除表中的資料,再插入時自增長id又從1開始delete刪除表中的資料,可以加where語句delete語句刪除過程是每次從表中刪除一行,刪除操作記錄在日誌中儲存,可以進行回滾操作truncate table一次性從表中刪除所有資料並不把單獨的刪除操作記錄日誌,刪除行是不能恢復的,刪除的過程中不會啟用與表有關的刪除觸發器,執行速度快表和索引所佔空間,當表被truncate後,這個表和索引所佔的空間會恢復到初始大小,而delete操作不會減少表或索引所佔的空間,drop語句將表所佔的空間全部釋放掉一般而言, drop>truncate>delete應用範圍:truncate 只能對table    delete可以是table和viewtruncate和delete是隻刪除資料,而drop則刪除整個表(機構和資料).如果和事務無關用truncate來實現,如果有關或者想觸發trigger,還是用delete4.B樹 建立索引可以大大的提高系統的效能第一:建立唯一性索引,可以保證資料庫中每一行的唯一性第二:可以加快檢索速度,建立索引的主要原因第三:可以加速表與表之間的連線,特別在實現資料的參考完整性方面特別有意義第四:使用分組或排進行檢索,同樣可以減少時間第五:通過使用索引,可以在查詢過程中,使用了優化隱匿器,提高系統的效能5.增加索引不利的地方第一:建立和維護索引需要事假,這種時間隨著資料量的增加而增加第二:索引需要佔用物理空間第三:當對資料表進行增刪改的時候,索引也要動態維護,這樣降低了資料的維護速度6.資料庫的優化思路    1.SQL語句優化        應儘量避免在where句子中使用!=或<>操作符,否則將引擎放棄使用索引而進行全表掃描        應儘量避免在where 句子中進行null值判斷,否則將引擎放棄使用索引而進行全表掃描        select id from t where num is null 改 select id from t where num=0        很多時候可以用exists代替in是一個好的選擇        用where 語句 代替having語句  因為having只會在檢索出所有記錄之後才對結果集進行過濾
    2.上面的索引優化    3.資料庫結構優化:         正規化優化(消除成餘 節省空間)   反正規化優化(減少join)      拆分表 (垂直拆分和水平拆分)