首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

高級 MySQL 數據庫面試題精選 11 道附標準答案

     編輯:MySQL 資料庫相關知識

面試題庫

Q1: 如何用單條 SQL 獲取服務器版本與當前數據庫?

SELECT VERSION(), DATABASE();

若 DATABASE() 返回 NULL,說明未執行 USE db_name。

Q2: 列出表 Tecmint 中 user 不等於 'SAM' 的所有記錄

SELECT * FROM Tecmint WHERE user != 'SAM';  -- 或 user <> 'SAM'

Q3: AND/OR 與比較運算符的正確搭配

  • = 配合 AND:WHERE user='SAM' AND root='phil'
  • != 配合 OR:WHERE user!='SAM' OR root!='phil'(德摩根律則:非(且) = 非 或 非)

Q4: IFNULL() 作用與示例

SELECT name, IFNULL(id, 'Unknown') AS id FROM taxpayer;
-- id 為 NULL 時顯示 'Unknown',否則顯示原值

Q5: 如何只取結果集的前 N 行或最後 N 行?

-- 前 1 行
SELECT * FROM profile LIMIT 1;

-- 前 5 行
SELECT * FROM profile LIMIT 5;

-- 按出生日期排序取最早 1 行
SELECT * FROM profile ORDER BY birth LIMIT 1;

Q6: Oracle vs MySQL 選型理由

選 MySQL 核心理由:開源免費、輕量級、命令行/圖形工具生態成熟、Query Browser/Workbench 管理便捷、社區活躍、雲廠商托管完善。
選 Oracle 場景:極高併發核心交易、複雜 PL/SQL 邏輯下沉、成熟 RAC 集群、合規要求商業支持。

Q7: 獲取當前日期的 SQL

SELECT CURRENT_DATE();  -- 或 CURDATE()

Q8: 將表導出為 XML 文件

mysql -u USER_NAME -xml -e "SELECT * FROM table_name" > table_name.xml

小表可用 phpMyAdmin/Navicat 圖形化導出。

Q9: mysql_pconnect vs mysql_connect 差異

特性mysql_connectmysql_pconnect
連接模式短連接(請求結束自動斷開)長連接(進程級持久化,跨請求復用)
關閉方式mysql_close() 顯式關閉不可主動關閉,進程結束自動回收
適用場景低併發、PHP-FPM 模式高併發、持久進程(如 CLI 常駐、Swoole)
風險頻繁建連開銷大連接泄漏導致 max_connections 擊穿、事務殘留

現代建議:PHP 7+ 棄用 mysql_* 全系,改用 mysqli 或 PDO,連接池由中間件(ProxySQL、Swoole)管理。

Q10: 查看 mysql 數據庫 user 表所有索引

SHOW INDEX FROM mysql.user;

重點關注 Key_name、Column_name、Cardinality(基數)、Index_type(BTREE/FULLTEXT/SPATIAL)。

Q11: 什麼是 CSV 表?

  • CSV = Comma-Separated Values(逗號分隔值)。
  • MySQL CSV 引擎:以純文本 CSV 文件存儲數據,可直接用 Excel/文本編輯器查看,**不支持索引、不支持事務、全表鎖**。
  • 典型用途:日志導出、跨系統數據交換、只讀查詢緩存表。

面試加分點

  1. 能說出 EXPLAIN 中 type=ALL/index/range/ref/eq_ref/const/system 的性能遞增順序。
  2. 能手寫 INSERT ... ON DUPLICATE KEY UPDATE 並解釋鎖行行為。
  3. 能畫出主從復制架構圖,講清 Binlog Dump / IO Thread / SQL Thread 三線程交互。
  4. 能說出 InnoDB 事務隔離級別實現原理(MVCC + Next-Key Lock)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved