面向初學者和經驗豐富的 27 個 MySQL 面試問題和答案 [2022]

已發表: 2021-01-07

即將進行數據工程或數據科學面試嗎? 需要練習一些最常見的MySQL 面試題嗎? 文章整理了你應該知道MySQL 面試問題列表。

學習構建 Swiggy、Quora、IMDB 等應用程序

常見的 MySQL 面試問題和答案

1.什麼是MySQL?

MySQL 是最流行的開源 DBMS(數據庫管理系統)之一。 MySQL 易於使用、可靠且快速。 適用於嵌入式系統以及客戶端-服務器系統的數據庫管理系統。

2. MySQL為什麼這麼受歡迎?

首先,MySQL 是開源的。 其次,它被廣泛採用,因此已經有很多代碼可用。 甚至整個開發的系統都可以用於即將到來的項目。 MySQL有關係數據庫; 因此,它使其具有有條不紊的存儲,而不是一大堆雜亂無章的垃圾。 最後,如前所述,MySQL 既快速又健壯。

3. MySQL中有哪些表? 解釋類型。

這是一道必知的MySQL 面試題 來看看答案——

MySQL 將所有內容存儲在邏輯表中。 表可以被認為是 MySQL 的核心存儲結構。 因此表也被稱為存儲引擎。 以下是 MySQL 提供的存儲引擎:

· MyISAM – MyISAM 是 MySQL 的默認存儲引擎。 它擴展了以前的 ISAM 存儲引擎。 MyISAM 提供高達 256TB 的大容量存儲空間! 這些表也可以被壓縮以獲得額外的存儲空間。 MyISAM 表不是事務安全的。

· MERGE – MERGE 表是一個虛擬表,它整合了與一個表具有可比結構的不同 MyISAM 表。 MERGE 表使用基表的索引,因為它們沒有自己的索引。

· ARCHIVE – 顧名思義,Archive 通過壓縮表來幫助歸檔表,從而減少存儲空間。 因此,您可以使用存檔存儲大量記錄。 它在寫入和讀取表記錄時使用壓縮-解壓縮過程。 它是使用 Zlib 庫完成的。

· CSV——這更像是一種存儲格式。 CSV 引擎以逗號分隔值 (CSV) 格式存儲值。 該引擎可以更輕鬆地將表遷移到非 SQL 管道中。

· InnoDB – InnoDB 在選擇引擎來驅動性能時是最優化的。 InnoDB 是一個事務安全的引擎。 因此它是 ACID 兼容的,並且可以在崩潰的情況下有效地將您的數據庫恢復到最穩定的狀態。

·內存——內存表以前稱為 HEAP。 使用內存表,可以提高性能,因為表存儲在內存中。 但由於同樣的原因,它不適用於大型數據表。

·聯合——聯合表允許訪問遠程 MySQL 服務器表。 它可以在沒有任何第三方集成或集群技術的情況下完成。

閱讀:用於數據科學的 SQL:為什麼使用 SQL,優點和命令列表

4. 在 MySQL 中編寫一個列添加查詢

為此,需要 ALTER TABLE 查詢。 一旦被調用,只需提及該列及其定義。 像這樣的東西:

ALTER TABLE 汽車

在顏色之後添加列引擎 VARCHAR(80);

5. 什麼是外鍵? 編寫一個查詢以在 MySQL 中實現相同的功能。

外鍵用於連接兩個表。 FOREIGN KEY 是一個表中的一個字段(或它的分類),它暗示另一個表中的 PRIMARY KEY。 FOREIGN KEY 要求用於防止破壞表之間連接的活動。

要分配外鍵,在創建表時提及它是很重要的。 它可以通過調用 FOREIGN KEY 查詢來分配。 像這樣的東西:

FOREIGN KEY (Any_ID) REFERENCES Table_to_reference(Any_ID)

6、什麼是MySQL工作台?

MySQL Workbench 是一個結合在一起的可視化工具,適用於數據庫建模人員、設計人員和 DBA。 MySQL Workbench 提供數據建模、SQL 和服務器設置管理工具集。 簡單來說,MySQL Workbench 使通過 GUI 操作數據庫管理系統成為可能。

7. MySQL 中的數據庫導入/導出是如何工作的?

它可以通過兩種方式完成。 一是使用phpMyAdmin,二是使用MySQL的命令行訪問。 後者可以通過使用名為 mysqldump 的命令來完成。 它是這樣的:

