本文共 1794 字,大约阅读时间需要 5 分钟。
若属性(组) A 是基本关系 R 主键上的属性,则属性 A 不能为控制。(主键不能为空)
解释如下:
△ S 的主键 K 和 R 的外键 F 必须定义在同一个(或一组)域上
对于 S中每个元组在 F 上的值必为下列之一:
CREATE TABLE teacher(tno NUMERIC(6), name VARCHAR(8) NOT NULL, cardno NUMERIC(4), UNIQUE(cardao), #定义候选键,用于唯一性查询,可空 CONSTRAINT PRIMARY KEY(tno)); #定义主键,唯一,不可空
FOREIGN KEY ( <列名表> )REFERENCE <目标表> [( <列名表> )][ON DELETE <参照动作> ][ON UPDATE <参照动作> ] 参照动作> 参照动作> 列名表> 目标表> 列名表>
CASCADE (级联): 删除或修改目标表中的行并自动删除或修改在依赖表中匹配的行。
RESTRICT (受限):只有当依赖表外键中没有与目标表要删除或修改的主键相同时,才能删除目标表中的行,否则拒绝执行此操作。
SET NULL (置空值):删除或修改目标表中的行并将依赖表表中的外键设置为NULL。只有当外键没有被设置成NOT NULL时才有效。
SET DEFAULT (置默认值):删除或修改目标表中的行并将依赖表中的外键设置为指定的默认值。只有外键指定了默认值时才有效。
NOT ACTION:对依赖表无影响。
age NUMERIC(2) CHECK (age BETWEEN 18 AND 60)CONSTRAINT sex CHECK (sex IN('男','女'))
sex char(2) DEFAULT '男'
CREATE DOMAIN <域名> <域类型> CHECK ( <条件> ) 条件> 域类型> 域名>
CREATE DOMAIN Grade CHAR(1) DEFAULT '?'CONSTRAINT Valid_gradeCHECK(VALUE IN ('A','B','C','D','E','F','?'));CREATE TABLE s_c( sno NUMERIC(6), cno VARCHAR(3), grade gradess #这里grade的默认值就为“?”且只能为上面域中指定的值。);
一个断言可以对基本表的单独一行或整个基本表定义有效值集合,或定义存在于多个基本表中的有效值集合。
#每门课程只允许100个学生选课CREATE ASSERTION asser1 #创建断言 CHECK (100>= ALL(SELECT COUNT(sno) FROM s_c GROUP BY cno)); DROP ASSERTION asser1; #撤销断言
转载地址:http://kqded.baihongyu.com/