資料庫知識學習以及面試集錦 MySQL

2021-10-04 21:44:47 字數 1966 閱讀 3544

資料庫事務及事務的四大特徵簡述

答:acid,原子性,一致性,隔離性,永續性,參考

mysql是框架架構簡述

答:包括客戶端連線管理,使用執行緒池,查詢快取,解析查詢器,優化器,儲存引擎

mysql邏輯架構整體分為三層,最上層為客戶端層,並非mysql所獨有,諸如:連線處理、授權認證、安全等功能均在這一層處理。mysql大多數核心服務均在中間這一層,包括查詢解析、分析、優化、快取、內建函式(比如:時間、數學、加密等函式)。所有的跨儲存引擎的功能也在這一層實現:儲存過程、觸發器、檢視等。最下層為儲存引擎,是資料庫底層軟體組織,資料庫管理系統(dbms)使用資料引擎進行建立、查詢、更新和刪除資料。不同的儲存引擎提供不同的儲存機制、索引技巧、鎖定水平等功能,常見有innodb, myisam和memory三種儲存引擎。

簡述mysql整個查詢執行過程

答:總的來說分為5個步驟:

客戶端向mysql伺服器傳送一條查詢請求

伺服器首先檢查查詢快取,如果命中快取,則立刻返回儲存在快取中的結果。否則進入下一階段

伺服器進行sql解析、預處理、再由優化器生成對應的執行計畫

mysql根據執行計畫,呼叫儲存引擎的api來執行查詢

將結果返回給客戶端,同時快取查詢結果

簡述常見的資料庫儲存引擎

innodb的應用場景:需要事務支援(具有較好的事務特性),支援行級鎖定,支援高併發,但需要確保查詢是通過索引完成,資料更新較為頻繁的場景,資料一致性要求較高,硬體裝置記憶體較大,可以利用innodb較好的快取能力來提高記憶體利用率,盡可能減少磁碟 io

myisam的應用場景:不需要事務支援(不支援),併發相對較低(鎖定機制問題),資料修改相對較少(阻塞問題), 以讀為主,資料一致性要求不是非常高

memory的應用場景: 主要儲存一些需要快速訪且非關鍵資料,所有資料均儲存在記憶體中

innodb

myisam

memory

支援事務操作

不支援事務操作

資料存放在記憶體中

支援行級鎖

支援表鎖

併發量更大

併發性低很多

支援外來鍵

不支援外來鍵

不支援外來鍵

簡述主鍵、外來鍵的區別

關係型資料庫中的一條記錄中有若干個屬性,若其中某乙個屬性組(注意是組)能唯一標識一條記錄,該屬性組就可以成為乙個主鍵。外來鍵用於與另一張表的關聯。是能確定另一張表記錄的字段,用於保持資料的一致性。定義主鍵和外來鍵主要是為了維護關聯式資料庫的完整性。參考

簡述資料庫正規化

資料庫總共三正規化;

第一正規化(1nf),資料表的每個字段(屬性/列)必須是唯一的、不可分割的。

第二正規化(2nf),資料表的每條記錄必須是唯一的(主鍵約束),且非主鍵欄位只依賴於主鍵。

第三正規化(3nf),資料表中不應該存在多餘的字段,也就是說每個欄位都不能由其他字段推理得到。

基本的mysql語句

詳見mysql必知必會,w3school教程

資料庫儲存過程簡述

資料庫儲存過程是乙個預編譯的**塊,執行效率比較高(由於資料庫執行動作時,是先編譯後執行的。然而儲存過程是乙個編譯過的**塊,所以執行效率要比t-sql語句高。)

資料庫索引及優缺點

在資料之外,資料庫系統還維護著滿足特定查詢演算法的資料結構,這些資料結構以某種方式引用(指向)資料,這樣就可以在這些資料結構上實現高階查詢演算法。這種資料結構,就是索引。

為表設定索引要付出代價的:一是增加了資料庫的儲存空間(因為存放索引要佔據物理空間),二是在插入和修改資料時要花費較多的時間(因為索引也要隨之變動)。參考

面試集錦(七)資料庫

最有效的方法,採用預編譯指令集 使用正規表示式過濾引數 字串過濾或替換 前端判斷是否有非法字元,尋找出能sql注入的地方 列中有空值不建索引 使用短索引 對where子句使用的列建立索引 多個列where或order by的建立組合索引 對like語句,開頭不用結尾用 最左不用原則 why 索引相當...

資料庫面試知識

1.資料庫的正規化 正規化 英文名稱是 normal form,它是英國人 e.f.codd 關聯式資料庫的老祖宗 在上個世紀70年代提出關聯式資料庫模型後總結出來的,正規化是關聯式資料庫理論的基礎,也是我們在設計資料庫結構過程中所要遵循的規則和指導方法。目前有跡可尋的共有8種正規化,依次是 1nf...

My安卓知識1 SQLite資料庫

2016年五月份到六月份做了乙個小專案,關於android的,想記錄一下學到的一些知識,做成乙個小系列吧,算是對自己這乙個多月來的見證。首先說明,這些知識也都是從網上各處學習來的,我自己做了一些小整理。1.sqlite資料庫 之前用的資料庫是mysql和sqlserver,還用過oracle,雖然不...