| 索引類型 | SQL 語法 |
|---|---|
| 主鍵 (PRIMARY KEY) | ALTER TABLE `table_name` ADD PRIMARY KEY (`column`) |
| 唯一 (UNIQUE) | ALTER TABLE `table_name` ADD UNIQUE (`column`) |
| 普通 (INDEX) | ALTER TABLE `table_name` ADD INDEX index_name (`column`) |
| 全文 (FULLTEXT) | ALTER TABLE `table_name` ADD FULLTEXT (`column`) |
| 多列組合 | ALTER TABLE `table_name` ADD INDEX idx_name (`col1`, `col2`, `col3`) |
mysql> ALTER TABLE test ADD INDEX (t_name);
Query OK, 0 rows affected (0.17 sec)
mysql> DESCRIBE test;
+------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+------------+------+-----+---------+-------+
| t_id | int(11) | YES | | NULL | |
| t_name | varchar(50) | NO | MUL | NULL | |
| t_password | char(32) | YES | | NULL | |
| t_birth | date | YES | | NULL | |
+------------+-------------+------+-----+---------+-------+
Key 列顯示 MUL 表示:非唯一索引前導列、或唯一索引組成部分但允許 NULL。
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
email VARCHAR(100),
INDEX idx_username (username),
UNIQUE uk_email (email),
FULLTEXT ft_bio (bio)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
ALTER TABLE test DROP INDEX idx_name;
-- 或
DROP INDEX idx_name ON test;
SHOW INDEX FROM test;
SHOW CREATE TABLE test; -- 含索引定義
INDEX(name(10))