
- MySQL 基礎
- MySQL - 首頁
- MySQL - 簡介
- MySQL - 特性
- MySQL - 版本
- MySQL - 變數
- MySQL - 安裝
- MySQL - 管理
- MySQL - PHP 語法
- MySQL - Node.js 語法
- MySQL - Java 語法
- MySQL - Python 語法
- MySQL - 連線
- MySQL - Workbench
- MySQL 資料庫
- MySQL - 建立資料庫
- MySQL - 刪除資料庫
- MySQL - 選擇資料庫
- MySQL - 顯示資料庫
- MySQL - 複製資料庫
- MySQL - 資料庫匯出
- MySQL - 資料庫匯入
- MySQL - 資料庫資訊
- MySQL 使用者
- MySQL - 建立使用者
- MySQL - 刪除使用者
- MySQL - 顯示使用者
- MySQL - 修改密碼
- MySQL - 授予許可權
- MySQL - 顯示許可權
- MySQL - 收回許可權
- MySQL - 鎖定使用者賬戶
- MySQL - 解鎖使用者賬戶
- MySQL 表
- MySQL - 建立表
- MySQL - 顯示錶
- MySQL - 修改表
- MySQL - 重命名錶
- MySQL - 克隆表
- MySQL - 截斷表
- MySQL - 臨時表
- MySQL - 修復表
- MySQL - 描述表
- MySQL - 新增/刪除列
- MySQL - 顯示列
- MySQL - 重新命名列
- MySQL - 表鎖定
- MySQL - 刪除表
- MySQL - 派生表
- MySQL 查詢
- MySQL - 查詢
- MySQL - 約束
- MySQL - INSERT 查詢
- MySQL - SELECT 查詢
- MySQL - UPDATE 查詢
- MySQL - DELETE 查詢
- MySQL - REPLACE 查詢
- MySQL - INSERT IGNORE
- MySQL - INSERT ON DUPLICATE KEY UPDATE
- MySQL - INSERT INTO SELECT
- MySQL 運算子和子句
- MySQL - WHERE 子句
- MySQL - LIMIT 子句
- MySQL - DISTINCT 子句
- MySQL - ORDER BY 子句
- MySQL - GROUP BY 子句
- MySQL - HAVING 子句
- MySQL - AND 運算子
- MySQL - OR 運算子
- MySQL - LIKE 運算子
- MySQL - IN 運算子
- MySQL - ANY 運算子
- MySQL - EXISTS 運算子
- MySQL - NOT 運算子
- MySQL - 不等於運算子
- MySQL - IS NULL 運算子
- MySQL - IS NOT NULL 運算子
- MySQL - BETWEEN 運算子
- MySQL - UNION 運算子
- MySQL - UNION vs UNION ALL
- MySQL - MINUS 運算子
- MySQL - INTERSECT 運算子
- MySQL - INTERVAL 運算子
- MySQL 連線
- MySQL - 使用連線
- MySQL - INNER JOIN
- MySQL - LEFT JOIN
- MySQL - RIGHT JOIN
- MySQL - CROSS JOIN
- MySQL - FULL JOIN
- MySQL - 自連線
- MySQL - DELETE JOIN
- MySQL - UPDATE JOIN
- MySQL - UNION vs JOIN
- MySQL 觸發器
- MySQL - 觸發器
- MySQL - 建立觸發器
- MySQL - 顯示觸發器
- MySQL - 刪除觸發器
- MySQL - BEFORE INSERT 觸發器
- MySQL - AFTER INSERT 觸發器
- MySQL - BEFORE UPDATE 觸發器
- MySQL - AFTER UPDATE 觸發器
- MySQL - BEFORE DELETE 觸發器
- MySQL - AFTER DELETE 觸發器
- MySQL 資料型別
- MySQL - 資料型別
- MySQL - VARCHAR
- MySQL - BOOLEAN
- MySQL - ENUM
- MySQL - DECIMAL
- MySQL - INT
- MySQL - FLOAT
- MySQL - BIT
- MySQL - TINYINT
- MySQL - BLOB
- MySQL - SET
- MySQL 正則表示式
- MySQL - 正則表示式
- MySQL - RLIKE 運算子
- MySQL - NOT LIKE 運算子
- MySQL - NOT REGEXP 運算子
- MySQL - regexp_instr() 函式
- MySQL - regexp_like() 函式
- MySQL - regexp_replace() 函式
- MySQL - regexp_substr() 函式
- MySQL 函式 & 運算子
- MySQL - 日期和時間函式
- MySQL - 算術運算子
- MySQL - 數值函式
- MySQL - 字串函式
- MySQL - 聚合函式
- MySQL 其他概念
- MySQL - NULL 值
- MySQL - 事務
- MySQL - 使用序列
- MySQL - 處理重複項
- MySQL - SQL 注入
- MySQL - 子查詢
- MySQL - 註釋
- MySQL - 檢查約束
- MySQL - 儲存引擎
- MySQL - 將表匯出到 CSV 檔案
- MySQL - 將 CSV 檔案匯入資料庫
- MySQL - UUID
- MySQL - 公共表表達式
- MySQL - ON DELETE CASCADE
- MySQL - Upsert
- MySQL - 水平分割槽
- MySQL - 垂直分割槽
- MySQL - 遊標
- MySQL - 儲存函式
- MySQL - SIGNAL
- MySQL - RESIGNAL
- MySQL - 字元集
- MySQL - 排序規則
- MySQL - 萬用字元
- MySQL - 別名
- MySQL - ROLLUP
- MySQL - 當天日期
- MySQL - 字面量
- MySQL - 儲存過程
- MySQL - EXPLAIN
- MySQL - JSON
- MySQL - 標準差
- MySQL - 查詢重複記錄
- MySQL - 刪除重複記錄
- MySQL - 選擇隨機記錄
- MySQL - SHOW PROCESSLIST
- MySQL - 更改列型別
- MySQL - 重置自動遞增
- MySQL - COALESCE() 函式
- MySQL 有用資源
- MySQL - 有用函式
- MySQL - 語句參考
- MySQL - 快速指南
- MySQL - 有用資源
- MySQL - 討論
MySQL - 版本
任何產品中引入版本是為了透過新增額外功能、刪除不必要的元件、修復錯誤等來進行升級。版本控制過程對於使產品隨著技術發展而更高效至關重要。
產品通常在完成測試階段後釋出:alpha 測試、beta 測試、gamma 測試,只有透過所有這些測試後才能生產。
安裝 MySQL 時,必須選擇要安裝的版本及其分發格式。MySQL 的最新版本為8.0,其次要版本為8.0.34。安裝 MySQL 伺服器有兩種方法:開發版和正式版。
開發版包含所有最新功能,但不建議在生產環境中使用。正式版更適合生產環境,可以在生產環境中穩定使用。
MySQL 版本
MySQL 是一款快速易用的 RDBMS,被許多大小企業使用。它由 MySQL AB(一家瑞典公司)開發、銷售和支援。MySQL 於 1995 年 5 月 23 日首次內部發布,直到 Oracle 收購 Sun Microsystems,才釋出了 3.19 版到 5.1 版。
5.1 版本
MySQL 5.1 版本於 2008 年 11 月 27 日正式釋出,添加了諸如事件排程程式、分割槽、外掛 API、基於行的複製、伺服器日誌表等額外功能。
但是,5.1 版本包含 20 個已知的錯誤,導致結果錯誤,加上 5.0 版本的 35 個錯誤。然而,截至 5.1.51 版本,幾乎所有錯誤都已修復。此外,MySQL 5.1 和 6.0(處於 alpha 測試階段)在資料倉庫方面表現不佳,這部分可能是由於它無法利用多個 CPU 核心來處理單個查詢。
5.5 版本
截至 2010 年 12 月,MySQL Server 5.5 是一個正式版。此版本改進的功能包括:
預設儲存引擎為 InnoDB,具有改進的 I/O 子系統,支援事務和參照完整性約束。
改進的 SMP 支援
半同步複製。
添加了 SIGNAL 和 RESIGNAL 語句,符合 SQL 標準。
支援補充 Unicode 字元集 utf16、utf32 和 utf8mb4。
使用者定義分割槽的新選項。
5.6 版本
MySQL 5.6 正式版於 2013 年 2 月釋出。此版本的新功能包括:
查詢最佳化器具有更高效的效能。
InnoDB 中更高的交易吞吐量。
新的 NoSQL 風格的 memcached API。
改進分割槽以查詢大型表。
更好地管理超大型表。
正確儲存毫秒的 TIMESTAMP 列型別。
複製改進。
透過擴充套件 PERFORMANCE_SCHEMA 中提供的資料來改進效能監控。
InnoDB 儲存引擎還提供對全文搜尋的支援並改進了組提交效能。
5.7 版本
MySQL 5.7 於 2015 年 10 月正式釋出。對於 MySQL 5.7 的次要版本,MySQL 5.7.8 及更高版本在 2015 年 8 月支援由 RFC 7159 定義的原生 JSON 資料型別。
8.0 版本
MySQL Server 8.0 於 2018 年 4 月釋出,具有新的改進功能。目前,MySQL 8.0 的次要版本從 8.0.0 到 8.0.34。之前的 MySQL Server 8.0.0-dmr(作為開發里程碑版本)於 2016 年 9 月 12 日釋出。
MySQL 8.0 中新增的功能
MySQL 的最新版本是 8.0。以下是一些新增的功能:
資料字典 - 在之前的 MySQL 版本中,字典資料儲存在元資料檔案和非事務表中。MySQL 現在包含一個事務性資料字典,用於儲存有關資料庫物件的資訊。
原子資料定義語言 (Atomic DDL) 語句 - 原子 DDL 語句將與 DDL 操作相關的資料字典更新、儲存引擎操作和二進位制日誌寫入組合到單個原子事務中。
升級過程 - 以前,在安裝新版本的 MySQL 後,MySQL 伺服器會在下次啟動時自動升級資料字典表,之後 DBA 需要手動呼叫 mysql_upgrade 來升級 mysql 模式中的系統表以及其他模式(例如“sys”模式和使用者模式)中的物件。
從 MySQL 8.0.16 開始,伺服器還會執行以前由 mysql_upgrade 處理的任務。此外,伺服器還會更新幫助表的內容。新的 --upgrade 伺服器選項可以控制伺服器如何執行自動資料字典和伺服器升級操作。
會話重用 − MySQL 伺服器現在預設支援 SSL 會話重用,並帶有超時設定來控制伺服器維護會話快取的時間長度,該快取確定客戶端允許請求會話重用以建立新連線的期間。所有 MySQL 客戶端程式都支援會話重用。此外,C 應用程式現在可以使用 C API 功能來啟用加密連線的會話重用。
安全和帳戶管理 − 安全性得到極大提升,並增強了 DBA 在帳戶管理方面的靈活性。
資源管理 − MySQL 現在支援建立和管理資源組,並允許將伺服器內執行的執行緒分配到特定組,以便執行緒根據組可用的資源執行。
表加密管理 − 現在可以透過定義和強制執行加密預設值來全域性管理表加密。
InnoDB 增強 − 添加了一些 InnoDB 增強功能,例如自動遞增計數器值、索引樹損壞、memcached 外掛、InnoDB_deadlock_detect、表空間加密功能、儲存引擎、InnoDB_dedicated_server、在臨時表空間中建立臨時表、zlib 庫等。
字元集支援 − 預設字元集已從 latin1 更改為 utf8mb4。utf8mb4 字元集具有幾個新的排序規則,包括 utf8mb4_ja_0900_as_cs,這是 MySQL 中首個可用於 Unicode 的日語特定排序規則。
JSON 增強 − 對 MySQL 的 JSON 功能進行了一些增強和新增。
資料型別支援 − MySQL 現在支援在資料型別規範中使用表示式作為預設值。這包括將表示式用作 BLOB、TEXT、GEOMETRY 和 JSON 資料型別的預設值,這些資料型別以前根本無法分配預設值。
最佳化器 − 最佳化器也以多種方式得到了增強。
改進的雜湊連線效能 − MySQL 8.0.23 重新實現了用於雜湊連線的雜湊表,從而在雜湊連線效能方面取得了幾項改進。
公用表表達式 − MySQL 現在支援公用表表達式,包括非遞迴和遞迴表示式。
視窗函式 − MySQL 現在支援視窗函式,這些函式針對查詢中的每一行執行計算,使用與該行相關的行。
橫向派生表 − 派生表現在可以在前面加上 LATERAL 關鍵字,以指定它允許引用(依賴於)同一 FROM 子句中前面表的列。
單表 DELETE 語句中的別名 − 在 MySQL 8.0.16 及更高版本中,單表 DELETE 語句支援使用表別名。
正則表示式支援 − 此前,MySQL 使用 Henry Spencer 正則表示式庫來支援正則表示式運算子。
內部臨時表 − TempTable 儲存引擎取代 MEMORY 儲存引擎成為記憶體中內部臨時表的預設引擎。
日誌記錄 − 新版本中的日誌記錄過程也得到了改進。
除了所有這些之外,新版本的 MySQL 還添加了許多其他功能。
MySQL 8.0 中棄用的功能
以下是 MySQL 8.0 中棄用的一些功能,這些功能可能會在未來的系列中刪除。應用程式可以使用提到的幾種替代方法。
utf8mb3 字元集已棄用。請改用 utf8mb4。
ucs2、macroman 和 macce、dec、hp8 也已棄用。您應該改用 utf8mb4。
使用者定義的排序規則已棄用。
sha256_password 已棄用。
validate_password 的外掛形式仍然可用,但已棄用。
ALTER TABLESPACE 和 DROP TABLESPACE 語句的 ENGINE 子句已棄用。
PAD_CHAR_TO_FULL_LENGTH SQL 模式已棄用。
對於 FLOAT 和 DOUBLE 型別(以及任何同義詞)的列,AUTO_INCREMENT 支援已棄用。
FLOAT、DOUBLE 和 DECIMAL 型別(以及任何同義詞)的列的 UNSIGNED 屬性已棄用。
FLOAT(M,D) 和 DOUBLE(M,D) 語法已棄用。
數值資料型別的 ZEROFILL 屬性和整數資料型別的顯示寬度屬性已棄用。
BINARY 屬性已棄用。但是,使用 BINARY 指定資料型別或字元集保持不變。
ASCII 和 UNICODE 已棄用(MySQL 8.0.28 及更高版本)。在這兩種情況下,都使用 CHARACTER SET 代替。