mysql 为什么要设置复合主键

mysql 为什么要设置复合主键,第1张

复合主键就是用2个或2个以上的字段组成主键,用这个主键包含的字段作为主键,这个组合在表中是唯一的,不能相同的,且加了主键索引。可以这么理解,比如,你的订单表里有很多字段,一般情况只要有个订单号bill_no做主键就可以了,但是,现在要求可能会有补充订单,使用相同的订单号,那么这时单独使用订单号就不可以了,因为会有重复。那么你可以再使用个订单序列号bill_seq来作为区别。把bill_no和bill_seq设成联合主键。即使bill_no相同,bill_seq不同也是可以的。

1.创建主键语法

ALTER TABLE table_name ADD CONSTRAINT pk_name PRIMARY KEY(列名)

2.创建外键语法

ALTER TABLE news_info[子表名] ADD CONSTRAINT FK_news_info_news_type[约束名] FOREIGN KEY (info_id)[子表列] REFERENCES news_type[主表名] (id)[主表列]

3.使用组合主键

如果一列不能唯一区分一个表里的记录时,可以考虑多个列组合起来达到区分表记录的唯一性,形式

①创建时:create table sc (

studentno int,

courseid int,

score int,

primary key (studentno,courseid) )

②修改时:alter table tb_name add primary key (字段1,字段2,字段3)

什么是复合主键?

所谓的复合主键就是指你表的主键含有一个以上的字段组成 

比如 

create table test 

   name varchar(19), 

   id number, 

   value varchar(10), 

   primary key (name,id) 

)

上面的name和id字段组合起来就是你test表的复合主键 

它的出现是因为你的name字段可能会出现重名,所以要加上ID字段这样就可以保证你记录的唯一性 

一般情况下,主键的字段长度和字段数目要越少越好

什么是联合主键? 

(主键原则上是唯一的,别被唯一值所困扰。) 

顾名思义就是多个主键联合形成一个主键组合 

一个简单的例子 

主键A跟主键B组成联合主键 

主键A跟主键B的数据可以完全相同(困扰吧,没关系),联合就在于主键A跟主键B形成的联合主键是唯一的。 

下例主键A数据是1,主键B数据也是1,联合主键其实是11,这个11是唯一值,绝对不充许再出现11这个唯一值。(这就是多对多关系) 

主键A数据 主键B数据 

11 

22 

33 

主键A与主键B的联合主键值最多也就是 

11 

12 

13 

21 

22 

23 

31 

32 

33


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5908763.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-08
下一篇 2023-03-08

发表评论

登录后才能评论

评论列表(0条)

保存