日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

经典 55道 MySQL面试题及答案

發(fā)布時(shí)間:2023/12/2 数据库 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 经典 55道 MySQL面试题及答案 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

MySQL面試題以及答案整理【最新版】MySQL高級面試題大全,發(fā)現(xiàn)網(wǎng)上很多MySQL面試題都沒有答案,所以花了很長時(shí)間搜集,本套MySQL面試題大全,匯總了大量經(jīng)典的MySQL程序員面試題以及答案,包含MySQL語言常見面試題、MySQL工程師高級面試題及一些大廠MySQL開發(fā)面試寶典,面試經(jīng)驗(yàn)技巧等,應(yīng)屆生,實(shí)習(xí)生,企業(yè)工作過的,都可參考學(xué)習(xí)!

這套MySQL面試題大全,希望對大家有幫助哈~

1、一張表,里面有 ID 自增主鍵,當(dāng) insert 了 17 條記錄之后,刪除了第 15,16,17 條記錄,再把 Mysql 重啟,再 insert 一條記錄,這條記錄的 ID 是 18 還是 15 ?

(1) 如果表的類型是 MyISAM,那么是 18

因?yàn)?MyISAM 表會把自增主鍵的最大 ID 記錄到數(shù)據(jù)文件里,重啟 MySQL 自增主鍵的最大ID 也不會丟失

(2)如果表的類型是 InnoDB,那么是 15

InnoDB 表只是把自增主鍵的最大 ID 記錄到內(nèi)存中,所以重啟數(shù)據(jù)庫或者是對表進(jìn)OPTIMIZE 操作,都會導(dǎo)致最大 ID 丟失

2、Mysql 的技術(shù)特點(diǎn)是什么?

Mysql 數(shù)據(jù)庫軟件是一個(gè)客戶端或服務(wù)器系統(tǒng),其中包括:支持各種客戶端程序和庫的多線程 SQL 服務(wù)器、不同的后端、廣泛的應(yīng)用程序編程接口和管理工具。

3、Heap 表是什么?

HEAP 表存在于內(nèi)存中,用于臨時(shí)高速存儲。

BLOB 或 TEXT 字段是不允許的

只能使用比較運(yùn)算符=,<,>,=>,= <

HEAP 表不支持 AUTO_INCREMENT

索引不可為 NULL

4、Mysql 服務(wù)器默認(rèn)端口是什么?

Mysql 服務(wù)器的默認(rèn)端口是 3306。

5、與 Oracle 相比,Mysql 有什么優(yōu)勢?

Mysql 是開源軟件,隨時(shí)可用,無需付費(fèi)。

Mysql 是便攜式的

帶有命令提示符的 GUI。

使用 Mysql 查詢?yōu)g覽器支持管理

6、如何區(qū)分 FLOAT 和 DOUBLE?

以下是 FLOAT 和 DOUBLE 的區(qū)別:

1)浮點(diǎn)數(shù)以 8 位精度存儲在 FLOAT 中,并且有四個(gè)字節(jié)。

2)浮點(diǎn)數(shù)存儲在 DOUBLE 中,精度為 18 位,有八個(gè)字節(jié)。

7、區(qū)分 CHAR_LENGTH 和 LENGTH?

CHAR_LENGTH 是字符數(shù),而 LENGTH 是字節(jié)數(shù)。Latin 字符的這兩個(gè)數(shù)據(jù)是相同的,但是對于 Unicode 和其他編碼,它們是不同的。

8、請簡潔描述 Mysql 中 InnoDB 支持的四種事務(wù)隔離級別名稱,以及逐級之間的區(qū)別?

SQL 標(biāo)準(zhǔn)定義的四個(gè)隔離級別為:

read uncommited :讀到未提交數(shù)據(jù)

read committed:臟讀,不可重復(fù)讀

repeatable read:可重讀

serializable :串行事物

9、在 Mysql 中 ENUM 的用法是什么?

ENUM 是一個(gè)字符串對象,用于指定一組預(yù)定義的值,并在創(chuàng)建表時(shí)使用

