数据库___第4章(续)__数据完整性201210_第1页
数据库___第4章(续)__数据完整性201210_第2页
数据库___第4章(续)__数据完整性201210_第3页
数据库___第4章(续)__数据完整性201210_第4页
数据库___第4章(续)__数据完整性201210_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章 续 数据完整性 4 6数据完整性的概念4 7约束4 8默认4 9规则 4 6数据完整性的概念 数据完整性是指数据库中的数据应保持一致性和可靠性 进而防止数据库中不符合语义规定的数据 因错误信息的输入 输出而造成无效的操作或错误信息 四类数据完整性 参照完整性 参照完整性规定两个表的主关键字 主码 和外关键字 外码 的数据对应一致 参照完整性保证了被参照表 主表 和参照表 从表 之间的数据一致性 参照完整性防止了数据丢失或无意义的数据在数据库中扩散 参照完整性是建立在外关键字 主关键字和唯一性关键字之间的关系之上 禁止在从表中插入包含主表中不存在的关键字的数据行 禁止会导致从表中的相应值孤立的主表中的外关键字值改变 禁止删除在从表中有对应记录的主表记录 四类数据完整性与多种实现途径 实体完整性 域完整性 参照完整性 约束constraintCHECKFOREIGNKEYDEFAULT默认default 默认对象 默认值 规则rule 用户自定义完整性 约束constraintFOREIGNKEY 约束constraintPRIMARYKEYUNIQUE唯一索引 IDENTITY 特性 规则 缺省值 约束 触发器 4 7 1约束的定义 2种 使用 createtable 语句 在建立新表的同时定义约束createtabletablename column namedata type defaultconstraint expression constraintconstraint name null notnull primarykey unique foreignkey referencesref talbe red column check notreplication n 4 7 1约束的定义 createtableclerktable codevarchar 6 notnull clerknamenvarchar 20 notnull addressvarchar 20 constraintPK codePRIMARYKEY code 4 7 1约束的定义 2 使用 altertable 语句 向已存在的表中添加约束 ALTERTABLEtablename ADD CONTSTRAINTconstraint name NULL NOTNULL PRIMARYKEY UNIQUE FOREIGNKEY REFERENCESref table ref column DEFAULTconstant expression CHECK logical exprression n DROP CONSTANT constant name COLUMNcolumn n 4 7 2 PRIMARYKEY 主键约束 主键约束说明如下 主键又称为主码 主关键字 它用来唯一表示一个表中的每一行 主键的值不可重复 而且 主键的值不可以取NULL 每个表只能有一个 PRIMARYKEY 约束 PRIMARYKEY 约束只能放在定义为 NotNULL 的字段上 从 企业管理器 中创建 4 7 2 PRIMARYKEY 主键约束 2 从查询分析器中设置 先将前面设置的code主键去掉 重新添加主键AltertableclerktableADDconstraintPK code namePRIMARYKEY code clerkname 4 7 3 foreignkey 约束 说明如下 外码 外关键字 说明某列的取值必须参照另外表的主码值 一个外码是一个表的主键 并且是另外一个表的外码 外码提供了两个表之间的链接关系 通过强制外码字段的取值必须是另外一个表的主码字段的有效值 来实现参照完整性 用 foreignkey 约束定义了某个字段之后 则该字段的取值必须参照同一个表或者是另一个表的 primarykey 或 unique 约束 9 2 3 foreign 约束 createtablestudenttable idnumchar 6 notnullconstraintPK idnumprimarykey idnum studentnamenvarchar 30 notnull addressnvarchar 30 createtablemarktable idnumchar 6 notnullconstraintPK codeforeignkey idnum Referencesstudenttable idnum coursecodechar 20 notnullconstraintPK courseprimarykey coursecode markdecimal 5 2 4 7 4 default 约束 说明 default约束 它的作用就是当用户没有为定义的具有 default 约束的列输入数据时 又该列的 default 约束将默认值填入该字段中 一个字段只能有一个default约束 default 约束不能用在 identity 字段或者 timestamp 字段上 它们本身就能够插入默认的数据 AltertableclerktableADDaddressvarchar 20 default 北京 4 7 4 default 约束 4 7 5 check 约束 check约束 用来限制字段的取值范围 说明如下 check约束限定了向特定字段列输入数据的类型 表中定义的 check 约束可以对多个字段列进行检验 2 例 altertablestudenttableaddyearoldintconstraintcheckyearoldcheck yearoldbetween15and23 说明如下 unique约束 用来约束该列的值不可以重复 即任意两行记录的具有unique约束的列值不可以具有非空的相同值 一个表中可以定义多个unique约束 每个unique约束自动产生一个索引 unique 约束的数量不能导致表中索引的数量超过249个非簇索引和一个簇索引 4 7 6 unique 约束 问题1 PRIMARYKEY约束UNIQUE约束有何相同点和不同点 列约束与表约束 约束可以是列约束或表约束列约束被指定为列定义的一部分 并仅适用于那个列表约束的声明与列的定义无关 可适用于表中一个以上的列当一个约束中必须包括一个以上的列时 必须使用表约束 列约束与表约束 例 在student数据库中创建一个grade表 它的主键为学号和课程号USEstudentGoCREATETABLEgrade 学号char 4 NOTNULL 课程号char 4 NOTNULL 分数real CONSTRAINTpk sPRIMARYKEY 学号 课程号 列约束与表约束 例 在student数据库中创建一个course表 它的主键为课程号CREATETABLEcourse 课程号char 4 NOTNULLCONSTRAINTpk codePRIMARYKEY 课程号 课程名varchar 2 NOTNULL CREATETABLEcourse 课程号char 4 NOTNULL 课程名varchar 2 NOTNULL CONSTRAINTpk codePRIMARYKEY 课程号 9 2 7删除约束 语法 altertabletablen amedropconstraintconstraint name例 altertablestudenttabledropcheckyearold 4 8默认 默认也是数据库的对象 它与默认值约束的功能一样 当用户输入记录时 在没有给出具体的数据的字段中 系统会自动插入一个数据 说明如下 默认值用来向无值的列 字段 提供一个预先指定的值 默认在创建后 必须和某一列绑定才能生效 4 8 1创建默认 1 使用 CREATEDEFAULT 语句创建语法 createdefaultas说明如下 本语句创建默认的对象 当把一个特定的默认绑定到列或用户定义的数据类型时 在输入时没有输入具体值 此时该对象的值便由绑定的默认来提供 它执行用 ALERT 或 CREATETABLE 语句的 DEFAULT 关键字创建的默认值定义的相同功能 由于默认的定义和表存储在一起 所以默认值定义是限制列数据的首选 也是标准的方法 当删除表时 将自动除去默认值定义 默认值必须与所要绑定的列的数据类型兼容 常量表达式 中只包含常量值的表达式 不包含任何列或其他数据库对象的名称 可以使用任何常量 内建函数或数学表达式 2 使用SQLServerEnterpriseManager创建 4 8 1创建默认 4 8 2绑定默认 语法 sp bindefault 例 sp bindefaultstudent number student 学号 说明如下 一条默认生效 必须将该默认与数据库表中的具体的列 字段 绑定 4 8 2绑定默认 4 8 3解除绑定 语法 sp unbindefault例 sp unbindefault student 学号 说明如下 此语句的作用是解除绑定到指定字段上的默认 另外一种解除绑定的方法是利用 将默认绑定到列 对话框 读者可以参考图10 15进行处理 4 8 4删除默认 语法 dropdefault说明如下 在删除某条默认之前 该默认必须是孤立的 即它没有被绑定到任何一个列 字段 上 被绑定的默认不能删除 只能被释放 4 8 5使用 CREATETABLE 声明默认值 语法 createtable表名 字段名数据类型 default常量表达式 NULL NOTNULL IDENTITY 说明如下 1 default 如果在插入过程中未显式提供值 则制定为列 字段 提供的默认值 2 它可以定义除定义为 timestamp 或带 IDENTITY 属性的列以外的任何列 3 删除表时 与本表中列 字段 相绑定的 DEFAULT 也将被删去 只有常量值可用作默认值 4 常量表达式 是用作列的默认值的常量 NULL 或系统函数 5 可以使用 ALTERTABLE 语句在表中增加或删除默认值 4 8 5使用 CREATETABLE 声明默认值 例 createtable电影会员表 编号char 10 default A2005 姓名char 8 notnull 性别char 2 default 男 所交费用intnotnull 入会时间datetimedefault 2005 01 01 entertherecordinsertinto电影会员表 编号 姓名 所交费用 values A200400126 吴萌 166 4 8 6在 UPDATE 中使用默认值 语法 update表名set列名 字段名 defaultwhere例 update电影会员表set入会时间 defaultwhere编号 A200400126 4 8 7查看规则和默认 问题2 默认对象 默认值有何联系和区别 4 9规则 规则是对存储在数据库中的表的列 字段 或用户定义数据类型中的值的规定和限制 说明如下 规则是单独存储的独立的数据库对象 规则与其作用的表或用户自定义数据类型相互独立 即表或用户自定义对象的删除修改 不对与之相连的规则产生影响 规则和约束可以同时用于表的列 可以有一个规则及多个 CHECK 约束规则 规则提供了一种加强列 字段 或用户定义数据类型域约束的机制 规则要在 INSERT UPDATE 语句之前给出 4 9 1规则的创建 1 用 CREATERULE 语句创建规则语法 CREATERULE新建规则名AS条件表达式说明如下 规则名必须符合标识符规则 可以选择指定规则所有者的名称 条件表达式可以是 WHERE 子句中任何有效的表达式 并且可以包含算术运算符 关系运算符和 IN LIKE BETWEEN 之类的元素 规则不能引用列或其他数据库对象 可以包含不引用数据库对象的内置函数 4 9 1规则的创建 1 用 CREATERULE 语句创建规则条件表达式包含一个变量 每个局部变量的前面都有一个 符号 该表达式引用通过 UPDATE 或 INSERT 语句输入的值 在创建规则时 可使用任何名称或符号表示值 但第一个字符必须是 符号 例 CREATERULEage scopeAS age scopebetween19and24 4 9 1规则的创建 2 用SQLServerEnterpriseManager创建规则 4 9 2使用存储过程绑定规则 规则是数据库的一种对象 必须用系统存储过程 sp bindrule 绑定规则 语法 sp bindrule 例 sp bindruleage scope student 年龄 说明如下 1 将指定的规则绑定到列 字段 或用户定义的数据类型 2 绑定规则时

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论