- 1、本文档共34页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实现数据的完整性
9.创建/使用DEFAULT对象 DEFAULT对象与规则类似,都是与表同一个级别的对象,同规则的创建方式、使用方法是一样的。 DEFAULT对象是为特定数据库定义的,通过将其绑定到默认值要应用的每个列上,与规则类似,都可以被不同的列共享。 如果DEFAULT对象绑定到某一列上,该表已经为列指定了不同的默认值。在向列绑定新的默认值时,原来绑定的默认值对象就会自动地从该表中释放出来。 (1)创建DEFAULT对象/绑定DEFAULT对象 /*创建一个名称为df_age的默认值*/ USE school GO CREATE DEFAULT df_age AS 23 GO /*在学生表格年龄列绑定df_age*/ USE school GO EXECUTE SP_BINDEFAULT df_age,’student.age’ GO (2) DEFAULT从列上解除绑定/删除DEFAULT对象 与解除规则绑定/删除规则的操作一样,如果要删除DEFAULT对象,就先要将绑定在表列上的DEFAULT解除,然后删除DEFAULT对象。 /*使用SP_UNBINDEFAULT命令解除绑定*/ USE school GO EXECUTE SP_UNBINDEFAULT ‘student.age’ GO /*删除df_age对象*/ USE school GO DROP DEFAULT df_age GO DEFAULT与RULE的共同点如下: a.独立于表的数据库对象。 b.定义后需要BIND列。 c.要删除必须要解除绑定。 CHECK约束和规则都是实现域完整性的方法。CHECK约束与表存储在一起,当表被删除时,CHECK约束也将同时被删除;规则独立于表存在于数据库中,可以被多个表操作引用,只有当数据库被删除,规则才被删除。 PRIMARY KEY主键约束:当某一(组)列被设置为主关键字,该一(组)列的取值不能为空或有重复值出现。 UNIQUE惟一约束:当某一(组)列被设置了惟一性约束,该一(组)列的取值不能有重复值出现,可以取空值,但最多只能有一个数据为空。 既然有了主键,为什么还需要UNIQUE约束呢?每个实体,都应该有一个惟一的标识来表示自己,这类属性值可以作为表的主键.另一方面,实体可能还有其他的属性值,也是需要惟一的,比如驾照,军人证,暂住证等,这类属性值就不能作为表的主键存在,但是还需要对存储这类值的列进行限制,则出现了UNIQUE约束. 利用右边的SQL语句验证左边创建的约束。 利用上边的SQL语句验证下边创建的约束。 可以使用SP_HELP以及SP_HELPCONSTRAINT两个命令来查看当前表中所有的约束。 上边的代码因违反了ck_teacher_salary_1约束而报错。下边的代码因违反了ck_teacher_salary_2约束而报错。 由此可见,SQL Server是不会检验出约束的限制是否正确的。约束的作用是叠加的,如果一个列中有多个约束,则录入的数值就要满足所在列上的所有约束。 如果该列允许为空,可以将该行赋予为空。由于有时不希望可能有空的列,可为该列定义一个默认值。 在创建表时,可以创建 DEFAULT 定义作为表定义的一部分。如果某个表已经存在,则可以为其添加 DEFAULT 定义。表中的每一列都可以包含一个 DEFAULT 定义。 若要修改 DEFAULT 定义,必须首先删除现有的 DEFAULT 定义,然后用新定义重新创建它。 两种方法都对,都可以插入,其中city列的值为北京。 PRIMARY KEY主键约束:当某一(组)列被设置为主关键字,该一(组)列的取值不能为空或有重复值出现。 UNIQUE惟一约束:当某一(组)列被设置了惟一性约束,该一(组)列的取值不能有重复值出现,可以取空值,但最多只能有一个数据为空。 在学生表中添加一列cardno,记录学生的身份证号码,而每个学生的身份证号码也是惟一的,这里用惟一性约束来进行限制。可以输入一条重复的身份证号验证一下。 对于新约束,假定为检验表原始数据(原始数据为NULL的不参加检验,不为NULL的原始数据参加检验),对于重新启用的约束,假定为 不检验原始数据. { CHECK | NOCHECK} CONSTRAINT 指定启用或禁用 constraint_name。此选项只能与 FOREIGN KEY 和 CHECK 约束一起使用。如果指定了 NOCHECK,则将禁用约束,从而在将来插入或更新列时,不根据约束条件进行验证。无法禁用 DEFAULT、PRIMARY KEY 和 UNIQUE 约束。 WITH CHECK | WITH NOCHECK 指定表中的数据
文档评论(0)