旗下导航:搜·么
当前位置:网站首页 > MySQL教程 > 正文

怎样把复合主键改成单一主键【MySQL教程】,MySQL

作者:搜教程发布时间:2019-11-27分类:MySQL教程浏览:76评论:0


导读:所谓的复合主键就是指你表的主键含有一个以上的字段构成,不运用无营业寄义的自增id作为主键。比方createtabletest(namevarch...
所谓的复合主键 就是指你表的主键含有一个以上的字段构成,不运用无营业寄义的自增id作为主键。

比方

create table test 
( 
   name varchar(19), 
   id number, 
   value varchar(10), 
   primary key (name,id) 
)

上面的name和id字段组合起来就是你test表的复合主键 ,它的涌现是由于你的name字段能够会涌现重名,所以要加上ID字段如许就能够保证你纪录的唯一性 ,平常情况下,主键的字段长度和字段数量要越少越好 。

这里就会有一个迷惑? 主键是唯一的索引,那末为什么一个表能够建立多个主键呢?

实在“主键是唯一的索引”这话有点歧义的。举个例子,我们在表中建立了一个ID字段,自动增进,并设为主键,这个是没有问题的,由于“主键是唯一的索引”,ID自动增进保证了唯一性,所以能够。

此时,我们再建立一个字段name,范例为varchar,也设置为主键,你会发明,在表的多行中你是能够填写雷同的name值的,这岂不是有违“主键是唯一的索引”这句话么?

所以我才说“主键是唯一的索引”是有歧义的。应该是“当表中只需一个主键时,它是唯一的索引;当表中有多个主键时,称为复合主键,复合主键团结保证唯一索引”。

为什么自增进ID已能够作为唯一标识的主键,为啥还需要复合主键呢。由于,并非一切的表都要有ID这个字段,比方,我们建一个门生表,没有唯一能标识门生的ID,怎样办呢,门生的名字、岁数、班级都能够反复,没法运用单个字段来唯一标识,这时候,我们能够将多个字段设置为主键,构成复合主键,这多个字段团结标识唯一性,个中,某几个主键字段值涌现反复是没有问题的,只需不是有多条纪录的一切主键值完整一样,就不算反复。

怎样把复合主键改成单一主键

一个表只能有一个主键:

基于一列的主键:

alter table test add constraint PK_TEST primary key(ename);

基于多列的团结主键:

alter table test add constraint PK_TEST primary key(ename,birthday);

以上就是怎样把复合主键改成单一主键的细致内容,更多请关注ki4网别的相干文章!

标签:MySQL


欢迎 发表评论: