總結的一些MySQL資料庫面試題

2021-07-13 14:19:02 字數 1451 閱讀 2222

一、sql語句應該考慮哪些安全性?

(1)防止sql注入,對特殊字元進行轉義,過濾或者使用預編譯的sql語句繫結變數。

(2)最小許可權原則,特別是不要用root賬戶,為不同的型別的動作或者組建使用不同的賬戶。

(3)當sql執行出錯時,不要把資料庫返回的錯誤資訊全部顯示給使用者,以防止洩漏伺服器和資料庫相關資訊。

二、簡單描述mysql中,索引,主鍵,唯一索引,聯合索引的區別,對資料庫的效能有什麼影響。

(1)索引是一種特殊的檔案(innodb資料表上的索引是表空間的乙個組成部分),它們包含著對資料表裡所有記錄的引用指標。

(2)普通索引(由關鍵字key或index定義的索引)的唯一任務是加快對資料的訪問速度。

(3)普通索引允許被索引的資料列包含重複的值,如果能確定某個資料列只包含彼此各不相同的值,在為這個資料索引建立索引的時候就應該用關鍵字uniqe把它定義為乙個唯一所以,唯一索引可以保證資料記錄的唯一性。

(4)主鍵,一種特殊的唯一索引,在一張表中只能定義乙個主鍵索引,逐漸用於唯一標識一條記錄,是用關鍵字primary key來建立。

(5)索引可以覆蓋多個資料列,如像index索引,這就是聯合索引。

(6)索引可以極大的提高資料的查詢速度,但是會降低插入刪除更新表的速度,因為在執行這些寫操作時,還要操作索引檔案。

三、一張表,裡面有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丟失。

四、請簡述專案中優化sql語句執行效率的方法,從哪些方面。sql語句效能如何分析?

(1)盡量選擇較小的列

(2)將where中用的比較頻繁的字段建立索引

(3)select子句中避免使用『*』

(4)避免在索引列上使用計算,not,in和<>等操作

(5)當只需要一行資料的時候使用limit 1

(6)保證表單資料不超過200w,適時分割表

(7)針對查詢較慢的語句,可以使用explain來分析該語句具體的執**況

五、mysql_fetch_row()和mysql_fetch_array()的區別

這兩個函式,返回的都是乙個陣列,區別就是第乙個函式返回的陣列是只包含值,我們只能row[0],row[1],這樣以陣列下標來讀取資料,而mysql_fetch_array()返回的陣列既包含第一種,也包含鍵值對的形式,我們可以這樣讀取資料,(假如資料庫的字段是 username,passwd):row[『username『],row[『passwd『。

資料庫的一些面試常識

1 請說出關係型資料庫的典型產品 特點及應用場景?sqlserver 特點 真正的客戶機 伺服器體系結構 圖形化使用者介面 豐富的程式設計介面工具 與windows nt完全整合 具有很好的伸縮性 應用場景 主機為windows系統,主要應用於web 的建設,承載中小型web後台資料。mysql m...

mySql資料庫的一些操作

mysql下讀取表中字段的說明和備註資訊 在mysql下執行完下面這個建表語句後。如何從資料字典中,檢索出這個表的字段的相關資訊?drop table if exists test table create table test table test id int not null auto inc...

關於資料庫鎖的一些總結

在總結資料庫鎖之前先闡述一下 資料庫的集中隔離級別以及它們分別能避免哪些問題 1.未提交讀,最低階的隔離級別,不能避免丟失更新以及髒讀。2.提交讀,可以避免丟失更新以及髒讀。3.可重複讀,可以避免不可重複讀。4.可序列化,可以避免幻影讀。mysql預設級別是3,mysql的兩大主要引擎,1是inno...