数据完整性理论(二)
● 规则
● 默认
1. 规则
规则(RULE)是一种数据库对象,作用是向表中的列插入数据时,指定该列接受数据值的范围。
特点:
1)规则要在insert和update语句之前给出。
2)规则与其作用的表是相互独立的,即表的删除、修改不会对与之相连的规则产生影响。
3)规则和约束可以同时使用,表的列可以有一个规则及多个CHECK 约束。
4)规则与CHECK 约束很相似。但CHECK 约束不能直接作用于用户自定义数据类型
一、创建规则
1.用CREATE RULE 命令创建规则
CREATE RULE 命令用于在当前数据库中创建规则,其语法如下:
CREATE RULE rule_name AS condition_expression
其中:
rule_name 是规则的名称
condition_expression 子句是规则的定义,它可以是能用于WHERE 条件子句中的任何表达式,可包含算术运算符、关系运算符和谓词(如IN、LIKE、BETWEEN 等)。 condition_expression 子句中的表达式必须以字符@ 开头
例1:创建年龄规则。
create rule age_rule as @age >= 10 and @age
create rule age_rule as @age between 10 and 50
例2:
create rule Sex_rule as @性别 in ('男','女') ----创建性别规则。
create rule Enter_date_rule
as @入学年份>='1953-01-01' and @入学年份
2.用Enterprise Manager 创建规则
在Enterprise Manager 的左侧窗格中,展开要创建规则的数据库(如:JXGL)目录。 在数据库的对象“规则”上面单击右键,此时出现一快捷菜单,从快捷菜单中单击“新建规则”菜单项,则会弹出“规则属性”对话框。
在此对话框中的“名称”对应的文本框中输入要创建的规则的名称(如:age_rule),在“文本”对应的文本框中输入规则的内容(即约束的条件)。
在输入完规则名称和规则的内容之后,单击“确定”按钮即完成规则的创建。
二、查看和修改规则
1.用Enterprise Manager 查看规则
选择要查看的规则,单击右键,从快捷菜单中选择“属性”选项,即会出现“规则属性”对话框,可以从中编辑规则的表达式。
2.用存储过程Sp_helptext 查看规则
其语法如下:sp_helptext [@objname =] 'name'其中,[@objname =] „name‟子句指明对象的名称
用Sp_helptext 存储过程查看的对象可以是当前数据库中的规则、默认、触发器、视图或未加密的存储过程。
如:查看名称为“age_rule”的规则内容。
EXEC sp_helptext 'age_rule'
3.修改规则的名称
可以通过Sp_rename 系统存储过程进行,也可以直接用右键单击要修改的规则,从快捷菜单中选择“重命名”菜单项,进行名称修改。
格式为: sp_rename ’ age_rule’,’nianling_rule’
三、规则的绑定与松绑
创建规则后,规则仅仅只是一个存在于数据库中的对象,并未发生作用。
需要将规则与数据库表或用户自定义对象联系起来,才能达到创建规则的目的。联系的方法称为“绑定”。
所谓绑定就是指定规则作用于哪个表的哪一列。
表的一列只能与一个规则相绑定,而一个规则可以绑定多个对象,这正是规则的魅力所在。
解除规则与对象的绑定称为“松绑”。
1. 用存储过程Sp_bindrule 绑定规则
存储过程Sp_bindrule 可以绑定一个规则到表的一个列或一个用户自定义数据类型上。 其语法如下:sp_bindrule [@rulename =] 'rule',[@objname =] 'object_name'[, 'futureonly']
各参数说明如下:(1)[@rulename =] 'rule' 指定规则名称。
(2)[@objname =] 'object_name' 指定规则绑定的对象。
(3)'futureonly„ 此选项仅在绑定规则到用户自定义数据类型上时才可以使用。
如:绑定规则age_rule 到学生表的字段年龄。
EXEC sp_bindrule 'age_rule', '学生表.年龄'
注:规则对已经输入表中的数据不起作用。
规则所指定的数据类型必须与所绑定的对象的数据类型一致,且规则不能绑定一个数
据类型为TEXT、IMAGE或TIMESTAMP 的列。
如果表的列与规则A 绑定,同时列又与规则B 绑定,则以规则B 为列的规则。 可以直接用一个新的规则来绑定列,而不需要先将其原来绑定的的规则解除,系统会
将旧规则覆盖。
2.用存储过程Sp_unbindrule 解除规则
存储过程Sp_unbindrule 可解除规则与列或用户自定义数据类型的绑定,其语法如下:sp_unbindrule [@objname =] 'object_name' [,'futureonly']
其中:„futureonly‟选项同绑定时一样,仅用于用户自定义数据类型,
如:要解除已绑定到学生表的字段年龄的规则age_rule。
EXEC sp_unbindrule '学生表.年龄'
3.用Enterprise Manager 管理规则的绑定
在相应的规则名称上面单击右键,从快捷菜单中选择“属性”选项
该对话框中的“绑定UDTs”按钮用于将规则绑定到用户自定义数据类型,“绑定列”按钮
用于将规则绑定到表的列。
4. 删除规则
操作1:用Enterprise Manager 删除规则
操作2:使用DROP RULE命令删除规则使用DROP RULE 命令删除当前数据库中的一个或多个规则。
其语法如下:DROP RULE {rule_name} [,...n]
注:在删除一个规则前必须先将与其绑定的对象解除绑定
如:删除age_rule规则,可执行以下命令:DROP RULE age_rule
2 。默认
默认(Default)也是一种数据库对象,与缺省约束的功能一样。用户插入记录时,在没有给出具体数据的字段中,系统会自动插入一个数据。
默认的管理与应用同规则有许多相似之处。
一、创建默认
用CREATE DEFAULT 命令创建默认其语法如下:CREATE DEFAULT default_name AS constant_expression
其中:
default_name是要创建的默认的名称
constant_expression 子句是默认的定义,该子句可以是数学表达式或函数,也可以包含表的列名或其它数据库对象。
如:创建性别默认sex_defa。
CREATE DEFAULT sex_defa as '男'
这样,当用户在输入记录数据时,未提供性别字段的值时,系统将自动默认其值为“男”。
二、查看和修改默认
1.用Enterprise Manager 查看默认
在Enterprise Manager 的左侧窗格中,展开相应的数据库(如:JXGL)目录
在数据库的对象“默认”上面单击,这时在右侧窗格中的任务板中即可看到已建立的各个默认的信息
在某个默认的名称上面单击右键,从快捷菜单中选择“属性”菜单项,即会出现“默认属性”对话框,可以从中编辑默认的值。
2.用存储过程SP_HELPTEXT 查看默认
使用SP_HELPTEXT存储过程可以查看默认的细节。
如:查看默认sex_defa。
EXEC SP_HELPTEXT sex_defa
3. 修改默认的名称
与修改规则名称的方法相同,可以用SP_RENAME存储过程,也可以在企业管理器的任务板窗口中直接改名。
格式为: sp_rename ’ sex _defa’,’ xingbie_defa’
三、默认的绑定与松绑
创建默认后,默认仅仅只是一个存在于数据库中的对象,并未发生作用。
同规则一样,需要将默认与数据库表或用户自定义对象绑定。
表的一列只能与一个默认相绑定,而一个默认可以绑定多个对象。
1.绑定默认xingbie_defa到数据表学生表的性别列上。
EXEC SP_BINDEFAULT xingbie_defa, '学生表.性别'
2.解除默认xingbie_defa与学生表的性别列的绑定。
EXEC SP_UNBINDEFAULT '学生表.性别'
注:
如果列同时绑定了一个规则和一个默认,那么默认应该符合规则的规定。
不能绑定默认到一个用CREATE TABLE 创建或ALTER TABLE 命令修改表时用
DEFAULT 选项(默认约束)指定了的默认的列上。
四、删除教师职称默认xingbie_defa。
DROP DEFAULT xingbie_defa
注意:在删除一个默认前必须先将与其绑定的对象解除绑定
数据完整性理论(二)
● 规则
● 默认
1. 规则
规则(RULE)是一种数据库对象,作用是向表中的列插入数据时,指定该列接受数据值的范围。
特点:
1)规则要在insert和update语句之前给出。
2)规则与其作用的表是相互独立的,即表的删除、修改不会对与之相连的规则产生影响。
3)规则和约束可以同时使用,表的列可以有一个规则及多个CHECK 约束。
4)规则与CHECK 约束很相似。但CHECK 约束不能直接作用于用户自定义数据类型
一、创建规则
1.用CREATE RULE 命令创建规则
CREATE RULE 命令用于在当前数据库中创建规则,其语法如下:
CREATE RULE rule_name AS condition_expression
其中:
rule_name 是规则的名称
condition_expression 子句是规则的定义,它可以是能用于WHERE 条件子句中的任何表达式,可包含算术运算符、关系运算符和谓词(如IN、LIKE、BETWEEN 等)。 condition_expression 子句中的表达式必须以字符@ 开头
例1:创建年龄规则。
create rule age_rule as @age >= 10 and @age
create rule age_rule as @age between 10 and 50
例2:
create rule Sex_rule as @性别 in ('男','女') ----创建性别规则。
create rule Enter_date_rule
as @入学年份>='1953-01-01' and @入学年份
2.用Enterprise Manager 创建规则
在Enterprise Manager 的左侧窗格中,展开要创建规则的数据库(如:JXGL)目录。 在数据库的对象“规则”上面单击右键,此时出现一快捷菜单,从快捷菜单中单击“新建规则”菜单项,则会弹出“规则属性”对话框。
在此对话框中的“名称”对应的文本框中输入要创建的规则的名称(如:age_rule),在“文本”对应的文本框中输入规则的内容(即约束的条件)。
在输入完规则名称和规则的内容之后,单击“确定”按钮即完成规则的创建。
二、查看和修改规则
1.用Enterprise Manager 查看规则
选择要查看的规则,单击右键,从快捷菜单中选择“属性”选项,即会出现“规则属性”对话框,可以从中编辑规则的表达式。
2.用存储过程Sp_helptext 查看规则
其语法如下:sp_helptext [@objname =] 'name'其中,[@objname =] „name‟子句指明对象的名称
用Sp_helptext 存储过程查看的对象可以是当前数据库中的规则、默认、触发器、视图或未加密的存储过程。
如:查看名称为“age_rule”的规则内容。
EXEC sp_helptext 'age_rule'
3.修改规则的名称
可以通过Sp_rename 系统存储过程进行,也可以直接用右键单击要修改的规则,从快捷菜单中选择“重命名”菜单项,进行名称修改。
格式为: sp_rename ’ age_rule’,’nianling_rule’
三、规则的绑定与松绑
创建规则后,规则仅仅只是一个存在于数据库中的对象,并未发生作用。
需要将规则与数据库表或用户自定义对象联系起来,才能达到创建规则的目的。联系的方法称为“绑定”。
所谓绑定就是指定规则作用于哪个表的哪一列。
表的一列只能与一个规则相绑定,而一个规则可以绑定多个对象,这正是规则的魅力所在。
解除规则与对象的绑定称为“松绑”。
1. 用存储过程Sp_bindrule 绑定规则
存储过程Sp_bindrule 可以绑定一个规则到表的一个列或一个用户自定义数据类型上。 其语法如下:sp_bindrule [@rulename =] 'rule',[@objname =] 'object_name'[, 'futureonly']
各参数说明如下:(1)[@rulename =] 'rule' 指定规则名称。
(2)[@objname =] 'object_name' 指定规则绑定的对象。
(3)'futureonly„ 此选项仅在绑定规则到用户自定义数据类型上时才可以使用。
如:绑定规则age_rule 到学生表的字段年龄。
EXEC sp_bindrule 'age_rule', '学生表.年龄'
注:规则对已经输入表中的数据不起作用。
规则所指定的数据类型必须与所绑定的对象的数据类型一致,且规则不能绑定一个数
据类型为TEXT、IMAGE或TIMESTAMP 的列。
如果表的列与规则A 绑定,同时列又与规则B 绑定,则以规则B 为列的规则。 可以直接用一个新的规则来绑定列,而不需要先将其原来绑定的的规则解除,系统会
将旧规则覆盖。
2.用存储过程Sp_unbindrule 解除规则
存储过程Sp_unbindrule 可解除规则与列或用户自定义数据类型的绑定,其语法如下:sp_unbindrule [@objname =] 'object_name' [,'futureonly']
其中:„futureonly‟选项同绑定时一样,仅用于用户自定义数据类型,
如:要解除已绑定到学生表的字段年龄的规则age_rule。
EXEC sp_unbindrule '学生表.年龄'
3.用Enterprise Manager 管理规则的绑定
在相应的规则名称上面单击右键,从快捷菜单中选择“属性”选项
该对话框中的“绑定UDTs”按钮用于将规则绑定到用户自定义数据类型,“绑定列”按钮
用于将规则绑定到表的列。
4. 删除规则
操作1:用Enterprise Manager 删除规则
操作2:使用DROP RULE命令删除规则使用DROP RULE 命令删除当前数据库中的一个或多个规则。
其语法如下:DROP RULE {rule_name} [,...n]
注:在删除一个规则前必须先将与其绑定的对象解除绑定
如:删除age_rule规则,可执行以下命令:DROP RULE age_rule
2 。默认
默认(Default)也是一种数据库对象,与缺省约束的功能一样。用户插入记录时,在没有给出具体数据的字段中,系统会自动插入一个数据。
默认的管理与应用同规则有许多相似之处。
一、创建默认
用CREATE DEFAULT 命令创建默认其语法如下:CREATE DEFAULT default_name AS constant_expression
其中:
default_name是要创建的默认的名称
constant_expression 子句是默认的定义,该子句可以是数学表达式或函数,也可以包含表的列名或其它数据库对象。
如:创建性别默认sex_defa。
CREATE DEFAULT sex_defa as '男'
这样,当用户在输入记录数据时,未提供性别字段的值时,系统将自动默认其值为“男”。
二、查看和修改默认
1.用Enterprise Manager 查看默认
在Enterprise Manager 的左侧窗格中,展开相应的数据库(如:JXGL)目录
在数据库的对象“默认”上面单击,这时在右侧窗格中的任务板中即可看到已建立的各个默认的信息
在某个默认的名称上面单击右键,从快捷菜单中选择“属性”菜单项,即会出现“默认属性”对话框,可以从中编辑默认的值。
2.用存储过程SP_HELPTEXT 查看默认
使用SP_HELPTEXT存储过程可以查看默认的细节。
如:查看默认sex_defa。
EXEC SP_HELPTEXT sex_defa
3. 修改默认的名称
与修改规则名称的方法相同,可以用SP_RENAME存储过程,也可以在企业管理器的任务板窗口中直接改名。
格式为: sp_rename ’ sex _defa’,’ xingbie_defa’
三、默认的绑定与松绑
创建默认后,默认仅仅只是一个存在于数据库中的对象,并未发生作用。
同规则一样,需要将默认与数据库表或用户自定义对象绑定。
表的一列只能与一个默认相绑定,而一个默认可以绑定多个对象。
1.绑定默认xingbie_defa到数据表学生表的性别列上。
EXEC SP_BINDEFAULT xingbie_defa, '学生表.性别'
2.解除默认xingbie_defa与学生表的性别列的绑定。
EXEC SP_UNBINDEFAULT '学生表.性别'
注:
如果列同时绑定了一个规则和一个默认,那么默认应该符合规则的规定。
不能绑定默认到一个用CREATE TABLE 创建或ALTER TABLE 命令修改表时用
DEFAULT 选项(默认约束)指定了的默认的列上。
四、删除教师职称默认xingbie_defa。
DROP DEFAULT xingbie_defa
注意:在删除一个默认前必须先将与其绑定的对象解除绑定