第三讲 规则和默认值约束.

Slides:



Advertisements
Similar presentations
3.1 表的建立 教学内容 :一、建立表结构 ; 二、输入数据. 重点 :建立表 难点 :建立表.
Advertisements

第六 章数据库访问页 6.1 数据访问页视图 6.2 创建数据访问页 6.3 编辑数据访问页 6.4 查看数据访问页 退出.
1. SQL概述 2。DDL 3。DML DCL(第四部分安全性讲) 4。嵌入式使用 5。PL/SQL
第5章 索引及视图操作 数据库原理应用与实践 SQL SERver2014(第2版) 主编 贾铁军 科学出版社 编著 陈国秦 万程 邢一鸣
Oracle数据库 Oracle 子程序.
在PHP和MYSQL中实现完美的中文显示
第 8 章 資料的 新增、修改與刪除.
第 11 章 建立檢視表.
第 7 章 建立資料表與 資料庫圖表.
第 16 章 觸發程序.
建立/修改/刪除資料表 建立資料表 使用Enterprise Manager工具
第9章 SQL Server的数据库保护技术 教学目标:通过本章学习,了解SQL Server的安全体系结构的含义和安全认证模式的分类;掌握SQL Server登录账号、用户账号及角色的创建方法;熟悉权限的分类,掌握对象权限和语句权限的管理方法;明确SQL Server中数据完整性的种类,掌握数据完整性实现的具体方法;熟悉SQL.
第 6 章 使用者權限.
管理信息结构SMI.
SQL Injection.
辅导课程六.
网络常用常用命令 课件制作人:谢希仁.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
段磊 王慧锋 TEL: qq群: 数据库系统原理课程设计 实验环节2 段磊 王慧锋 TEL: qq群:
第十章 IDL访问数据库 10.1 数据库与数据库访问 1、数据库 数据库中数据的组织由低到高分为四级:字段、记录、表、数据库四种。
第二章 Java语言基础.
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
第一章 函数与极限.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
数列.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
学习目标 1、什么是字符集 2、字符集四个级别 3、如何选择字符集.
$9 泛型基础.
顺序表的删除.
SQL 范引娣.
线 性 代 数 厦门大学线性代数教学组 2019年4月24日6时8分 / 45.
SQL查询语句 蔡海洋.
用int类型(4字节)去存具体时间(8字节).
VB与Access数据库的连接.
第三章 SQL Server数据管理.
分裂对象模型 C++ otcl.
<编程达人入门课程> 本节内容 内存的使用 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
C语言程序设计 第一章 数据类型, 运算符与表达式 第二章 顺序程序设计 第三章 选择结构程序设计 第四章 循环控制 第五章 数组.
Lightweight Data-flow Analysis for Execution-driven Constraint Solving
Web安全基础教程
ES 索引入门
第 7 章 建立資料表與資料庫圖表.
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
信号量(Semaphore).
第4章 Excel电子表格制作软件 4.4 函数(一).
第九节 赋值运算符和赋值表达式.
3.16 枚举算法及其程序实现 ——数组的作用.
数据集的抽取式摘要 程龚, 徐丹云.
本节内容 结构体 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Chapter 18 使用GRASP的对象设计示例.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
Visual Basic程序设计 第13章 访问数据库
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第二章 Java基本语法 讲师:复凡.
第六讲 SQL语言之数据定义 第三讲 SQL Server 2000 数据库技术.
本节内容 结构体.
11 檢視表的建立 11-1 檢視表的基礎 11-2 建立檢視表 11-3 修改與刪除檢視表 11-4 編輯檢視表的內容.
第六章 Excel的应用 五、EXCEL的数据库功能 1、Excel的数据库及其结构 2、Excel下的数据排序 (1)Excel的字段名行
基于列存储的RDF数据管理 朱敏
第四节 向量的乘积 一、两向量的数量积 二、两向量的向量积.
VB与Access数据库的连接.
第8章 创建与使用图块 将一个或多个单一的实体对象整合为一个对象,这个对象就是图块。图块中的各实体可以具有各自的图层、线性、颜色等特征。在应用时,图块作为一个独立的、完整的对象进行操作,可以根据需要按一定比例和角度将图块插入到需要的位置。 2019/6/30.
WEB程序设计技术 数据库操作.
第三节 数量积 向量积 混合积 一、向量的数量积 二、向量的向量积 三、向量的混合积 四、小结 思考题.
使用ADO访问数据库 李宝智 BonizLee 课程 10564A
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
RefWorks使用指南 归档、管理个人参考文献.
编译原理实践 6.程序设计语言PL/0.
§2 自由代数 定义19.7:设X是集合,G是一个T-代数,为X到G的函数,若对每个T-代数A和X到A的函数,都存在唯一的G到A的同态映射,使得=,则称G(更严格的说是(G,))是生成集X上的自由T-代数。X中的元素称为生成元。 A变, 变 变, 也变 对给定的 和A,是唯一的.
学习目标 1、什么是列类型 2、列类型之数值类型.
Presentation transcript:

第三讲 规则和默认值约束

2.6 规则 2.6.1 规则的定义 规则就是数据库中对存储在表的列或用户自定义数据类型中的值的规定和限制。规则是单独存储的独立的数据库对象。规则与其作用的表或用户自定义数据类型是相互独立的,即表或用户自定义对象的删除、修改不会对与之相连的规则产生影响。规则和约束可以同时使用,表的列可以有一个规则及多个CHECK 约束。规则与CHECK 约束很相似,相比之下,使用在ALTERTABLE 或CREATE TABLE 命令中的CHECK 约束是更标准的限制列值的方法,但CHECK 约束不能直接作用于用户自定义数据类型。

2.6.2 规则的语法结构 CREATE RULE创建称为规则的对象。当绑定到列或用户自定义数据类型时,规则将指定可以插入到列中的可接受的值。规则是一种向后兼容的功能,执行一些与CHECK约束相同的功能。CHECK 约束是使用 ALTER 或 CREATE TABLE 的 CHECK 关键字创建的,是对列中的值进行限制的首选标准方法(可以对一列或多列定义多个约束)。列或用户自定义数据类型只能有一个绑定的规则。但是,列可以同时具有一个或多个与其关联的检查约束。在这种情况下,将检查所有限制。

语法 CREATE RULE rulename AS condition_expression 参数 rulename是新规则的名称。规则名称必须符合标识符规则。可以选择是否指定规则所有者的名称。 condition_expression是定义规则的条件。规则可以是 WHERE 子句中任何有效的表达式,并且可以包含诸如算术运算符、关系运算符和谓词(如 IN、LIKE、BETWEEN)之类的元素。规则不能引用列或其它数据库对象。可以包含不引用数据库对象的内置函数。 condition_expression 包含一个变量。每个局部变量的前面都有一个 @ 符号。该表达式引用通过 UPDATE 或 INSERT 语句输入的值。在创建规则时,可以使用任何名称或符号表示值,但第一个字符必须是 @ 符号。

示例 A. 范围规则 例题2-5 下例创建一个规则,用以限制插入该规则所绑定的列中的整数范围。 CREATE RULE range_rule AS @库存量 >= 0

B. 列表规则 例题2-6 下例创建一个规则,用以将输入到该规则所绑定的列中的实际值限制为只能是该规则中列出的值。 CREATE RULE list_rule AS @商品类型 IN (‘台式机’, ‘笔记本’, ‘平板电脑‘,’耗材’)

C. 模式规则 例题2-7 创建一个遵循这种模式的规则:任意两个字符的后面跟一个连字符和任意多个字符(或没有字符),并以 0 到 9 之间的整数结尾。 CREATE RULE pattern_rule AS @value LIKE '_ _-%[0-9]'

