天天看點

BAT五十五道 MySQL面試題總結!

1、一張表,裡面有ID自增主鍵,當insert了17條記錄之後,删除了第15,16,17條記錄,再把Mysql重新開機,再insert一條記錄,這條記錄的ID是18還是15 ?
BAT五十五道 MySQL面試題總結!
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 :串行事物

BAT五十五道 MySQL面試題總結!
BAT五十五道 MySQL面試題總結!
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 -p

19、 myisamchk是用來做什麼的?

它用來壓縮MyISAM表,這減少了磁盤或記憶體使用。

20、MYSQL資料庫伺服器性能分析的方法指令有哪些?
BAT五十五道 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

MEDIUMBLOB和

LONGBLOB

它們隻能在所能容納價值的最大長度上有所不同。

TEXT是一個不區分大小寫的BLOB。四種TEXT類型

TINYTEXT

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子句結合使用。

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、什麼是非标準字元串類型?

以下是非标準字元串類型:

MEDIUMTEXT

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支援表鎖和行鎖,預設為行鎖

表級鎖:開銷小,加鎖快,不會出現死鎖。鎖定粒度大,發生鎖沖突的機率最高,并發量最低

行級鎖:開銷大,加鎖慢,會出現死鎖。鎖力度小,發生鎖沖突的機率小,并發度最高

歡迎工作一到五年的Java工程師朋友們加入Java架構開發:860113481

群内提供免費的Java架構學習資料(裡面有高可用、高并發、高性能及分布式、Jvm性能調優、Spring源碼,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點的架構資料)合理利用自己每一分每一秒的時間來學習提升自己,不要再用"沒有時間“來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己一個交代!