T-SQL学习之路之数据库完整性之参照完整性
2015-11-03 20:06
260 查看
表的一列或几列的组合的值在表中唯一地指定一行记录,择这样的一列或多列的组合作为主键可实现表的实体完整性,通过定义PRIMARY KEY约束来创建主键。
外键约束定义了表与表之间的关系,通过将一个表中一列或多列添加到另一个表中,创建两个表之间的连接,这个列就成为第二个表的外键,通过定义FOREIGN KEY约束来创建外键。
使用PRIMARY KEY约束或UNIQUE约束来定义主表主键或唯一键,FOREIGN KEY约束来定义从表外键,可实现主表与从表之间的参照完整性。
定义表间参照关系的步骤是先定义主表主键(或唯一键),再定义从表外键。
● FOREIGN KEY定义的外键应与参数referenced_table_name指定的主表中的主键或唯一键对应。
● ON DELETE|ON UPDATE可为外键定义以下参照动作:
CASCADE:从父表删除或更新行时自动删除或更新行子表中匹配的行
NO ACTION:如果有一个相关的外键值在子表中,删除或更新父表中主键值不允许。
例如,创建stu表,其中stno列作为外键,与已建立的以stno列作为主键student表创建表间参照关系:
提醒我:
要多去练手,不要在这儿说这么多, 不然,一切都是瞎扯。
外键约束定义了表与表之间的关系,通过将一个表中一列或多列添加到另一个表中,创建两个表之间的连接,这个列就成为第二个表的外键,通过定义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------------------------------提 示 --------------------------
提醒我:
要多去练手,不要在这儿说这么多, 不然,一切都是瞎扯。
相关文章推荐
- SqlServer 2005 T-SQL Query 学习笔记(3)
- SQL Server中的T-SQL的基本对象
- SqlServer 2005 T-SQL Query 学习笔记(2)
- 浅析C# 基础语法的使用
- C#基础语法:Base关键字学习笔记
- SqlServer 2005 T-SQL Query 学习笔记(4)
- Erlang程序设计(第2版)读书笔记:Erlang安装和基础语法
- C++基础入门教程(七):一些比较特别的基础语法总结
- JSP学习笔记之基础语法
- JavaScript基础语法让人疑惑的地方小结
- javaScript基础语法介绍
- t-sql/mssql用命令行导入数据脚本的SQL语句示例
- SQLServer用t-sql命令批量删除数据库中指定表(游标循环删除)
- JavaScript学习笔记之基础语法
- Javascript基础知识(一)核心基础语法与事件模型
- JavaScript基础语法、dom操作树及document对象
- Go语言入门教程之基础语法快速入门
- T-SQL跨库查询
- SQL查询语句大全
- css基础