SQLServer中的外键

一、sql server中建立外键约束有3中方式


1.Enterprise Manager中,Tables,Design Table,设置Table的properties,
可以建立constraint, reference key;


2.Enterprise Manager中,Diagrams, new Diagrams,建立两个表的关系。
 

3.直接用transact sql语句。



二、子表,父表的定义

拥有外键的表是子表。主键被其它表引用的表是父表。因为父表的标识被很多个子表中的记录引用,所以叫父表。拥有外键关系,并且可以随便删除数据,不影响其它表的数据的那个表叫子表。



三、使用的时候谁做为谁的外键,主要从以下两点考虑


1、删除是如何相互影响的,删除记录受约束的那个是父表,不受约束的那个是子表;
2、记录必须先存在的是父表;



四、外键约束的用途:


1、创建中检查现存数据

创建关系时将关系应用于外键表中的现有数据。如果选定该对话框,一个错误信息将会通知您有违反约束的数据。



2、对 INSERT 和 UPDATE 强制关系

如果选择该选项,则只要使用这些语句在外键表中添加或更新数据时都将强制约束。



3、对复制强制关系

如果选择该选项,则无论何时将外键表复制到一个不同的数据库,都将强制关系的引用完整性。
 

4、级联更新相关的字段

无论何时更新主键值,都指示数据库将新的键值传播到相应的外键字段。



5、级联删除相关的字段

无论何时删除主表中的行,都指示数据库从外键表中删除相应的行。

 


五、一个SQL创建外键的例子

 

 
SQL 代码   复制

/*建库,名为student_info*/
create database student_info
/*使用student_info*/
use student_info
go

/*建student表,其中s_id为主键*/
create table student
(
s_id int identity(1,1) primary key,
s_name varchar(20) not null,
s_age int
)
go

/*建test表,其中test_no为主键*/
create table test
(
test_no int identity(1,1) primary key,
test_name varchar(30),
nax_marks int not null default(0),
min_marks int not null default(0)
)
go


/*建marks表,其中s_id和test_no为外建,分别映射student表中的s_id和test表中的test_no*/
create table marks
(
s_id int not null,
test_no int not null,
marks int not null default(0),
primary key(s_id,test_no),
foreign key(s_id) references student(s_id),
foreign key(test_no) references test(test_no)
)
go

 

  • 12
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值