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条)