MySQL如何创建主键,外键和复合主键

MySQL如何创建主键,外键和复合主键,第1张

courseidint,

scoreint,primarykey(studentno) )

②修改时:ALTER TABLE table_name ADD CONSTRAINT pk_name PRIMARY KEY(列名)

前提是原先没有设置主键。

2.外键语法①创建时:createtablesc (studentnoint,

courseidint,

scoreint,foreignkey(courseid) )②修改时:ALTER TABLE news_info[子表名] ADD CONSTRAINT FK_news_info_news_type[约束名] FOREIGN KEY (info_id)[子表列] REFERENCES news_type[主表名] (id)[主表列]

3.使用组合主键

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

courseidint,

scoreint,primarykey(studentno,courseid) )

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

不可能,帮你试过了,没错。

drop table student_teacher

create table student_teacher

(

student_id varchar(8) not null,

teacher_id varchar(8) not null,

ischecked int not null,

constraint pk_student_teacher primary key(student_id,teacher_id)

)

go

insert into student_teacher values('2001', 'T001',1)

insert into student_teacher values('2002', 'T001',0)

insert into student_teacher values('2002', 'T002',1)

insert into student_teacher values('2001', 'T002',0)

go

select * from student_teacher

go

复合主键就是用2个或2个以上的字段组成主键。用这个主键包含的字段作为主键,这个组合在数据表中是唯一,且加了主键索引。

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


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

原文地址: http://outofmemory.cn/bake/7889505.html

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

发表评论

登录后才能评论

评论列表(0条)

保存