標籤:ar 使用 sp strong on 檔案 資料 bs as
1.sql語句應該考慮哪些安全性?
1.防止sql注入,對特殊字元進行轉義,過濾或者使用先行編譯的sql語句綁定變數。
2.最小許可權原則,特別是不要用root賬戶,為不同的類型的動作或者組建使用不同的賬戶。
3.當sql運行出錯時,不要把資料庫返回的錯誤資訊全部顯示給使用者,以防止泄漏伺服器和資料庫相關資訊。
2.簡單描述mysql中,索引,主鍵,唯一索引,聯合索引的區別,對資料庫的效能有什麼影響。
索引是一種特殊的檔案(InnoDB資料表上的索引是資料表空間的一個組成部分),它們包含著對資料表裡所有記錄的引用指標。
普通索引(由關鍵字KEY或INDEX定義的索引)的唯一任務是加快對資料的訪問速度。
普通索引允許被索引的資料列包含重複的值,如果能確定某個資料列只包含彼此各不相同的值,在為這個資料索引建立索引的時候就應該用關鍵字UNIQE把它定義為一個唯一所以,唯一索引可以保證資料記錄的唯一性。
主鍵,一種特殊的唯一索引,在一張表中只能定義一個主鍵索引,逐漸用於唯一標識一條記錄,是用關鍵字PRIMARY KEY來建立。
索引可以覆蓋多個資料列,如像INDEX索引,這就是聯合索引。
索引可以極大的提高資料的查詢速度,但是會降低插入刪除更新表的速度,因為在執行這些寫操作時,還要操作索引檔案。
3.一張表,裡面有ID自增主鍵,當insert了17條記錄之後,刪除了第15,16,17條記錄,再把Mysql重啟,再insert一條記錄,這條記錄的ID是18還是15 ?
如果表的類型是MyISAM,那麼是18。
因為MyISAM表會把自增主鍵的最大ID記錄到資料檔案裡,重啟MySQL自增主鍵的最大ID也不會丟失。
如果表的類型是InnoDB,那麼是15。
InnoDB表只是把自增主鍵的最大ID記錄到記憶體中,所以重啟資料庫或者是對錶進行OPTIMIZE操作,都會導致最大ID丟失。
4.請簡述項目中最佳化sql語句執行效率的方法,從哪些方面。sql語句效能如何分析?
1.盡量選擇較小的列
2.將where中用的比較頻繁的欄位建立索引
3.select子句中避免使用‘*’
4.避免在索引列上使用計算,not,in和<>等操作
5.當只需要一行資料的時候使用limit 1
6.保證表單資料不超過200w,適時分割表
針對查詢較慢的語句,可以使用explain來分析該語句具體的執行情況
5.mysql_fetch_row()和mysql_fetch_array()的區別
這兩個函數,返回的都是一個數組,區別就是第一個函數返回的數組是只包含值,我們只能$row[0],$row[1],這樣以數組下標來讀取資料,而mysql_fetch_array()返回的數組既包含第一種,也包含索引值對的形式,我們可以這樣讀取資料,(假如資料庫的欄位是 username,passwd):$row[‘username‘], $row[‘passwd‘。
總結的一些MySQL資料庫面試題