文档详情

第8章数据完整性讲解.ppt

发布:2017-02-11约字共49页下载文档
文本预览下载声明
8.3 使用约束实施数据完整性 8.3.2 外键约束 外键约束定义了表与表之间的关系。通过将一个表中一列或多列添加到另一个表中,创建两个表之间的连接,这个列就成为第二个表的外键(Foreign Key,FK),即外键是用于建立和加强两个表数据之间的连接的一列或多列,通过它可以强制参照完整性。 当一个表中的一列或多列的组合和其他表中的主键定义相同时,就可以将这些列或列的组合定义为外键,并设定与它关联的表或列。这样,当向具有外键的表插入数据时,如果与之相关联的表的列中没有与插入的外键列值相同的值时,系统会拒绝插入数据。 8.1 使用规则实 施数据完整 性 8.2 使用默认值 实施数据完 整性 8.3 使用约束实 施数据完整 性 8.3 使用约束实施数据完整性 8.3.2 外键约束 定义表级外键约束的语法格式如下: [CONSTRAINT constraint_name] FOREIGN KEY (column_name [,…n ]) REFERENCES ref_table [(ref_column [,…n] )] [ ON DELETE { CASCADE|NO ACTION } ] [ ON UPDATE { CASCADE|NO ACTION } ] ] [ NOT FOR REPLICATION ] 定义列级外键约束的语法格式如下: [CONSTRAINT constraint_name] [FOREIGN KEY] REFERENCES ref_table [ NOT FOR REPLICATION ] 8.1 使用规则实 施数据完整 性 8.2 使用默认值 实施数据完 整性 8.3 使用约束实 施数据完整 性 8.3 使用约束实施数据完整性 8.3.2 外键约束 8.1 使用规则实 施数据完整 性 8.2 使用默认值 实施数据完 整性 8.3 使用约束实 施数据完整 性 【例8-20】 创建一个订货表sell_order1,与例8-18创建的产品表goods1相关联。 CREATE TABLE sell_order1 ( order_id1 char(6) NOT NULL, goods_id char(6) NOT NULL, employee_id char(4) NOT NULL, customer_id char(4)NOT NULL, transporter_id char(4)NOT NULL, order_num float NULL, discount float NULL, order_date datetime NOT NULL, send_date datetime NULL, arrival_date datetime NULL, cost money NULL, CONSTRAINT pk_order_id PRIMARY KEY (order_id1), FOREIGN KEY (goods_id)REFERENCES goods1(goods_id) ) 8.3 使用约束实施数据完整性 8.3.3 唯一性约束 唯一性(unique)约束指定一个或多个列的组合的值具有唯一性,以防止在列中输入重复的值,为表中的一列或者多列提供实体完整性。唯一性约束指定的列可以有NULL属性。主键也强制执行唯一性,但主键不允许空值,故主键约束强度大于唯一约束。因此主键列不能再设定唯一性约束。 定义列级唯一性约束的语法格式如下: [CONSTRAINT constraint_name] UNIQUE [CLUSTERED|NONCLUSTERED] 8.1 使用规则实 施数据完整 性 8.2 使用默认值 实施数据完 整性 8.3 使用约束实 施数据完整 性 8.3 使用约束实施数据完整性 8.3.3 唯一性约束 唯一性约束应用于多列时的定义格式如下: [CONSTRAINT constraint_name] UNIQUE [CLUSTERED|NONCLUSTERED] (column_name [,…n ]) 参数的含义与主键约束的参数含义相同。 唯一性约束与主键约束的区别如下: (1)唯一性约束用于非主键的一列或列组合。 (2)一个表可定义多个唯一性约束,只能定义一个主键约束。 (3)唯一
显示全部
相似文档