如果只是key的話,就是普通索引。
mysql的key和index多少有點令人迷惑,單獨的key和其它關鍵詞結合的key(primary key)實際表示的意義是不同,這實際上考察對數據庫體系結構的了解的。
primary key 有兩個作用,一是約束作用(constraint),用來規范一個存儲主鍵和唯一性,但同時也在此key上建立了一個主鍵索引
unique key 也有兩個作用,一是約束作用(constraint),規范數據的唯一性,但同時也在這個key上建立了一個唯一索引;
foreign key 也有兩個作用,一是約束作用(constraint),規范數據的引用完整性,但同時也在這個key上建立了一個index;
mysql> desc aa;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
| xx | int(11) | YES | PRI | NULL | |
+-------+---------+------+-----+---------+-------+
| yy | int(11) | YES | UNI | NULL | |
+-------+---------+------+-----+---------+-------+
| zz | int(11) | YES | MUL | NULL | |
+-------+---------+------+-----+---------+-------+
1 row in set (0.00 sec)
我們看到Key那一欄,可能會有4種值,即'啥也沒有','PRI','UNI','MUL'
1. 如果Key是空的, 那么該列值的可以重復,表示該列沒有索引, 或者是一個非唯一的復合索引的非前導列
2. 如果Key是PRI, 那么該列是主鍵的組成部分
3. 如果Key是UNI, 那么該列是一個唯一值索引的第一列(前導列),且不能含有空值(NULL)
4. 如果Key是MUL, 那么該列的值可以重復, 該列是一個非唯一索引的前導列(第一列)或者是一個唯一性索引的組成部分但是可以含有空值NULL