來自:it168網站 http://tech.it168.com/a2017/1119/3180/000003180421.shtml
1、一張表,裡面有ID自增主鍵,當insert了17條記錄之後,刪除了第15,16,17條記錄,再把Mysql重啟,再insert一條記錄,這條記錄的ID是18還是15 ?
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
19、 myisamchk是用來做什麼的?
它用來壓縮MyISAM表,這減少了磁碟或記憶體使用。
20、MYSQL資料庫伺服器效能分析的方法命令有哪些?
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
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運運算元用於表示^和%。
1 2 |
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的區別:
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是什麼?
lnnoDB是一個由Oracle公司開發的Innobase Oy事務安全儲存引擎。
41、Mysql如何最佳化DISTINCT?
DISTINCT在所有列上轉換為GROUP BY,並與ORDER BY子句結合使用。
1 |
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(scale)代表將被用於儲存小數點後的位數。
因此,在這種情況下,能被儲存在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是0,DECIMAL和NUMERIC值不包含小數點或小數部分。
DECIMAL和NUMERIC值得最大的範圍與DOUBLE一樣,但是對於一個給定的DECIMAL或NUMERIC列,實際的範圍可由制由給定列的precision或scale限制。
當這樣的列賦給了小數點後面的位超過指定scale所允許的位的值,該值根據scale四捨五入。
當一個DECIMAL或NUMERIC列被賦給了其大小超過指定(或預設的)precision和scale隱含的範圍的值,Mysql儲存表示那個範圍的相應的端點值。
我希望本文可以幫助你提升技術水平。那些,感覺學的好難,甚至會令你沮喪的人,別擔心,我認為,如果你願意試一試本文介紹的幾點,會向前邁進,剋服這種感覺。這些要點也許對你不適用,但你會明確一個重要的道理:接受自己覺得受困這個事實是擺脫這個困境的第一步。
53、MYSQL資料表在什麼情況下容易損壞?
伺服器突然斷電導致資料檔案損壞。
強制關機,沒有先關閉mysql 服務等。
54、mysql有關許可權的表都有哪幾個?
Mysql伺服器透過許可權表來控制使用者對資料庫的訪問,許可權表存放在mysql資料庫裡,由mysql_install_db指令碼初始化。這些許可權表分別user,db,table_priv,columns_priv和host。
55、Mysql中有哪幾種鎖?
-
MyISAM支援表鎖,InnoDB支援表鎖和行鎖,預設為行鎖
-
表級鎖:開銷小,加鎖快,不會出現死鎖。鎖定粒度大,發生鎖衝突的機率最高,併發量最低
-
行級鎖:開銷大,加鎖慢,會出現死鎖。鎖力度小,發生鎖衝突的機率小,併發度最高
(完)
●編號409,輸入編號直達本文
●輸入m獲取文章目錄
Web開發
更多推薦《18個技術類微信公眾號》
涵蓋:程式人生、演演算法與資料結構、駭客技術與網路安全、大資料技術、前端開發、Java、Python、Web開發、安卓開發、iOS開發、C/C++、.NET、Linux、資料庫、運維等。