09oracle约束.ppt_第1页
09oracle约束.ppt_第2页
09oracle约束.ppt_第3页
09oracle约束.ppt_第4页
09oracle约束.ppt_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

Oracle约束 QQ 13987796telOracle约束 概念oracle使用完整性约束防止不合法的数据进入到基表中 管理员和开发人员可以定义完整性约束 以增强商业规则 限制数据表中的数据 如果一个DML语句执行的任何结果破坏了完整性约束 oracle就会回滚语句 返回错误信息 好处1 在数据库应用的代码中增强了商业规则 2 使用存储过程 完整控制对数据的访问 3 增强了触发存储数据库过程的商业规则 Oracle约束 1 域完整性域完整性又称为列完整性 指定一个数据集对某一个列是否有效和确定是否允许空值 域完整性通常是经过使用有效性检查来实现的 还可以通过限制数据类型 格式或者可能的取值范围来实现 2 实体完整性实体完整性也称行完整性 要求表中的每一行有一个唯一的标识符 这个标识符就是主关键字 例如 居民身份证号是唯一的 这样才能唯一地确定某一个人 通过索引 UNIQUE约束 primarykey约束可实现数据的实体完整性 Oracle约束 3 参照完整性参照完整性也可以称为引用完整性 参照完整行保证主表中的数据与从表 被参照表 中数据的一致性 在oracle中 参照完整性的实现是通过定义外键 foreignkey 与主键 primarykey 之间的对应关系实现的 如果在被引用表中的一行被某外关键字引用 那么这一行既不能被删除 也不能修改主关键字 Oracle约束 主键在表中能唯一标识表的每个数据行的一个或多个表列 外键如果一个表中的一个字段或若干个字段的组合是另一个表的主键则称该字段 或若干字段的组合 为该表的外键 Oracle约束 如果定义了两个表之间的参照完整性 则有如下规则 1 从表不能引用不存在的键值 2 如果主表中的键值更改了 那么在整个数据库中 对从表中该键值的所有引用要进行一致的更改 3 如果主表中没有关联的记录 则不能将记录添加到从表 4 如果要删除主表中的某个记录 则不能将记录添加到从表 完整性约束是通过限制列数据 行数据和表之间的数据来保证数据完整性的有效方法 Oracle约束 约束的状态在oracle中 完整性约束有以下4种状态 1 禁止的非校验状态 禁止的非校验状态表示该约束是不起作用的 即使该约束定义依然存储在数据字典中 2 禁止的校验状态 禁止的校验状态表示对约束列的任何修改都是禁止的 这是 该约束上的索引都被删除 约束也被禁止 但是 这时仍然可以向表中有效地添加数据 即使这些数据与约束有冲突也没关系 3 允许的非校验状态或强制状态 允许的非校验状态或强制状态可以向表中添加数据 但是与约束有冲突的数据不能添加 如果表中已存在的数据与约束冲突 这些数据依然可以存在 4 允许的校验状态 允许的校验状态表示约束处于正常的状态 这时 表中所有的数据 无论是已有的还是新添加的 都必须满足约束条件 Oracle约束 域完整性的实现oracle可以通过check约束实现域完整性 Check约束实际上是字段输入内容的校验规则 表示一个字段的输入内容必须满足check条件 语法格式Createtabletable name column namedatatype notnull null defaultconstraint expression Constraintcheck namecheck check expression 其中 check表示定义check约束 其中的check expression逻辑表达式 称为check约束表达式 Oracle约束 例 创建book表Createtablebooks book idnumber 10 Book namevarchar2 50 notnull Book descvarchar2 50 default newbook Max lvlnumber 6 2 notnull Trade pricenumber 4 1 notnull Constraintch costcheck max lvl 250 Oracle约束 修改check约束Altertabletable nameadd constraintcheck namecheck check expression 删除check约束Altertabletable namedropconstraintcheck name Oracle约束 实体完整性的实现一个表只能有一个primarykey约束 而且primarykey约束中的列不能取空值 Primarykey约束和unique约束的区别 1 一个数据表只能创建一个primarykey约束 但一个表中可以根据需要对不同的列创建若干个unique约束 2 Primarykey字段的值不允许为null 而unique字段的值可取null Oracle约束 语法主键约束ALTERTABLEtable nameADDCONSTRAINTpk namePRIMARYKEY pk id Unique约束ALTERTABLEtable nameADDCONSTRAINTuk nameUNIQUE column name n Oracle约束 参照完整性的实现对于两个相关联的表 主表与从表 进行数据插入和删除时 通过参照完整性保证它们之间数据的一致性 利用foreignkey表示外键 Primarykey创建时候应考虑的因素 1 在删除主表之前 必须删除foreignkey约束 2 如果不删除或禁止foreignkey约束 则不能删除主表 3 在删除包含主表的表空间之前 必须删除foreignkey约束 Oracle约束 语法createtabletable name column namedatatypereferencesref table ref column n 修改Altertabletable nameAddconstraintconstraint nameForeignkey column n Referencesref table ref column n Oracle约束 Altertable的记忆方法Altertable命令有许多选项 1 你不得不告诉Oracle你准备alter什么表 Altertabletable name2 然后 你准备做什么 Adding一个约束ALTERTABLEtable nameADDCONSTRAINT3 强烈建议但不要求为约束定义个名字 约束名不需要放在引号里 但会以大写字母形式存储在数据字典里 ALTERTABLEtempADDCONSTRAINTpk temp Oracle约束 Altertable的记忆方法4 表示约束类型将是PrimaryKey Unique ForeignKey 或Check约束ALTERTABLEtempADDCONSTRAINTpk tempPRIMARYKEY5 跟在约束类型后面有几种特殊选项 PrimaryKey和Unique约束 需要指定约束的列 Check约束需要指定约束规则 ALTERTABLEtempADDCONSTRAINTpk tempPRIMARYKEY ID

温馨提示

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

评论

0/150

提交评论