200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 怎么把复合主键改为单一主键

怎么把复合主键改为单一主键

时间:2019-03-09 14:01:02

相关推荐

怎么把复合主键改为单一主键

数据库|mysql教程

MySQL

数据库-mysql教程

所谓的复合主键 就是指你表的主键含有一个以上的字段组成,不使用无业务含义的自增id作为主键。

即时通讯网站开发源码,ubuntu显示复制细节,爬虫头像动图,php chmod 失败,seo_petelzw

比如

拼多多源码,ubuntu系统备份恢复,tomcat 标题栏图标,卧室进爬虫,武汉优顺php,合肥去哪找seo关键字排名lzw

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

上面的name和id字段组合起来就是你test表的复合主键 ,它的出现是因为你的name字段可能会出现重名,所以要加上ID字段这样就可以保证你记录的唯一性 ,一般情况下,主键的字段长度和字段数目要越少越好 。

房地产微信小程序源码,vscode怎么将代码超大,固态硬盘ubuntu,tomcat并发请求原理,python美女爬虫,php 科学计数法转换,仙游seo生产厂家,网站群后台管理系统开源,ecshop模板二次开发教程lzw

这里就会有一个疑惑? 主键是唯一的索引,那么为何一个表可以创建多个主键呢?

其实“主键是唯一的索引”这话有点歧义的。举个例子,我们在表中创建了一个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);

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。