Create table size(name ENUM('Smail,‘Medium’,‘Large’);

10、如何定義 REGEXP?

REGEXP 是模式匹配,其中匹配模式在搜索值的任何位置。

11、CHAR 和 VARCHAR 的區(qū)別?

以下是 CHAR 和 VARCHAR 的區(qū)別:

CHAR 和 VARCHAR 類型在存儲和檢索方面有所不同

CHAR 列長度固定為創(chuàng)建表時(shí)聲明的長度,長度值范圍是 1 到 255

當(dāng) CHAR 值被存儲時(shí),它們被用空格填充到特定長度,檢索 CHAR 值時(shí)需刪除尾隨空格。

12、列的字符串類型可以是什么?

字符串類型是:

SET

BLOB

ENUM

CHAR

TEXT

VARCHAR

13、如何獲取當(dāng)前的 Mysql 版本?

SELECT VERSION();用于獲取當(dāng)前 Mysql 的版本。

14、Mysql 中使用什么存儲引擎?

存儲引擎稱為表類型,數(shù)據(jù)使用各種技術(shù)存儲在文件中。

技術(shù)涉及:

Storage mechanism

Locking levels

Indexing

Capabilities and functions.

15、Mysql 驅(qū)動程序是什么?

以下是 Mysql 中可用的驅(qū)動程序:

PHP 驅(qū)動程序

JDBC 驅(qū)動程序

ODBC 驅(qū)動程序

CWRAPPER

PYTHON 驅(qū)動程序

PERL 驅(qū)動程序

RUBY 驅(qū)動程序

CAP11PHP 驅(qū)動程序

Ado.net5.mxj

16、TIMESTAMP 在 UPDATE CURRENT_TIMESTAMP 數(shù)據(jù)類型上做什么?

創(chuàng)建表時(shí) TIMESTAMP 列用 Zero 更新。只要表中的其他字段發(fā)生更改,UPDATE CURRENT_TIMESTAMP 修飾符就將時(shí)間戳字段更新為當(dāng)前時(shí)間。

17、主鍵和候選鍵有什么區(qū)別?

表格的每一行都由主鍵唯一標(biāo)識,一個(gè)表只有一個(gè)主鍵。

主鍵也是候選鍵。按照慣例,候選鍵可以被指定為主鍵,并且可以用于任何外鍵引用。

18、如何使用 Unix shell 登錄 Mysql?

我們可以通過以下命令登錄:

[mysql dir]/bin/mysql -h hostname -u

19、 myisamchk 是用來做什么的?

它用來壓縮 MyISAM 表,這減少了磁盤或內(nèi)存使用。

20、MYSQL 數(shù)據(jù)庫服務(wù)器性能分析的方法命令有哪些?

https://blog.csdn.net/qq_41455420/article/details/82802090

21、如何控制 HEAP 表的最大尺寸?

Heal 表的大小可通過稱為 max_heap_table_size 的 Mysql 配置變量來控制。

22、MyISAM Static 和 MyISAM Dynamic 有什么區(qū)別?

在 MyISAM Static 上的所有字段有固定寬度。動態(tài) MyISAM 表將具有像 TEXT,BLOB 等字段,以適應(yīng)不同長度的數(shù)據(jù)類型。

MyISAM Static 在受損情況下更容易恢復(fù)。

23、federated 表是什么?

federated 表,允許訪問位于其他服務(wù)器數(shù)據(jù)庫上的表。

24、如果一個(gè)表有一列定義為 TIMESTAMP,將發(fā)生什么?

每當(dāng)行被更改時(shí),時(shí)間戳字段將獲取當(dāng)前時(shí)間戳。

25、列設(shè)置為 AUTO INCREMENT 時(shí),如果在表中達(dá)到最大值,會發(fā)生什么情況?

它會停止遞增,任何進(jìn)一步的插入都將產(chǎn)生錯(cuò)誤,因?yàn)槊荑€已被使用。

26、怎樣才能找出最后一次插入時(shí)分配了哪個(gè)自動增量?

LAST_INSERT_ID 將返回由 Auto_increment 分配的最后一個(gè)值,并且不需要指定表名稱。

27、你怎么看到為表格定義的所有索引?

索引是通過以下方式為表格定義的:SHOW INDEX FROM

28.、LIKE 聲明中的%和_是什么意思?

%對應(yīng)于 0 個(gè)或更多字符,_只是 LIKE 語句中的一個(gè)字符。

29、如何在 Unix 和 Mysql 時(shí)間戳之間進(jìn)行轉(zhuǎn)換?

UNIX_TIMESTAMP 是從 Mysql 時(shí)間戳轉(zhuǎn)換為 Unix 時(shí)間戳的命令

FROM_UNIXTIME 是從 Unix 時(shí)間戳轉(zhuǎn)換為 Mysql 時(shí)間戳的命令

30、列對比運(yùn)算符是什么?

在 SELECT 語句的列比較中使用=,<>,<=,<,> =,>,<<,>>,<=>,AND,OR 或 LIKE 運(yùn)算符。

31、我們?nèi)绾蔚玫绞懿樵冇绊懙男袛?shù)?

