在mysql数据库的使用过程中,unique和primary key 是我们比较常用的两种索引了,本文章主要对上述两种索引做一个简要的说明和总结.
1.区别
定义了UNIQUE约束的字段中不能包含重复值,可以为一个或多个字段定义UNIQUE约束, UNIQUED 可空,可以在一个表里的一个或多个字段定义;
unique就是唯一,当你需要限定你的某个表字段每个值都唯一,没有重复值时使用. 比如说,如果你有一个person_Info表,并且表中有个身份证的column,那么你就可以指定该字段unique.
PRIMARY KEY不可空不可重复,在一个表里可以定义联合主键;简单的说, primary key = unique + not null
Unique : 唯一索引,不可重复,可以为空,一张表可以有多个.主要用在一些不可重复的字段上,比如用户名,身份证,之类...
Primary key : 唯一索引,不可重复,一张表只能有一个 . 不可为空.主要用在表的主键id上
2.创建
在执行CREATE TABLE语句时可以创建索引,也可以单独用CREATE INDEX或ALTER TABLE来为表增加索引。
2.1.ALTER TABLE 对已有的表添加索引
ALTER TABLE用来创建普通索引、UNIQUE索引或PRIMARY KEY索引。
1 #创建普通索引
(1.)ALTER TABLE table_name ADD INDEX index_name (column_list) 3 #创建UNIQUE索引 4 (2.)ALTER TABLE table_name ADD UNIQUE (column_list) 5 #创建PRIMARY KEY索引 6 (3.)ALTER TABLE table_name ADD PRIMARY KEY (column_list)
其中table_name是要增加索引的表名,column_list指出对哪些列进行索引,多列时各列之间用逗号分隔。索引名index_name可选,缺省时,MySQL将根据第一个索引列赋一个名称。另外,ALTER TABLE允许在单个语句中更改多个表,因此可以在同时创建多个索引。
2.2.CREATE INDEX
CREATE INDEX可对表增加普通索引或UNIQUE索引。
1 #创建普通索引
(1)CREATE INDEX index_name ON table_name (column_list) 2 #创建UNIQUE索引 3 (2)CREATE UNIQUE INDEX index_name ON table_name (column_list)
table_name、index_name和column_list具有与ALTER TABLE语句中相同的含义,索引名不可选。另外,不能用CREATE INDEX语句创建PRIMARY KEY索引。
2.3. CREATE TABLE
索引也可以在创建表(CREATE TABLE)的同时创建。
(1)创建新表的同时创建该表的主键.语法格式:
CONSTRAINT PRIMARY KEY [索引类型] (<列名>,…)
(2)在创建新表的同时创建该表的索引,语法格式:
KEY | INDEX [<索引名>] [<索引类型>] (<列名>,…)
(3)创建新表的同时创建该表的唯一性索引,语法格式:
UNIQUE [ INDEX | KEY] [<索引名>] [<索引类型>] (<列名>,…)
3.删除索引
1 (1)DROP INDEX index_name ON talbe_name 2 3 (2)ALTER TABLE table_name DROP INDEX index_name 4 5 (3)ALTER TABLE table_name DROP PRIMARY KEY
其中,前两条语句是等价的,删除掉table_name中的索引index_name。
第3条语句只在删除PRIMARY KEY索引时使用,因为一个表只可能有一个PRIMARY KEY索引,因此不需要指定索引名。如果没有创建PRIMARY KEY索引,但表具有一个或多个UNIQUE索引,则MySQL将删除第一个UNIQUE索引。
4.查看索引
1 (1)show index from tblname; 2 (2)show keys from tblname;
本文引自:https://www.cnblogs.com/nyist-xsk/p/7283422.html