数据库表外键设置

数据库表外键设置

2023年7月13日发(作者:)

数据库表外键设置我们在建⽴数据库的时候,需要为每张表指定⼀个主键,所谓主键就是能够唯⼀标识表中某⼀⾏的属性或属性组,⼀个表只能有⼀个主键,但可以有多个候选索引。因为主键可以唯⼀标识某⼀⾏记录,所以可以确保执⾏数据更新、删除的时候不会出现张冠李戴的错误。当然,其它字段可以辅助我们在执⾏这些操作时消除共享冲突,不过就不在这⾥讨论了。主键除了上述作⽤外,常常与外键构成参照完整性约束,防⽌出现数据不⼀致。所以数据库在设计时,主键起到了很重要的作⽤。常见的数据库主键选取⽅式有:⾃动增长字段⼿动增长字段UniqueIdentifier“COMB(Combine)”类型 外键⽤于与另⼀张表的关联。是能确定另⼀张表记录的字段,⽤于保持数据的⼀致性。⽐如,A表中的⼀个字段,是B表的主键,那他就可以是A表的外键。

详细例⼦: 创建来年各个简单的表:Author表和Detail表Sql语句如下:create table Author(idint identity(1,1) primary key not null,namevarchar(50))create table Detail(idint identity(1,1) primary key not null,author_id int, detail varchar(50))

--添加外键约束语法注释:alter table 表名 add constraint 约束名 foreign key (引⽤外键列名) references 外键表(外键列)可视化的操作⽅法: table->选中表->design->选中需要设置外键的字段->选择“关系”->选择"添加"->在表和列规范处选择右边省略号(见图⼀)->再选择相应关系(见图⼆)。如图:图⼀:

图⼆:

备注:1.。。外键和主键的字段的数据类型必须相同。2.。。在删除表的时候要先删除外键表才能删除主键表3.。。图⼆中主键表选择要设置外键字段参照的表(即主键表的⼀个主键是将要设计的外键),外键表就是要添加外键的表。

下⾯提供⼀个⽹上搜集的综合实例.

--创建数据库USE masterGOIF EXISTS(SELECT * FROM sysdatabases WHERE NAME='study')DROP DATABASE studyGOCREATE DATABASE studyON

( NAME = study_dat, FILENAME = 'c:/study/study_', SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB )LOG ON( NAME = 'study_log', FILENAME = 'c:/study/study_', SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB )GO--打开库use study--创建表IF EXISTS(SELECT * FROM sysobjects WHERE NAME='Stu_PkFk_S')DROP TABLE Stu_PkFk_SGOcreate table Stu_PkFk_S(

sno char(6),

sname char(10),

age int,

sex char(2),

constraint PK_S primary key (sno), --主键constraint CK_age check(age>=0 and age<=150) --约束)create table Stu_PkFk_C

(

cno char(8),

cname char(16),

credit int,

constraint PK_C primary key (cno), --主键

constraint CK_credit check (credit>=0) --约束)create table Stu_PkFk_SC

( sno char(6),

cno char (8),

constraint PK_SC primary key (sno,cno),

constraint FK_s foreign key (sno) references Stu_PkFk_S(sno), --外键constraint FK_c foreign key (cno) references Stu_PkFk_C(cno)

)--测试数据insert into Stu_PkFk_S values ('001','zhang',19,'男')insert into Stu_PkFk_S values('002','li',16,'⼥')insert into Stu_PkFk_C values('001','li',100)insert into Stu_PkFk_SC values('002','001')select * from Stu_PkFk_Sselect * from Stu_PkFk_Cselect * from Stu_PkFk_SCDELETE FROM Stu_PkFk_S

DELETE FROM Stu_PkFk_SC

--测试添加删除外键--添加外键约束语法注释:alter table 表名 add constraint 约束名 foreign key (引⽤外键列名) references 外键表(外键列)--删除外键alter table Stu_PkFk_Sc drop constraint FK_salter table Stu_PkFk_SC drop constraint FK_c--添加外键alter table Stu_PkFk_Sc add constraint Fk_s foreign key (sno)

references Stu_PkFk_S(sno)goalter table Stu_PkFk_SC add constraint Fk_c foreign key (cno)

references Stu_PkFk_C(cno)go

--测试添加删除主键 --删除主键alter table Stu_PkFk_S drop constraint PK_S

go

--增加主键

alter table Stu_PkFk_S add constraint PK_S primary key (sno)

go

发布者:admin,转转请注明出处:http://www.yc00.com/news/1689249343a225736.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信