行數(shù)可以通過以下代碼獲得:SELECT COUNT(user_id)FROM users;

32、Mysql 查詢是否區(qū)分大小寫?

不區(qū)分

SELECT VERSION(), CURRENT_DATE;

SeLect version(), current_date;

seleCt vErSiOn(), current_DATE;

所有這些例子都是一樣的,Mysql 不區(qū)分大小寫。

33.、LIKE 和 REGEXP 操作有什么區(qū)別?

LIKE 和 REGEXP 運(yùn)算符用于表示^和%。

SELECT * FROM employee WHERE emp_name REGEXP “^b”;

SELECT * FROM employee WHERE emp_name LIKE “%b”;

34.、BLOB 和 TEXT 有什么區(qū)別?

1、BLOB 是一個(gè)二進(jìn)制對象,可以容納可變數(shù)量的數(shù)據(jù)。有四種類型的 BLOB -

1)TINYBLOB

2)BLOB

3)MEDIUMBLOB 和

4)LONGBLOB

它們只能在所能容納價(jià)值的最大長度上有所不同。

2、TEXT 是一個(gè)不區(qū)分大小寫的 BLOB。四種 TEXT 類型

1)TINYTEXT

2)TEXT

3)MEDIUMTEXT

4)LONGTEXT

它們對應(yīng)于四種 BLOB 類型,并具有相同的最大長度和存儲要求。

BLOB 和 TEXT 類型之間的唯一區(qū)別在于對 BLOB 值進(jìn)行排序和比較時(shí)區(qū)分大小寫,對 TEXT值不區(qū)分大小寫。

35、mysql_fetch_array 和 mysql_fetch_object 的區(qū)別是什么?

1)mysql_fetch_array() - 將結(jié)果行作為關(guān)聯(lián)數(shù)組或來自數(shù)據(jù)庫的常規(guī)數(shù)組返回。

2)mysql_fetch_object - 從數(shù)據(jù)庫返回結(jié)果行作為對象。

36、我們?nèi)绾卧?mysql 中運(yùn)行批處理模式?

以下命令用于在批處理模式下運(yùn)行:

mysql;

mysql mysql.out

37、MyISAM 表格將在哪里存儲,并且還提供其存儲格式?

每個(gè) MyISAM 表格以三種格式存儲在磁盤上:

“.frm”文件存儲表定義

數(shù)據(jù)文件具有“.MYD”(MYData)擴(kuò)展名

索引文件具有“.MYI”(MYIndex)擴(kuò)展名

38.、Mysql 中有哪些不同的表格?

共有 5 種類型的表格:

MyISAM

Heap

Merge

INNODB

ISAM

MyISAM 是 Mysql 的默認(rèn)存儲引擎。

39、ISAM 是什么?

ISAM 簡稱為索引順序訪問方法。它是由 IBM 開發(fā)的,用于在磁帶等輔助存儲系統(tǒng)上存儲和檢索數(shù)據(jù)。

40、InnoDB 是什么?

