1.一張表,里面有 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 丟失,
2.Mysql 的技術特點是什么?
Mysql 資料庫軟體是一個客戶端或服務器系統,
其中包括:支持各種客戶端程式和庫的多執行緒 SQL 服務器、不同的后端、廣泛的應用程式編程介面和管理工具,
3.Heap 表是什么?
HEAP 表存在于記憶體中,用于臨時高速存盤,
- BLOB 或 TEXT 欄位是不允許的
- 只能使用比較運算子=,<,>,=>,= <
- HEAP 表不支持 AUTO_INCREMENT
- 索引不可為 NULL
4.Mysql 服務器默認埠是什么?
Mysql 服務器的默認埠是 3306,
5.與 Oracle 相比,Mysql 有什么優勢?
Mysql 是開源軟體,隨時可用,無需付費,
Mysql 是便攜式的,
帶有命令提示符的 GUI,
使用 Mysql 查詢瀏覽器支持管理,
6.如何區分 FLOAT 和 DOUBLE?
以下是 FLOAT 和 DOUBLE 的區別:
浮點數以 8 位精度存盤在 FLOAT 中,并且有 四 個位元組,
浮點數存盤在 DOUBLE 中,精度為 18 位,有 八 個位元組,
7.區分 CHAR_LENGTH 和 LENGTH?
CHAR_LENGTH 是字符數,而 LENGTH 是位元組數,
Latin 字符的這兩個資料是相同的, 但是對于 Unicode 和其他編碼,它們是不同的,
8.請簡潔描述 Mysql 中 InnoDB 支持的四種事務隔離級別名 稱,以及逐級之間的區別?
SQL 標準定義的四個隔離級別為:
read uncommited :讀到未提交資料
read committed:臟讀,不可重復讀
repeatable read:可重讀
serializable :串行事物


