mssql 外键 简介


一、mssql 外键 简介

mssql外键:主要用于两张表之间的连接
mssql外键:是MSSQL约束中的一种
mssql外键:一个表可以拥有多个外键
mssql外键:外键可以是一个组合键
mssql外键:功能是 保证两张表的资料拥有关联性,避免出现数据不完整,外键可设置为级联更新 级联删除

拥有外键的优点:不存在拥有外键的表中的资料无法和主键表关联的异常
拥有外键的缺点:减少数据迁移的复杂度



二、mssql 外键 使用举例

2.1 mssql 创建外键语法

2.1.1 建表时,直接创建外键

  create table A(keyId int primary key,info varchar(60), writeDate datetime)
   go
  create table B(keyId int   references A(keyId),info varchar(60), writeDate datetime)
  go
  直接将B表的keyId设置外键指向A表的keyId
  

2.1.2 表格建立完毕后,补创外键

  create table A(keyId int primary key,info varchar(60), writeDate datetime)
   go
  create table B(keyId int  ,info varchar(60), writeDate datetime)
   go
   alter table B add foreign key(keyId)  references A(keyId)
   go
   

2.1.3 组合外键设置

    create table A(keyId int not null ,info varchar(60) not null , writeDate datetime)
   go
   /*设置组合主键*/
   alter table A
   add PRIMARY KEY (keyId,info)
   go
  insert into A values (1,'a','2017-1-1'),(2,'b','2017-1-2'),(3,'c','2017-1-3')
  go
 
  create table B(keyId int  ,info varchar(60), writeDate datetime)
   go
   alter table B add foreign key(keyId,info)  references A(keyId,info)
   go
   

2.1.4 外键级联删除和更新操作

   create table A(keyId int PRIMARY KEY  ,info varchar(60) not null , writeDate datetime)
   go
   insert into A values (1,'a','2017-1-1'),(2,'b','2017-1-2'),(3,'c','2017-1-3')
   go
   create table B(keyId int  ,info varchar(60), writeDate datetime)
   go
   /*设置级联更新和删除 */
   alter table B add foreign key(keyId)  references A(keyId) on update cascade on delete cascade 
   go
   

2.2 mssql 外键举例应用

    


create table A(keyId int PRIMARY KEY  ,info varchar(60) not null , writeDate datetime)
   go 
  insert into A values (1,'a','2017-1-1'),(2,'b','2017-1-2'),(3,'c','2017-1-3')
  go 
  create table B(keyId int  ,info varchar(60), writeDate datetime)
   go
   /*设置级联更新和删除 */
   alter table B add foreign key(keyId)  references A(keyId) on update cascade on delete cascade 
   go
    insert into B values(1,'er',getdate())
    go    
 select * from A 
 select * from B 
  go
 update A set keyId=keyId+100 --举例级联更新
 go
 select * from B 
 go
 truncate table B
 drop table B  
 truncate table A
 drop     table A 
 

相关阅读:
MSSQL 主键 简介
sql alter table 关键字简介
sql index 关键字简介
sql create view 关键字简介
sql create table 关键字简介
mssql create database关键字简介
sql select into关键字简介
sql union union all
sql full join关键字简介
sql right join关键字简介
sql left join关键字简介
sql inner join关键字简介
sql join(连接)关键字简介
sql as 关键字简介
sql between 关键字简介
sql in 关键字简介
sql like 关键字简介及应用
sql top 关键字简介
sql delete 关键字简介
sql update 关键字简介
sql insert into 关键字简介及用法
sql order by 关键字用法
sql and or 关键字简介
sql where 关键字简介
sql select distinct top 关键字简介
sql select
sql简介
sql 删除重复数据
如果查询MSSQL中重复列(group by having count)