T-SQL学习之路之数据库完整性之参照完整性

       表的一列或几列的组合的值在表中唯一地指定一行记录,择这样的一列或多列的组合作为主键可实现表的实体完整性,通过定义 PRIMARY KEY约束来创建主键。
       外键约束定义了表与表之间的关系,通过将一个表中一列或多列添加到另一个表中,创建两个表之间的连接,这个列就成为第二个表的外键,通过定义 FOREIGN KEY约束来创建外键。
      使用 PRIMARY KEY约束或 UNIQUE约束来定义主表主键或唯一键, FOREIGN KEY约束来定义从表外键,可实现主表与从表之间的参照完整性。

      定义表间参照关系的步骤是先定义主表主键(或唯一键),再定义从表外键。

----------------------1,使用T-SQL语句创建表间参照关系

    -----A,创建表的同时定义外键

    语法格式:

CREATE TABLE table_name
(
  column_name  datatype  	
  [ CONSTRAINT constraint_name ]  
     [ FOREIGN KEY ][ ( column [ ,...n ] )] 
  REFERENCES referenced_table_name [ ( ref_column [ ,...n ] ) ] 
     [ ON DELETE { NO ACTION | CASCADE | SET NULL | SET            DEFAULT } ] 
     [ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] 
  [ NOT FOR REPLICATION ] 
)
      说明: 
       ● FOREIGN KEY定义的外键应与参数referenced_table_name指定的主表中的主键或唯一键对应。
       ● ON DELETE|ON UPDATE可为外键定义以下参照动作:
       CASCADE:从父表删除或更新行时自动删除或更新行子表中匹配的行
       NO ACTION:如果有一个相关的外键值在子表中,删除或更新父表中主键值不允许。


        例如,创建stu表,其中stno列作为外键,与已建立的以stno列作为主键student表创建表间参照关系:

USE stsc
CREATE TABLE stu
(
  stno char(4)NOT NULL REFERENCES student(stno),
  stname char(8) NOT NULL,
  stbirthday date NULL
)

    -----B,通过修改表定义外键

语法格式:

ALTER TABLE table_name     
  ADD   [ CONSTRAINT constraint_name] 
  [ FOREIGN KEY ][ ( column [ ,...n ] )] 
  REFERENCES referenced_table_name [ ( ref_column [ ,...n ] ) ] 
  [ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] 
  [ ON UPDATE { NO ACTION 
        例如:修改scst数据库中score表的定义,将它的“课程号”列定义为外键,假设course表的“课程号”列已定义为主键。

ALTER TABLE score
   ADD CONSTRAINT FK_score_course FOREIGN KEY(cno)
             REFERENCES course(cno)

----------------------2,使用T-SQL 语句删除表间参照关系

  语法格式:

ALTER TABLE table_name     
   DROP CONSTRAINT constraint_name [,…n]
    例如:删除以上对score课程号列定义的FK_score_course外键约束。

ALTER TABLE score
DROP CONSTRAINT FK_score_course
------------------------------提         示 --------------------------

     提醒我:

      要多去练手,不要在这儿说这么多, 不然,一切都是瞎扯。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值