首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 面試核心知識點全解析

     編輯:MySQL 綜合教學

MySQL 面試核心知識點全解析

1. 事務的 ACID 特性

  • 原子性:事務是不可分割的最小邏輯單元,要麼全做,要麼全不做。
  • 一致性:事務執行前後,資料庫從一個一致性狀態轉換到另一個一致性狀態,由原子性保證。
  • 隔離性:並發事務互不干擾,無法看到彼此的中間狀態。
  • 持久性:事務提交後,修改永久保存到物理存儲,即使系統崩潰也不丟失。

2. MySQL 主流儲存引擎對比

特性MyISAMBDBMemoryInnoDBArchive
儲存限制無無有64TB無
事務支援不支援支援支援支援不支援
鎖機制表鎖頁鎖表鎖行鎖行鎖
B-tree 索引支援支援支援支援不支援
Hash 索引不支援支援支援不支援不支援
全文索引支援不支援不支援不支援(MySQL 5.6+支援)不支援
叢集索引不支援不支援不支援支援不支援
資料壓縮支援不支援不支援支援支援
空間使用低低N/A高極低
記憶體使用低低中等高低
批量插入速度高高高低極高
外鍵支援不支援支援不支援支援不支援

MyISAM

每張表對應三個檔案:.frm(定義)、.MYD(資料)、.MYI(索引)。資料與索引可分離存放以分散 I/O。適合讀多寫少、無事務需求的場景。

InnoDB

MySQL 5.5+ 預設引擎,支援 ACID 事務、行級鎖、外鍵、叢集索引。資料與索引存放在同一表空間,寫入效率略低於 MyISAM,但並發效能優異。

3. 選擇合適的儲存引擎

  • MyISAM:Web 只讀、資料倉儲、日誌分析等讀密集場景。
  • InnoDB:交易處理、高並發、需外鍵約束的核心業務系統。
  • Memory:臨時表、快速查找參考表,資料全在記憶體,重啟丟失。
  • Merge:將多個同結構 MyISAM 表邏輯合併,適合超大資料倉儲(VLDB)。

4. MySQL 特點

  • 處理千萬級記錄的大型資料能力。
  • 支援標準 SQL 語法。
  • 跨平台移植性強,安裝包小巧。
  • 執行效率高,社群資源豐富。
  • 相對大型商業資料庫,調試、管理、優化更簡單。

5. MySQL 支援的資料類型

(此處省略圖片,請參考官方文檔)

  • 數值型:TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT, FLOAT, DOUBLE, DECIMAL 等。
  • 日期時間型:DATE, TIME, DATETIME, TIMESTAMP, YEAR。
  • 字串型:CHAR, VARCHAR, TEXT, BLOB, ENUM, SET 等。
  • 空間資料型:GEOMETRY, POINT, LINESTRING, POLYGON 等。

6. MySQL 內建函數分類速查

數學函數

  • BIN(x)、OCT(x)、HEX(x):進制轉換。
  • FLOOR(x)、ROUND(x,y)、LOG(x,y)、MOD(x,y)。

聚合函數

  • COUNT(col)、MIN(col)、MAX(col)、SUM(col)、AVG(col)。

字串函數

  • LENGTH(s)、CONCAT(s1,s2...)、TRIM(str)、LEFT(str,x)、RIGHT(str,x)、SUBSTRING()、REPLACE()。

日期時間函數

  • NOW()、DATE()、YEAR()、MONTH()、DAY()、HOUR()、MINUTE()、SECOND()、DATE_ADD()、DATE_SUB()、DATEDIFF()。

加密函數

  • MD5(str)、SHA1(str)、PASSWORD(str)、ENCRYPT(str,salt)。

控制流函數

  • CASE WHEN ... THEN ... ELSE ... END、IF(expr, true_val, false_val)、IFNULL(expr1, expr2)、NULLIF(expr1, expr2)。

格式化函數

  • DATE_FORMAT(date, fmt)、TIME_FORMAT(time, fmt)、FORMAT(number, decimals)。

類型轉換

  • CAST(expr AS type)、CONVERT(expr, type),支援 BINARY, CHAR, DATE, DATETIME, TIME, SIGNED, UNSIGNED 等。

系統資訊函數

  • VERSION()、USER()、CURRENT_USER()、CONNECTION_ID()、DATABASE()、FOUND_ROWS()、LAST_INSERT_ID()。

7. MySQL 亂碼問題解決

  1. 安裝時指定字符集(建議 utf8mb4)。
  2. 修改配置檔 my.ini/my.cnf:
    [client] default-character-set=utf8mb4
    [mysql] default-character-set=utf8mb4
    [mysqld] character-set-server=utf8mb4
    collation-server=utf8mb4_general_ci
  3. 建庫建表時顯式指定:CREATE DATABASE db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  4. 連線時執行 SET NAMES utf8mb4;。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved