规则与check约束的联系,规则与check约束的联系与区别
简述SQL Server 2000规则与CHECK约束的区别.
CHECK 约束比规则更简明,一个列只能应用一个规则,但是却可以应用多个 CHECK 约束。CHECK约束可作为CREATE TABLE 语句的一部分进行指定,而规则以单独的对象创建,然后绑定到列上。
求解:才接触数据库,纯新手,求教:检查约束和规则的区别,咋感觉都差不多???
1.约束定义了必须遵循的的用户维护数据一致性和正确性的规则,是强制实现数 据完整性的主要途径。
主键约束(primary key)
唯一性约束(unique)
检查约束(check) 条件的构造
范围 字段 in(集合)
字段 between........and
字段 =value1 and 字段=value1
逻辑运算符: and
or
not
困难所在:要求字段符合一定的模式或者叫做模式匹配
[NOT]LIKE(模糊查询也用到它)
check(stuName like 'li_')
like的使用最重要的是要掌握通配符
重点在于patten的构造
1.普通字符
2.通配符:% 代表零个或更多字符的任意字符串
_代表一个字符
[]代表指定范围[a-f]或集合([abcdef])中的任何单个字符
[^]不属于指定范围([a-f])或集合([abcdef])中的任何单个字符
例如: check ( stuName LIKE ' [% ]')
check( stuName LIKE ' 张[%]')
check( stuAge LIKE ' [18-20] ' AND
NOT LIKE ' [^19] '
check( stuAge IN(18-19))
年龄在18-20,但不等于19
3.转义字符
默认约束
外键约束(参照约束)
约束可以在以下两个层次上实施:
列级:用户定义的约束只对表中的一列起作用。
表级:用户定义的约束对表中的多列起作用。
2.约束的创建
(1).创建表的同时,建立约束,使用CREATE TABLE语句创建约束
CREATE TABLE 表名
(
列名 列的数据类型
CONSTRAINT 约束名 约束的类型
......n
)
( 2).表创建后,通过修改来实现约束的添加,使用ALTER TABLE命令
ALTER TABLE 表名
WITH CHECK | WITH NOCHECK
ADD CONSTRAINT 约束名 约束的类型
3.主键约束(PRIMARY KEY)
主键用于唯一地标识表中的每一条记录
可以定义一列或多列为主键
主键列上没有任何两行具有相同值(即重复值)
主键列上也不能为空值
4.唯一性约束(UNIQUE)
唯一性约束用来限制不受主键约束的列上的数据的唯一性,
即表中任意两行在 指定列上都不允许有相同的值。
一个表上可以放置多个唯一性约束
唯一性约束和主键约束的区别:
(1).唯一性约束允许在该列上存在NULL值,而主键约束的限制更为严格,不但不允许有重复,而且也不允许有空值。
(2).在创建唯一性约束和主键约束时可以创建聚集索引和非聚集索引,但在 默认情况下主键约束产生聚集索引,而唯一性约束产生非聚集索引
5.检查约束(CHECK)
检查约束用来指定某列的可取值的范围。
它通过限制输入到列中的值来强制域的完整性。
6.默认约束(DEFAULT)
默认约束用于给表中的指定列赋予一个常量值(默认值),当向该表插入数据 时如果用户没有明确给出该列的值,SQL Server会自动为该列输入默认值。每 列只能有一个默认约束。
add constraint 名字 default (表达式 Null) for 默认约束的字段名
7.外键约束(FOREIGN KEY)
外键约束用于与其他表(称为参照表)中的列(称为参照列)建立连接。
将参照表中的主键所在列或具有唯一性约束的列包含在另一个表中,这些列就 构成了另一个表的外键。
当参照表中的参照列更新后,外键列也会自动更新, 从而保证两个表之间的 一致性关系。
注意:(1).将“强制外键约束”或"强制用于复制”设置为“是”,能确保任何数据添加、修改或删除操作都不会违背外键关系
(2).将“更新规则”或"删除规则”设置为“无操作”,拒绝更新或删除主键表
将“更新规则”或"删除规则”设置为“层叠”,级联更新或删除从表中相应的所有行
将“更新规则”或"删除规则”设置为“设置空”,将外键表中相对应的外 键值设置为空值NULL
将“更新规则”或"删除规则”设置为“设置默认值”,如果外键表的所有外键列均已定义默 认值,则该列设置为默认值
规则与检查约束的相同点和不同点
检查约束比规则更简单,一个列智能应用一个规则,但是却可以应用多个检查约束,检查约束作为CREATE TABLE语句的一部分进行指定,而规则以单独的对象创建,然后再创建在列上。
什么叫规则库
规则(Rule) 就是数据库中对存储在表的列或用户自定义数据类型中的值的规定和限制。规则是单独存储的独立的数据库对象。规则与其作用的表或用户自定义数据类型是相互独立的,即表或用户自定义对象的删除、修改不会对与之相连的规则产生影响。规则和约束可以同时使用,表的列可以有一个规则及多个CHECK 约束。规则与CHECK 约束很相似,相比之下,使用在ALTERTABLE 或CREATE TABLE 命令中的CHECK 约束是更标准的限制列值的方法,但CHECK 约束不能直接作用于用户自定义数据类型。
9.2.1 创建规则
(1) 用CREATE RULE 命令创建规则
CREATE RULE 命令用于在当前数据库中创建规则,其语法如下:
CREATE RULE rule_name AS condition_expression
其中condition_expression 子句是规则的定义。condition_expression 子句可以是能用于WHERE 条件子句中的任何表达式,它可以包含算术运算符、关系运算符和谓词(如IN、LIKE、 BETWEEN 等)。
注意:condition_expression子句中的表达式必须以字符“@”开头。