Mysql的unique和primary key

mysql数据库的使用过程中,uniqueprimary 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 INDEXALTER TABLE来为表增加索引。

 

2.1ALTER 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.2CREATE 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_nameindex_namecolumn_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

 

 

 

 

 

 

 

posted @ 2020-04-09 15:32  Anonymity_Zhang  阅读(567)  评论(0编辑  收藏  举报