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不同也是可以的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)