加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

mysql如何将复合主键更换为单一主键

发布时间:2022-03-07 15:17:03 所属栏目:MySql教程 来源:互联网
导读:这篇文章给大家分享的是有关mysql如何将复合主键改为单一主键的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。 所谓的复合主键 就是指你表的主键含有一个以上的字段组成,不使用无业务含义的自增id作为主键。 比如 create tabl
      这篇文章给大家分享的是有关mysql如何将复合主键改为单一主键的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。
 
      所谓的复合主键 就是指你表的主键含有一个以上的字段组成,不使用无业务含义的自增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);
 
感谢各位的阅读!关于mysql如何将复合主键改为单一主键就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到吧!

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读