[select *] 和[select 全部字段]的 2 種寫法有何優缺點?
1. 前者要解析資料字典,後者不需要
2. 結果輸出順序,前者與建表列順序相同,後者按指定字段順序。
3. 表字段改名,前者不需要修改,後者需要改
4. 後者可以建立索引進行優化,前者無法優化
5. 後者的可讀性比前者要高所以,
盡量使用後者來查詢
若一張表中只有乙個字段 varchar(n)型別,utf8 編碼,則 n 最大值為多少?
由於 utf8 的每個字元最多占用 3個位元組。而 mysql 定義行的長度不能超過65535(text和blob不計算在內),
因此 n 的最大值計算方法為:(
65535-1-2)/3
。減去
1 的原因是實際儲存從第二個位元組開始,減去 2 的原因是因為要在列表長度儲存實際的字元長度(長度大於256用兩個位元組儲存),除以 3 是因為 utf8 限制:每個字元最多占用 3 個位元組。
mysql 中 innodb 引擎的行鎖是通過加在什麼上完成(或稱實現)的?
innodb 行鎖是通過給索引上的索引項加鎖來實現的,這一點 mysql 與oracle 不同,後者是通過在資料塊中對相應資料行加鎖來實現的。innodb 這種行鎖實現特點意味著:只有通過索引條件檢索資料,innodb 才使用行級鎖,否則,innodb 將使用表鎖
mysql 中 myisam 與 innodb 的區別?
myisam:1.5.5版本前預設使用myisam引擎
2.支援表級鎖,不支援事務,不支援行級鎖,不支援外來鍵
3.檔案儲存為3個檔案,資料,搜尋目錄,表結構
innodb:
1.5.6後預設使用innodb引擎
2.支援表級鎖,行級鎖,支援事務,支援外來鍵
3,檔案存為2個檔案,資料和搜尋目錄,表結構
請簡述常用的索引有哪些種類?
普通索引:即針對資料庫表建立索引
唯一索引:與普通索引類似,不同的就是:mysql資料庫索引列的值必須唯一,但允許有空值
主鍵索引:它是一種特殊的索引,不允許有空值,一般是在建立表的時候同時建立主鍵索引
組合索引:將資料庫表中的多個字段聯合起來作為乙個組合索引,遵循最左字首規則
資料庫三正規化(老生常談)
第一正規化(1nf):字段具有原子性,不可再分。(所有關係型資料庫系統都滿足第一正規化資料庫表中的字段都是單一屬性的,不可再分) => 關於列的設計
第二正規化(2nf)是在第一正規化(1nf)的基礎上建立起來的,即滿足第二正規化(2nf)必須先滿足第一正規化(1nf)。要求資料庫表中的每個例項或行必須可以被惟一地區分。=> 關於行的設計 通常需要為表加上乙個列,以儲存各個例項的惟一標識。這個惟一屬性列被稱為主關鍵字或主鍵。
滿足第三正規化(3nf)必須先滿足第二正規化(2nf)。簡而言之,第三正規化(3nf)要求乙個資料庫表中不包含已在其它表中已包含的非主關鍵字資訊。
三大正規化具有如下特徵:
每一列只有乙個值 >>2. 每一行都能區分。 >>3. 每乙個表都不包含其他表已經包含的非主關鍵字資訊
Mysql常見面試題
參考博文 innodb引擎中的索引型別 聚集索引 每張表都會他們的主鍵建立一顆b 樹索引,並且在葉子節點上會存放對應主鍵的行記錄。輔助索引 非聚集索引 對非主鍵列建立的b 樹索引,葉子節點存放了索引值和書籤,這個書籤就是對應的主鍵值。那之後可以通過這個主鍵值找到對應的行記錄。聯合索引 對兩個或者兩個...
mysql常見面試題
索引是一種資料結構,使用索引可以提高查詢效率。1.hash索引 2.b 樹索引 1.hash索引查詢更快,使用hash函式一次查詢,但是無法進行範圍查詢,不支援排序 2.b 樹索引有logn級別的查詢速度,支援範圍查詢,支援排序 1.大資料量 2.頻繁使用字段 一組sql語句,要麼同時成功,要麼同時...
mysql常見面試題
1.資料庫的儲存引擎有哪些?myisam與innodb的區別?2.三正規化指的是哪三正規化?3.什麼是事物?有那些特點?事物的隔離級別有那些?mysql的預設隔離級別有哪些?4.髒讀 幻讀 不可重複讀指的是什麼?5.資料庫優化 5.1 什麼是資料庫索引?資料庫索引有哪些型別?5.2 資料庫索引b t...