lnnoDB 是一個(gè)由 Oracle 公司開發(fā)的 Innobase Oy 事務(wù)安全存儲引擎。

41、Mysql 如何優(yōu)化 DISTINCT?

DISTINCT 在所有列上轉(zhuǎn)換為 GROUP BY,并與 ORDER BY 子句結(jié)合使用。

1

SELECT DISTINCT t1.a FROM t1,t2 where t1.a=t2.a;

42、如何輸入字符為十六進(jìn)制數(shù)字?

如果想輸入字符為十六進(jìn)制數(shù)字,可以輸入帶有單引號的十六進(jìn)制數(shù)字和前綴(X),或者只用(Ox)前綴輸入十六進(jìn)制數(shù)字。

如果表達(dá)式上下文是字符串,則十六進(jìn)制數(shù)字串將自動轉(zhuǎn)換為字符串。

43、如何顯示前 50 行?

在 Mysql 中,使用以下查詢顯示前 50 行:SELECT*FROMLIMIT 0,50;

44、可以使用多少列創(chuàng)建索引?

任何標(biāo)準(zhǔn)表最多可以創(chuàng)建 16 個(gè)索引列。

45、NOW()和 CURRENT_DATE()有什么區(qū)別?

NOW()命令用于顯示當(dāng)前年份,月份,日期,小時(shí),分鐘和秒。

CURRENT_DATE()僅顯示當(dāng)前年份,月份和日期。

46、什么樣的對象可以使用 CREATE 語句創(chuàng)建?

以下對象是使用 CREATE 語句創(chuàng)建的:

DATABASE

EVENT

FUNCTION

INDEX

PROCEDURE

TABLE

TRIGGER

USER

VIEW

47、Mysql 表中允許有多少個(gè) TRIGGERS?

在 Mysql 表中允許有六個(gè)觸發(fā)器,如下:

BEFORE INSERT

AFTER INSERT

BEFORE UPDATE

AFTER UPDATE

BEFORE DELETE

AFTER DELETE

48、什么是非標(biāo)準(zhǔn)字符串類型?

以下是非標(biāo)準(zhǔn)字符串類型:

TINYTEXT

TEXT

MEDIUMTEXT

LONGTEXT

49、什么是通用 SQL 函數(shù)?

CONCAT(A, B) - 連接兩個(gè)字符串值以創(chuàng)建單個(gè)字符串輸出。通常用于將兩個(gè)或多個(gè)字段合并為一個(gè)字段。

FORMAT(X, D)- 格式化數(shù)字 X 到 D 有效數(shù)字。

CURRDATE(), CURRTIME()- 返回當(dāng)前日期或時(shí)間。

NOW() - 將當(dāng)前日期和時(shí)間作為一個(gè)值返回。

MONTH(),DAY(),YEAR(),WEEK(),WEEKDAY() - 從日期值中提取給定數(shù)據(jù)。

HOUR(),MINUTE(),SECOND() - 從時(shí)間值中提取給定數(shù)據(jù)。

DATEDIFF(A,B) - 確定兩個(gè)日期之間的差異,通常用于計(jì)算年齡

SUBTIMES(A,B) - 確定兩次之間的差異。

FROMDAYS(INT) - 將整數(shù)天數(shù)轉(zhuǎn)換為日期值。

50、解釋訪問控制列表

ACL(訪問控制列表)是與對象關(guān)聯(lián)的權(quán)限列表。這個(gè)列表是 Mysql 服務(wù)器安全模型的基礎(chǔ),它有助于排除用戶無法連接的問題。

Mysql 將 ACL(也稱為授權(quán)表)緩存在內(nèi)存中。當(dāng)用戶嘗試認(rèn)證或運(yùn)行命令時(shí),Mysql 會按照預(yù)定的順序檢查 ACL 的認(rèn)證信息和權(quán)限。

51、MYSQL 支持事務(wù)嗎?

在缺省模式下,MYSQL 是 autocommit 模式的,所有的數(shù)據(jù)庫更新操作都會即時(shí)提交,所以在缺省情況下,mysql 是不支持事務(wù)的。