· mysqldump -u 用戶名 -p 數據庫名 > dbsample.sql

要將數據庫導入 MySQL,只需使用 MySQL 命令更改符號即可。 命令是這樣的:

· mysql -u 用戶名 -p 數據庫名 < dbsample.sql

8.我們如何刪除MySQL中的一列或一行?

現在可以通過使用 ALTER TABLE 命令然後使用 DROP 命令來簡單地刪除列。 它是這樣的:

ALTER TABLE table_name DROP 列名;

要刪除一行,首先需要該行的標識。 方便後,將 DELETE 命令與條件 WHERE 命令結合使用。 像這樣的東西:

從 carID = 3 的汽車中刪除;

9. MySQL中連接表的方法有哪些?

Join 用於將一個或多個錶鍊接在一起,兩個表中的公共列的值。 主要有四種類型的連接:

1. 內連接——內連接使用連接謂詞,這是用於進行連接的條件。 這是語法:

SELECT something FROM tablename INNER JOIN another table ON 條件;

2. 左連接——左連接也需要一個連接條件。 左連接選擇從左表開始的信息。 對於左表中的每個條目,左側比較右表中的每個條目。 這是語法:

SELECT something FROM tablename LEFT JOIN another table ON 條件;

3. 右連接——與左連接相反,查詢的一個區別是連接的名稱。 這裡應該注意表格的順序。 這是語法:

SELECT something FROM tablename LEFT JOIN another table ON 條件;

4. 交叉連接——交叉連接沒有連接條件。 它使兩個表的行的笛卡爾坐標。 這是語法:

SELECT something FROM tablename CROSS JOIN another table;

注意:在只處理一張表時,自連接也是可能的。

它是最受關注的MySQL 面試問題之一 面試官確實喜歡看候選人是否了解基礎知識並加入核心概念之一。

閱讀:PHP 面試問答

10. MySQL可以去掉主鍵嗎? 如果是,如何?

是的,可以從表中刪除主鍵。 再次使用的命令是 ALTER TABLE 後跟 DROP。 它是這樣的:

ALTER TABLE table_name 刪除主鍵;

11. MySQL中的程序是什麼?

過程(或存儲過程)是嵌入數據庫中的子程序,就像常規語言一樣。 存儲過程由名稱、SQL 語句和參數組成。 它利用 MySQL 中的緩存,從而節省時間和內存,就像準備好的語句一樣。

12. MySQL 中的觸發器是什麼?

觸發器是 MySQL 中與表關聯的數據庫對象。 當指定動作發生時它被激活。

可以在事件發生之後或之前調用觸發器。 它可以用於 INSERT、DELETE 和 UPDATE。 它使用各自的語法來定義觸發器。 例如,在插入之前、刪除之後等。

13. MySQL如何添加用戶?

簡單地說,可以通過使用 CREATE 命令並指定必要的憑據來添加用戶。 首先,登錄 MySQL 帳戶,然後應用語法。 像這樣的東西:

CREATE USER 'testuser' IDENTIFIED BY 'sample password';

可以通過以下命令授予用戶權限:

授予選擇*。 * TO '測試用戶';

14、Oracle和MySQL的核心區別是什麼?

核心區別在於 MySQL 在單模型數據庫上工作。 這意味著它只能使用一個基本結構,而 Oracle 是一個多模型數據庫。 這意味著它可以支持各種數據模型,如圖形、文檔、鍵值等。

另一個根本區別是甲骨文的支持帶有工業解決方案的價格標籤。 雖然 MySQL 是開源的。

現在這個問題是MySQL面試問題之一,應該仔細理解。 因為它直接處理行業標準和公司想要的東西。

15. MySQL中的CHAR和VARCHAR是什麼?

它們都定義了一個字符串。 核心區別在於 CHAR 是固定長度,而 VARCHAR 是可變長度。 例如,如果定義了 CHAR(5),那麼它正好需要五個字符。 如果定義了 VARCHAR(5),那麼它最多可以佔用五個字符。 VARCHAR 可以說在內存使用上效率更高,因為它可以進行動態內存分配。

16. MySQL需要哪些驅動?

MySQL 中有多種類型的驅動程序。 大多數情況下,它們用於連接不同的計算語言。 下面列出了其中一些:

· PHP 驅動程序

· JDBC

· OBDC

· Python 驅動程序

· C – 包裝器

· Perl 和 Ruby 驅動程序