1) 用存储过程Sp_bindrule 绑定规则 存储过程Sp_bindrule 可以绑定一个规则到表的一个列或一个用户自定义数据类型上。其语法如下: sp_bindrule [@rulename =] 'rule', [@objname =] 'object_name' [, 'futureonly'] 各参数说明如下: [@rulename =] 'rule' 指定规则名称。 [@objname =] 'object_name' 指定规则绑定的对象。 'futureonly' 此选项仅在绑定规则到用户自定义数据类型上时才可以使用。当指定此选项时,仅以后使用此用户自定义数据类型的列会应用新规则,而当前已经使用此数据类型的列则不受影响。

注意:规则对已经输入表中的数据不起作用。 规则所指定的数据类型必须与所绑定的对象的数据类型一致,且规则不能绑定一个数据类型为TEXT、MAGE或TIMESTAMP的列。 与表的列绑定的规则优先于与用户自定义数据类型绑定的列,因此,如果表的列的数据类型与规则A绑定,同时列又与规则B绑定,则以规则B为列的规则。 你可以直接用一个新的规则来绑定列或用户自定义数据类型,而不需要先将其原来绑定的规则解除,系统会将早班规则覆盖。

(2)用存储过程Sp_unbindrule 解除规则的绑定 存储过程Sp_unbindrule 可解除规则与列或用户自定义数据类型的绑定,其语法如下: sp_unbindrule [@objname =] 'object_name' [,'futureonly'] 其中'futureonly'选项同绑定时一样,仅用于用户自定义数据类型,它指定现有的用此用户自定义数据类型定义的列仍然保持与此规则的绑定。如果不指定此项,所有由此用户自定义数据类型定义的列也将随之解除与此规则的绑定。

CREATE RULE 定义一个适用于特定表或者视图的新规则。 CREATE OR REPLACE RULE 要么是创建一个新规则, 要么是用一个同表上的同名规则替换现有规则。 现在一般情况下不采用规则的方式来对属性列进行约束,而是会采用约束的方式来完成对属性列的约束。

2.6.3 默认值约束 默认值(Default)是数据库对象之一,它指定在数据库中的表插入数据时,如果用户没有明确给出某个字段的值,SQL Server会自动指定该字段值使用默认值。 记录中的每一列均必须有值,即使它是 NULL。可能会有这种情况,当向表中装载新行时可能不知道某一列的值,或该值尚不存在。如果该列允许空值,就可以将该行赋予空值。由于有时不希望有可为空的列,因此如果合适,更好的解决办法可能是为该列定义 DEFAULT 定义。例如,通常将数字型列的默认值指定为零,将字符串列的默认值指定为暂缺。

当将某行装载到为行定义了 DEFAULT 的表中时,若没有指定列值,则是隐性要求 Microsoft SQL Server 2005 将默认值装载到该列中。 说明  也可以使用 INSERT STATEMENT 语句 DEFAULT VALUES 子句显式要求 SQL Server 将默认值插入列中。  如果列不允许空值且没有 DEFAULT 定义,就必须明确地指定列值,否则 SQL Server 会返回错误信息,指出该列不允许空值。

将 DEFAULT 定义、为空性和对列值的插入归纳如下: 列定义 无输入, 无 DEFAULT 定义 DEFAULT 定义 输入空值 允许空值 NULL 默认值 不允许空值 错误

DEFAULT 对象是为特定数据库定义的。通过将其绑定到默认值要应用的每个列上,它可为不同表的列所共享。例如,如果多个表中均有 quantity 列,则可以在数据库中定义 DEFAULT 对象,当用户在任何表的 quantity列中未输入值时在该列中插入数值 1。

如果 DEFAULT 对象绑定到某列上,可在特定的表中为该列指定不同的默认值。这样在向列绑定新的默认值之前从该列中释放已有的 DEFAULT 对象。 格式: DEFAULT 默认值 例题2-8 定义库存数量的默认值为20。 库存数量 int DEFAULT 20