1. 請簡潔描述 MySQL 中 InnoDB 支持的四種事務(wù)隔離級(jí)別名稱,以及逐級(jí)之間的區(qū)別?
SQL 標(biāo)準(zhǔn)定義的四個(gè)隔離級(jí)別為:
read uncommited :讀到未提交數(shù)據(jù)
read committed:臟讀,不可重復(fù)讀
repeatable read:可重讀
serializable :串行事物
2. 在 MySQL 中 ENUM 的用法是什么?
ENUM 是一個(gè)字符串對象,用于指定一組預(yù)定義的值,并可在創(chuàng)建表時(shí)使用。
SQL 語法如下:
Create table size(name ENUM('Smail,'Medium','Large');
3. CHAR 和 VARCHAR 的區(qū)別?
CHAR 和 VARCHAR 類型在存儲(chǔ)和檢索方面有所不同。
CHAR 列長度固定為創(chuàng)建表時(shí)聲明的長度,長度值范圍是 1 到 255。
當(dāng) CHAR 值被存儲(chǔ)時(shí),它們被用空格填充到特定長度,檢索 CHAR 值時(shí)需刪除尾隨
空格。
4. 列的字符串類型可以是什么?
字符串類型是:SET
BLOB
ENUM
CHAR
TEXT
VARCHAR
5. MySQL 中使用什么存儲(chǔ)引擎?
存儲(chǔ)引擎稱為表類型,數(shù)據(jù)使用各種技術(shù)存儲(chǔ)在文件中。
技術(shù)涉及:
Storage mechanism
Locking levels
Indexing
Capabilities and functions.
6. TIMESTAMP 在 UPDATE CURRENT_TIMESTAMP 數(shù)據(jù)類型上做什么?
創(chuàng)建表時(shí) TIMESTAMP 利用 Zero 更新。只要表中的其他字段發(fā)生更改,UPDATECURRENT_TIMESTAMP 修飾符就將時(shí)間戳字段更新為當(dāng)前時(shí)間。
7. 主鍵和候選鍵有什么區(qū)別?
表格的每一行都有主鍵唯一標(biāo)識(shí), 一個(gè)表只有一個(gè)主鍵。主鍵也是候選鍵。按照慣例,候選鍵可以被指定為主鍵,并且可以用于任何外鍵引用。
8. MySQL 數(shù)據(jù)庫服務(wù)器性能分析的方法命令有哪些?
Show status 一些值得監(jiān)控的變量值:
Bytesreceived 和 Bytessent 和服務(wù)器之間來往的流量。 Com 服務(wù)器正在執(zhí)行的命令。 Created 在查詢執(zhí)行期限間創(chuàng)建的臨時(shí)表和文件。 Handler 存儲(chǔ)引擎操作。 Select 不同類型的聯(lián)接執(zhí)行計(jì)劃。 Sort_* 幾種排序信息。 Show session status like ‘Select’; Show profiles SETprofiling=1; Show profilesG Show profile;
9. LIKE 和 REGEXP 操作有什么區(qū)別?
LIKE 和 REGEXP 運(yùn)算符用于表示 ^ 和%。
SELECT * FROM <tablename> WHERE * REGEXP "^b";
SELECT * FROM <tablename> WHERE * LIKE "%b";
10. BLOB 和 TEXT 有什么區(qū)別?
BLOB
BLOB 是一個(gè)二進(jìn)制對象,可以容納可變數(shù)量的數(shù)據(jù)。有四種類型的 BLOB TINYBLOB
BLOB MEDIUMBLOB 和? LONGBLOB
它們只能在所能容納價(jià)值的最大長度上有所不同。
TEXT
TEXT 是一個(gè)不區(qū)分大小寫的 BLOB。四種 TEXT 類型
TINYTEXT
TEXT
MEDIUMTEXT 和
LONGTEXT
它們對應(yīng)于四種 BLOB 類型,并具有相同的最大長度和存儲(chǔ)要求。BLOB 和 TEXT 類型之間的唯一區(qū)別在于對 BLOB 值進(jìn)行排序和比較時(shí)區(qū)分大小寫,對 TEXT 值不區(qū)分大小寫。
11. 數(shù)據(jù)庫的三范式?
第一范式:數(shù)據(jù)庫表的每一個(gè)字段都是不可分割的。
第二范式:數(shù)據(jù)庫表中的非主屬性只依賴于主鍵。
第三范式:不存在非主屬性對關(guān)鍵字的傳遞函數(shù)依賴關(guān)系。
12. MySQL 表中允許有多少個(gè) TRIGGERS?
在 MySQL 表中允許有六個(gè)觸發(fā)器,如下:
BEFORE INSERT
AFTER INSERT
BEFORE UPDATE
AFTER UPDATE
BEFORE DELETE and
AFTER DELETE
13. 什么是通用 SQL 函數(shù)?
數(shù)學(xué)函數(shù)
Abs(num)求絕對值
floor(num)向下取整
ceil(num)向上取整
字符串函數(shù)
insert (s1,index,length,s2) 替換函數(shù)
S1 表示被替換的字符串o s2 表示將要替換的字符串
Index 表示被替換的位置, 從 1 開始
Lebgth 表示被替換的長度
upper(str),ucase(str)將字母改為大寫
lower(str),lcase(str)將字母改為小寫
left(str,length)返回 str 字符串的前 length 個(gè)字符
right(str,length)返回 str 字符串的后 length 個(gè)字符
substring(str,index,length)返回 str 字符串從 index 位開始長度為
length 個(gè)字符(index 從 1 開始)
reverse(str)將 str 字符串倒序輸出
日期函數(shù)
curdate()、current_date( ) 獲取當(dāng)前日期
curtime()、current_time( ) 獲取當(dāng)前日期
now()獲取當(dāng)前日期和時(shí)間
datediff(d1、d2)d1 和 d2 之間的天數(shù)差
adddate(date,num)返回 date 日期開始,之后 num 天的日期
subdate(date,num)返回 date 日期開始,之前 num 天的日期聚合函數(shù)
Count(字段)根據(jù)某個(gè)字段統(tǒng)計(jì)總記錄數(shù)(當(dāng)前數(shù)據(jù)庫保存到多少條數(shù)據(jù))
sum(字段)計(jì)算某個(gè)字段的數(shù)值總和
avg(字段)計(jì)算某個(gè)字段的數(shù)值的平均值
Max(字段)、min(字段)求某個(gè)字段最大或最小值
14. MySQL 中有哪幾種鎖?
MyISAM 支持表鎖,InnoDB 支持表鎖和行鎖,默認(rèn)為行鎖。
表級(jí)鎖:開銷小,加鎖快,不會(huì)出現(xiàn)死鎖。鎖定粒度大,發(fā)生鎖沖突的概率最高,并發(fā)量最低。
行級(jí)鎖:開銷大,加鎖慢,會(huì)出現(xiàn)死鎖。鎖力度小,發(fā)生鎖沖突的概率小,并發(fā)度最高。
【關(guān)注】轉(zhuǎn)發(fā)了解更多內(nèi)容