17. 什麼是 LIKE 語句? 在 LIKE 中解釋 % 和 _。

在 SELECT、UPDATE 和 DELETE 等命令中使用過濾器時,條件可能需要檢測模式。 LIKE 就是用來做這件事的。 LIKE 有兩個通配符,即 %(百分比)和 _(下劃線)。 Percentage(%) 匹配字符串,而下劃線匹配單個字符。

例如,%t 將同時檢測樹木和茶。 但是,_t 只會檢測一個額外的字符,即像 ti 或 te 這樣的字符串。

18. MySQL中如何將時間戳轉換為日期?

這是一個相當簡單的問題,需要了解兩個命令,例如 DATE_FORMAT 和 FROM_UNIXTIME。

DATE_FORMAT(FROM_UNIXTIME(`date_in_timestamp`), '%e %b %Y') AS 'date_formatted'

另請閱讀: Java 面試問答

19. MySQL 中是否可以編寫查詢?

這個 MySQL 面試問題經常讓剛開始使用 MySQL 的人感到困惑。 雖然大多數時候,查詢是用大寫字母或一些小寫字母寫的,但 MySQL 查詢不區分大小寫。

例如,create table tablename 和 CREATE TABLE tablename 都可以正常工作。

但是,如果需要,可以使用關鍵字 BINARY 使查詢區分大小寫。

這個MySQL 面試問題可能很棘手,尤其是在被要求明確區分大小寫時。

20. 如何在 MySQL 中保存圖片?

圖像可以通過將它們轉換為 BLOBS 來存儲在 MySQL 數據庫中。 但它不是首選,因為它會產生大量開銷。 另外,它在加載整個數據庫時會給 RAM 帶來不必要的負載。 因此,最好將路徑存儲在數據庫中並將圖像存儲在磁盤上。

21、如何從MySQL中的數據中獲取多個條件結果?

有兩種方法可以做到這一點。 第一種是在使用 WHERE 條件時使用關鍵字 OR。 另一種是使用值列表來檢查和使用 IN 和 WHERE。

22. MyISAM 使用哪些不同的文件格式?

通常,MyISAM 表使用磁盤上的三個文件存儲。 數據文件和索引文件,分別以擴展名 .MYD 和 .MYI 定義。 有一個擴展名為 .frm 的表定義文件。

23. DISTINCT 在 MySQL 中是如何工作的?

DISTINCT 用於在獲取特定查詢的結果時避免重複問題。 DISTINCT 用於確保結果不包含重複值。 DISTINCT 可以與 SELECT 子句一起使用。 這是它的語法:

從表名中選擇不同的東西;

24、表格的列數有上限嗎?

儘管確切的大小限制取決於許多因素,但 MySQL 對最大大小的硬性限制為 4096 列。 但如前所述,對於給定的表格,有效最大值可能會更小。

25. 根據 MySQL,什麼是訪問控制列表或 ACL?

ACL 或訪問控制列表用於為 MySQL 數據庫的安全性提供指導。 MySQL 為用戶執行的所有任務(如連接請求、查詢和任何其他操作)提供基於 ACL 的安全性。

26. 如何在 MySQL 中使連接持久化?

在發出連接請求時,如果使用 mysql_pconnect 而不是 mysql_connect,那麼它可以使連接持久化。 這裡的“p”意味著持久。 不是每次都關閉數據庫連接。

27. 解釋 MySQL 中的 SAVEPOINT 語句。

SAVEPOINT 是在 MySQL 中進行子事務的一種方式,也稱為嵌套事務。

SAVEPOINT 在常規事務中標記一個點。 它指示系統可以回滾的點。

退房:印度的 SQL 開發人員薪水

從世界頂級大學在線學習軟件開發課程獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。

結論

所以,這些是一些MySQL 面試問題 要了解該主題和其他準備工作,請訪問 upGrad 課程和 PG 計劃,這些課程可幫助您找到正確的軌道和應用程序以提升您的職業生涯。

如果您想了解 SQL 以及有關全棧開發的更多信息,請查看 IIIT-B 和 upGrad 的全棧軟件開發執行 PG 計劃,該計劃是為在職專業人士創建的,並提供 10 多個案例研究和項目,實用的手-研討會、與行業專家的指導、與行業導師的一對一交流、400 多個小時的學習和頂級公司的工作協助。

為未來的職業做準備

立即申請全棧開發的執行 PG 計劃