MySQL 與大多數資料庫不同,擁有「儲存引擎」的概念,可針對不同儲存需求選擇不同引擎。常用指令如下:
SHOW ENGINES; — 查看 MySQL 支援的儲存引擎SHOW VARIABLES LIKE 'table_type'; — 查看預設資料表類型最常用的兩大引擎為 MyISAM 與 InnoDB。建表時可指定引擎:
CREATE TABLE ... ENGINE = InnoDB;
同一資料庫中,不同資料表可使用不同引擎共存。
| 功能 | MyISAM | InnoDB |
|---|---|---|
| 事務處理 | 不支援 | 支援 |
| 資料列鎖定 | 不支援(表鎖) | 支援(行鎖) |
| 外鍵約束 | 不支援 | 支援 |
| 表空間佔用 | 較小 | 較大(最多 2 倍) |
| 全文索引 | 支援 | 不支援(5.6+ 已支援) |
| 儲存檔案(/var/lib/mysql/) | 3 個檔案(.frm 結構、.MYD 資料、.MYI 索引) | 1 個檔案(.frm)+ 共享表空間 |
MyISAM 成熟穩定、讀取快,但需定期 OPTIMIZE TABLE 回收碎片空間;InnoDB 支援事務與行鎖,適合高併發寫入場景。
MySQL 支援多種編碼,常見者:
utf8):1–4 位元組,Unicode 標準,強烈推薦字元集層級可分別指定:伺服器、資料庫、資料表、欄位。查看支援字元集:SHOW CHARACTER SET;
_ci 不分大小寫、_cs 分大小寫、_bin 二進位比較)常用指令:
SHOW COLLATION LIKE 'gbk%'; -- 查看 gbk 校對規則
SHOW VARIABLES LIKE 'character_set_server'; -- 伺服器字元集
SHOW VARIABLES LIKE 'collation_server'; -- 伺服器校對規則
-- 建庫/建表時指定
CREATE DATABASE xsdemo DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT) ENGINE=MyISAM DEFAULT CHARSET=gbk COLLATE=gbk_chinese_ci;
-- 修改既有資料庫/資料表
ALTER DATABASE xsdemo CHARACTER SET utf8;
ALTER TABLE t1 CHARACTER SET utf8;
三個關鍵變數應保持一致:character_set_client、character_set_connection、character_set_results。可用 SET NAMES utf8 一次設定三者。
# 備份(僅結構)
mysqldump -u root -p --default-character-set=gbk -d xsdemo > /home/backup.sql
# 還原
mysql -u root -p xsdemo < /home/backup.sql
使用 ALTER TABLE 執行結構變更:
ALTER TABLE t1 ADD price DOUBLE NOT NULL DEFAULT 0.00;ALTER TABLE t1 ADD sex VARCHAR(5) AFTER name; / ... ADD height DOUBLE FIRST;ALTER TABLE t1 MODIFY sex CHAR(3);ALTER TABLE t1 CHANGE name username VARCHAR(5);ALTER TABLE t1 RENAME users;ALTER TABLE t1 DROP age;DROP TABLE IF EXISTS users;