NOT NULL:非空UNIQUE:唯一PRIMARY KEY:主鍵 (隱含 NOT NULL + UNIQUE)FOREIGN KEY:外鍵 (參照完整性)CHECK:條件檢查 (8.0.16+ 生效)AUTO_INCREMENT:自增序號-- 建表
CREATE TABLE `user` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(32) NOT NULL,
`email` VARCHAR(128) NOT NULL UNIQUE,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 修改結構
ALTER TABLE `user` ADD `age` TINYINT UNSIGNED NOT NULL DEFAULT 0;
ALTER TABLE `user` MODIFY `email` VARCHAR(255) NOT NULL UNIQUE;
ALTER TABLE `user` DROP `age`;
ALTER TABLE `user` RENAME TO `member`;
-- 刪表
DROP TABLE IF EXISTS `member`;
-- 新增
INSERT INTO `user` (`name`,`email`) VALUES ('Tom','tom@mail.com');
INSERT INTO `user` (`name`,`email`) VALUES ('A','a@mail.com'),('B','b@mail.com');
-- 查詢
SELECT `id`,`name` AS `username` FROM `user` WHERE `id` BETWEEN 1 AND 10;
SELECT DISTINCT `email` FROM `user`;
SELECT * FROM `user` WHERE `name` IN ('Tom','A');
SELECT * FROM `user` WHERE `name` LIKE 'T%'; -- % 多字元,_ 單字元
-- 更新
UPDATE `user` SET `name`='Tommy' WHERE `id`=1;
-- 刪除
DELETE FROM `user` WHERE `id` > 100;
| 類型 | 關鍵字 | 特性 |
|---|---|---|
| 主鍵索引 | PRIMARY KEY | 唯一、非空、聚簇索引 |
| 唯一索引 | UNIQUE | 值唯一、允許一 NULL |
| 普通索引 | INDEX / KEY | 可重複、可 NULL |
| 全文索引 | FULLTEXT | 文字搜尋、5.6+ InnoDB 支援 |
CREATE INDEX idx_name ON `user`(`name`);
CREATE FULLTEXT INDEX ft_content ON `article`(`content`);
SHOW ENGINES; -- 查看支援引擎
資料檔案通常位於 datadir (如 /var/lib/mysql 或 C:\ProgramData\MySQL\Data)。
SHOW VARIABLES LIKE 'character_set%';
SHOW VARIABLES LIKE 'collation%';
character-set-server (my.cnf)CREATE DATABASE ... CHARSET=utf8mb4CREATE TABLE ... CHARSET=utf8mb4col VARCHAR(32) CHARSET=utf8mb4SET NAMES utf8mb4[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
Windows 客戶端亂碼快速修正:連線後執行 SET NAMES gbk (僅適用舊系統),新專案請全鏈路 utf8mb4。