9.在 Mysql 中 ENUM 的用法是什么?
ENUM 是一個字串物件,用于指定一組預定義的值,并可在創建表時使用,
Create table size(name ENUM('Smail,'Medium','Large');
10.如何定義 REGEXP?
REGEXP 是模式匹配,其中匹配模式在搜索值的任何位置,
11.CHAR 和 VARCHAR 的區別?
以下是 CHAR 和 VARCHAR 的區別:
CHAR 和 VARCHAR 型別在 存盤 和 檢索 方面有所不同
CHAR 列長度固定為創建表時宣告的長度,長度值范圍是 1 到 255
當 CHAR 值被存盤時,它們被用空格填充到特定長度,檢索 CHAR 值時需洗掉尾隨空格,
12.列的字串型別可以是什么?
字串型別是:
SET
BLOB
ENUM
CHAR
TEXT
VARCHAR
13.如何獲取當前的 Mysql 版本?
SELECT VERSION();用于獲取當前 Mysql 的版本,
14.Mysql 中使用什么存盤引擎?
存盤引擎稱為表型別,資料使用各種技術存盤在檔案中,
技術涉及:
Storage mechanism
Locking levels
Indexing
Capabilities and functions.
15.Mysql 驅動程式是什么?
以下是 Mysql 中可用的驅動程式:
PHP 驅動程式
JDBC 驅動程式
ODBC 驅動程式
CWRAPPER
PYTHON 驅動程式
PERL 驅動程式
RUBY 驅動程式
CAP11PHP 驅動程式
Ado.net5.mxj
16.TIMESTAMP 在 UPDATE CURRENT_TIMESTAMP 資料 型別上做什么?
創建表時 TIMESTAMP 列用 Zero 更新,
只要表中的其他欄位發生更改,UPDATE CURRENT_TIMESTAMP 修飾符就將時間戳欄位更新為當前時間,
17.主鍵和候選鍵有什么區別?
表格的每一行都由主鍵唯一標識,一個表只有一個主鍵,
主鍵也是候選鍵,
按照慣例,候選健可以被指定為主鍵,并且可以用于任何外鍵參考,
18.如何使用 Unix shell 登錄 Mysql?
# [mysql dir]/bin/ mysql -h hostname -u <UserName> -p <password>
19.myisatchk 是用來做什么的?
它用來壓縮 MyISAM 表,這減少了磁盤或記憶體使用,
20.MYSQL 資料庫服務器性能分析的方法命令有哪些?
Show status 一些值得監控的變數值:
Bytes_received和Bytes_sent
和服務器之間來往的流量,
Com_*
服務器正在執行的命令,
Created_*
在查詢執行期限間創建的臨時表和檔案,
?Hancler_*
存盤引擎操作,
Select_*
不同型別的聯接執行計劃,
?Sort_*
幾種排序資訊,
Show session status like 'Select':
Show profiles
SET profiling=1;
Show profiles \ G
Show profile;
21.如何控制 HEAP 表的最大尺寸?
Heal 表的大小可通過稱為 max_heap_table_size 的 Mysql 配置變數來控制,
22.MyISAM Static 和 MyISAM Dynamic 有什么區別?
在MyISAM Static 上的所有欄位有固定寬度,動態 MyISAM 表將具有像 TEXT,BLOB
等欄位,以適應不同長度的資料型別,點擊這里有一套最全阿里面試題總結,
MyISAM Static 在受損情況下更容易恢復
23.federated 表是什么?
federated 表,允許訪問位于其他服務器資料庫上的表,
24.如果一個表有一列定義為 TIMESTAMP,將發生什么?
每當行被更改時,時間戳欄位將獲取當前時間戳,
25.列設定為 AUTO INCREMENT 時,如果在表中達到最大值,會發生什么情況?
它會停止遞增,任何進一步的插入都將產生錯誤,因為密鑰已被使用,
26.怎樣才能找出最后一次插入時分配了哪個自動增量?
LAST_INSERT_ID 將回傳由 Auto_increment 分配的最后一個值,并且不需要指定表名稱,
27.你怎么看到為表格定義的所有索引?
索引是通過以下方式為表格定義的:
SHOW INDEX FROM <tablename>;
28.LIKE 宣告中的 % 和 _ 是什么意思?
%對應于0個或更多字符,_ 只是 LIKE 陳述句中的一個字符,
29.如何在 Unix 和 Mysql 時間戳之間進行轉換?
UNIX_TIMESTAMP 是從 Mysql 時間戳轉換為 Unix 時間戳的命令
FROM_UNIXTIME 是從 Unix 時間戳轉換為 Mysql 時間戳的命令
30.列對比運算子是什么?
在 SELECT 陳述句的列比較中使用 =,<>,<=,<,> =,>,<<, >>, <=> , AND, OR 或 LIKE 運算子,
31. 我們如何得到受查詢影響的行數?
行數可以通過以下代碼獲得:
SELECT COUNT(user_id)FROM users;
32. Mysql 查詢是否區分大小寫?
不區分
SELECT VERSION(), CURRENT_DATE;
SeLect version(), current_date;
seleCt vErSiOn(), current_ DATE;
所有這些例子都是一樣的,Mysql 不區分大小寫,
33. LIKE 和 REGEXP 操作有什么區別?
LIKE 和 REGEXP 運算子用于表示 ^ 和 %,
SELECT * FROM employee WHERE emp_name REGEXP "^b";
SELECT * FROM employee WHERE emp_name LIKE "%b";
34. BLOB 和 TEXT 有什么區別?
BLOB 是一個二進制物件,可以容納可變數量的資料,
有四種型別的 BLOB -
TINYBLOB
BLOB
MEDIUMBLOB
LONGBLOB
它們只能在所能容納價值的最大長度上有所不同,
TEXT 是一個不區分大小寫的 BLOB,
四種 TEXT 型別
TINYTEXT
TEXT
MEDIUMTEXT
LONGTEXT
它們對應于四種 BLOB 型別,并具有相同的最大長度和存盤要求,
BLOB 和 TEXT 型別之間的唯一區別在于對 BLOB 值進行排序和比較時區分大小寫,對TEXT 值不區分大小寫,
35. mysql_fetch_array 和 mysql_fetch_object 的區別是什么?
mysql_fetch_array()
將結果行作為關聯陣列或來自資料庫的常規陣列回傳,
mysql_fetch_object
從資料庫回傳結果行作為物件,
36. 我們如何在 mysql 中運行批處理模式?
以下命令用于在批處理模式下運行:
mysql;
mysql mysql.out
37. MyISAM 表格將在哪里存盤,并且還提供其存盤格式?
每個 MyISAM 表格以三種格式存盤在磁盤上:
".frm" 檔案存盤表定義
資料檔案具有 ".MYD" (MYData)擴展名
索引檔案具有 ".MYI" (MYIndex)擴展名
38. Mysql 中有哪些不同的表格?
共有5 種型別的表格:
MyISAM
Heap
Merge
INNODB
ISAM
MyISAM 是 Mysql 的默認存盤引擎,
39. ISAM 是什么?
ISAM 簡稱為索引順序訪問方法,
它是由 IBM 開發的,用于在磁帶等輔助存盤系統上存盤和檢索資料,
40. InnoDB 是什么?
InnoDB 是一個由 Oracle 公司開發的 Innobase Oy 事務安全存盤引擎,
41. Mysql 如何優化 DISTINCT?
DISTINCT 在所有列上轉換為 GROUP BY,并與 ORDER BY 子句結合使用,
SELECT DISTINCT t1.a FROM t1,t2 where t1.a=t2.a;
42. 如何輸入字符為十六進制數字?
如果想輸入字符為十六進制數字,可以輸入帶有單引號的十六進制數字和前綴(X),或者只用(Ox)前綴輸入十六進制數字,
如果運算式背景關系是字串,則十六進制數字串將自動轉換為字串,
43. 如何顯示前 50 行?
在Mysql中,使用以下代碼查詢顯示前 50 行:
SELECT * FROM LIMIT 0,50;
44. 可以使用多少列創建索引?
任何標準表最多可以創建 16 個索引列,
45. NOW() 和 CURRENT_DATE() 有什么區別?
NOW() 命令用于顯示當前年份,月份,日期,小時,分鐘和秒,
CURRENT_DATE() 僅顯示當前年份,月份和日期,
46. 什么樣的物件可以使用 CREATE 陳述句創建?
以下物件是使用 CREATE 陳述句創建的:
DATABASE
EVENT
FUNCTION
INDEX
PROCEDURE
TABLE
TRIGGER
USER
VIEW
47. Mysql 表中允許有多少個 TRIGGERS?
在Mysql 表中允許有六個觸發器,如下:
BEFORE INSERT
AFTER INSERT
BEFORE UPDATE
AFTER UPDATE
BEFORE DELETE
AFTER DELETE
48. 什么是非標準字串型別?
以下是非標準字串型別:
TINYTEXT
TEXT
MEDIUMTEXT
LONGTEXT
49. 什么是通用 SQL 函式?
CONCAT(A, B) - 連接兩個字串值以創建單個字串輸出,
通常用于將兩個或多個欄位合并為一個欄位,
FORMAT(X, D) - 格式化數字 X 到 D 有效數字,
CURRDATE(), CURRTIME() - 回傳當前日期或時間,
NOW() - 將當前日期和時間作為一個值回傳,
MONTH (), DAY(), YEAR(), WEEK(), WEEKDAY() - 從日期值中提取給定資料,
HOUR(), MINUTE(), SECOND() - 從時間值中提取給定資料,
DATEDIFF(A, B) - 確定兩個日期之間的差異, 通常用于計算年齡
SUBTIMES(A, B) - 確定兩次之間的差異,
FROMDAYS(INT) - 將整數天數轉換為日期值,
50. 解釋訪問控制串列
ACL(訪問控制串列)是與物件關聯的權限串列,
這個串列是 Mysql 服務器安全模型的基礎,它有助于排除用戶無法連接的問題,
Mysql 將 ACL(也稱為授權表)快取在記憶體中,
當用戶嘗試認證或運行命令時,Mysql 會按照預定的順序檢查 ACL 的認證資訊和權限,
51. MYSQL 支持事務嗎?
在預設模式下,MYSQL 是 autocommit 模式的,所有的資料庫更新操作都會即時提交,所以在預設情說下,mysql是不支持事務的,
但是如果你的 MYSQL 表型別是使用 InnoDB Tables 或 BDB tables 的話,你的 MYSQL 就可以使用事務處理,使用 SET AUTOCOMMIT=0 就可以使 MYSQL 允許在非 autocommit 模式,在非 autocommit 模式下,你必須使用 COMMIT 來提交你的更改,或者用 ROLLBACK 來回滾你的更改,
示例如下:
START TRANSACTION;
SELECT @A:=SUM(salary) FROM table1 WHERE type=1;
UPDATE table2 SET summmary=@A WHERE type=1;
COMMIT;
52. mysql 里記錄貨幣用什么欄位型別好
NUMERIC 和 DECIMAL 型別被 Mysql 實作為同樣的型別,這在 SQL92 標準允許,他們被用于保存值,該值的準確精度是極其重要的值,例如與金錢有關的資料,當宣告一個類是這些型別之一時,精度和規模的能被(并且通常是)指定;
salary DECIMAL(9,2)
在這個例子中,9(precision)代表將被用于存盤值的總的小數位數,而2(scalel)代表將被用于存盤小數點后的位數,
因此,在這種情況下,能被存盤在 salary 列中的值的范圍是從-9999999.99 到 9999999.99,
在 ANSI/ISO SQL92 中,句法 DECIMAL(P) 等價于 DECIMAL(p,0),
同樣,句法 DECIMAL 等價于 DECIMAL(p,0),這里實作被允許決定值P,
Mysql 當前不支持 DECIMAL/NUMERIC 資料型別的這些變種形式的任一種,
這一般說來不是一個嚴重的問題,因為這些型別的主要益處得自于明顯地控制精度和規模的能力,
DECIMAL 和 NUMERIC 值作為字串存盤,而不是作為二進制浮點數,以便保存那些值的小數精度,
一個字符用于值的每一位、小數點(如果 scale>0)和“-”符號(對于負值),如果 scale 是 O, DECIMAL 和 NUMERIC 值不包含小數點或小數部分,
DECIMAL 和 NUMERIC 值得最大的范圍與 DOUBLE 一樣,但是對于一個給定的 DECIMAL 或 NUMERIC 列,實際的范圍可由制由給定列的precision 或 scale 限制,
當這樣的列賦給了小數點后面的位超過指定 scale 所允許的位的值,該值根據 scale 四舍五入,
當一個DECIMAL 或 NUMERIC 列被賦給了其大小超過指定(或預設的) precision 和 scale 隱含的范圍的值,Mysal 存盤表示那個范圍的相應的端點值,
53. MYSQL 資料表在什么情況下容易損壞?
服務器突然斷電導致資料檔案損壞,
強制關機,沒有先關閉 mysql 服務等,
54. mysql 有關權限的表都有哪幾個?
Mysql服務器通過權限表來控制用戶對資料庫的訪問,權限表存放在mysql 資料庫里,由mysql_install_db 腳本初始化,
這些權限表分別 user, db, table_priv, columns _priv 和 host,
55. Mysql 中有哪幾種鎖?
MyISAM 支持表鎖,InnoDB 支持表鎖和行鎖,默認為行鎖
表級鎖:開銷小,加鎖快,不會出現死鎖,鎖定粒度大,發生鎖沖突的概率最高,并發量最低
行級鎖:開銷大,加鎖慢,會出現死鎖,鎖力度小,發生鎖沖突的概率小,并發度最高
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/388988.html
標籤:其他