但是如果你的 MYSQL 表類型是使用 InnoDB Tables 或 BDB tables 的話,你的 MYSQL 就可以使用事務(wù)處理,使用 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 實(shí)現(xiàn)為同樣的類型,這在 SQL92 標(biāo)準(zhǔn)允許。他們被用于保存值,該值的準(zhǔn)確精度是極其重要的值,例如與金錢有關(guān)的數(shù)據(jù)。當(dāng)聲明一個(gè)類是這些類型之一時(shí),精度和規(guī)模的能被(并且通常是)指定;

例如:

salary DECIMAL(9,2)

在這個(gè)例子中,9(precision)代表將被用于存儲值的總的小數(shù)位數(shù),而 2(scale)代表將被用于存儲小數(shù)點(diǎn)后的位數(shù)。

因此,在這種情況下,能被存儲在 salary 列中的值的范圍是從-9999999.99 到 9999999.99。

在 ANSI/ISO SQL92 中,句法 DECIMAL§等價(jià)于 DECIMAL(p,0)。

同樣,句法 DECIMAL 等價(jià)于 DECIMAL(p,0),這里實(shí)現(xiàn)被允許決定值 p。Mysql 當(dāng)前不支持DECIMAL/NUMERIC 數(shù)據(jù)類型的這些變種形式的任一種。

這一般說來不是一個(gè)嚴(yán)重的問題,因?yàn)檫@些類型的主要益處得自于明顯地控制精度和規(guī)模的能力。

DECIMAL 和 NUMERIC 值作為字符串存儲,而不是作為二進(jìn)制浮點(diǎn)數(shù),以便保存那些值的小數(shù)精度。

一個(gè)字符用于值的每一位、小數(shù)點(diǎn)(如果 scale>0)和“-”符號(對于負(fù)值)。如果 scale 是 0,DECIMAL 和 NUMERIC 值不包含小數(shù)點(diǎn)或小數(shù)部分。

DECIMAL 和 NUMERIC 值得最大的范圍與 DOUBLE 一樣,但是對于一個(gè)給定的 DECIMAL 或NUMERIC 列,實(shí)際的范圍可由制由給定列的 precision 或 scale 限制。

當(dāng)這樣的列賦給了小數(shù)點(diǎn)后面的位超過指定 scale 所允許的位的值,該值根據(jù) scale 四舍五入。

當(dāng)一個(gè) DECIMAL 或 NUMERIC 列被賦給了其大小超過指定(或缺省的)precision 和 scale 隱含的范圍的值,Mysql 存儲表示那個(gè)范圍的相應(yīng)的端點(diǎn)值。

53、MYSQL 數(shù)據(jù)表在什么情況下容易損壞?

服務(wù)器突然斷電導(dǎo)致數(shù)據(jù)文件損壞。

強(qiáng)制關(guān)機(jī),沒有先關(guān)閉 mysql 服務(wù)等。

54、mysql 有關(guān)權(quán)限的表都有哪幾個(gè)?

Mysql 服務(wù)器通過權(quán)限表來控制用戶對數(shù)據(jù)庫的訪問,權(quán)限表存放在 mysql 數(shù)據(jù)庫里,由mysql_install_db 腳本初始化。

這些權(quán)限表分別 user,db,table_priv,columns_priv 和host。

55、Mysql 中有哪幾種鎖?

MyISAM 支持表鎖,InnoDB 支持表鎖和行鎖,默認(rèn)為行鎖

表級鎖:開銷小,加鎖快,不會出現(xiàn)死鎖。鎖定粒度大,發(fā)生鎖沖突的概率最高,并發(fā)量最低

行級鎖:開銷大,加鎖慢,會出現(xiàn)死鎖。鎖力度小,發(fā)生鎖沖突的概率小,并發(fā)度最高

如果本文對你有幫助,別忘記給我個(gè)3連 ,點(diǎn)贊,轉(zhuǎn)發(fā),評論,

咱們下期見!

總結(jié)

以上是生活随笔為你收集整理的经典 55道 MySQL面试题及答案的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。