Oracle公司内部数据库培训资料10-约束_第1页
Oracle公司内部数据库培训资料10-约束_第2页
Oracle公司内部数据库培训资料10-约束_第3页
Oracle公司内部数据库培训资料10-约束_第4页
Oracle公司内部数据库培训资料10-约束_第5页
已阅读5页,还剩22页未读, 继续免费阅读

下载本文档

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

文档简介

1、约束 目标通过本章章学习,您将可可以:描述约束束创建和维维护约束束什么是约约束约束是表表级的强强制规定定约束放置置在表中中删除有有关联关关系的数数据有以下五五种约束束:NOTNULLUNIQUEPRIMARY KEYFOREIGN KEYCHECK注意事项项如果不指指定约束束名Oracleserver自动按照照SYS_Cn的格式指指定约束束名在什么时时候创建建约束:建表的同同时建表之后后可以在表表级或列列级定义义约束可以通过过数据字字典视图图查看约约束定义约束束CREATE TABLE schema.table (column datatype DEFAULT exprcolumn_const

2、raint,.table_constraint,.);CREATE TABLE employees( employee_id NUMBER(6), first_name VARCHAR2(20), . job_id VARCHAR2(10) NOT NULL, CONSTRAINT emp_emp_id_pk PRIMARY KEY (EMPLOYEE_ID);定义约束束列级表级columnCONSTRAINTconstraint_nameconstraint_type,column,.CONSTRAINTconstraint_nameconstraint_type(column, .),NO

3、TNULL约束保证列值值不能为为空:NOT NULL 约束无NOT NULL 约束NOT NULL 约束CREATETABLEemployees(employee_idNUMBER(6),last_nameVARCHAR2(25)NOT NULL,salaryNUMBER(8,2),commission_pctNUMBER(2,2),hire_dateDATECONSTRAINT emp_hire_date_nnNOTNULL,.NOTNULL约束只能定义义在列级级: 系统命名用户命名UNIQUE约束EMPLOYEESUNIQUE约束INSERTINTO不允许: 已经存在允许UNIQUE约束可

4、以定义义在表级级或列级级:CREATETABLEemployees(employee_idNUMBER(6),last_nameVARCHAR2(25)NOTNULL,emailVARCHAR2(25),salaryNUMBER(8,2),commission_pctNUMBER(2,2),hire_dateDATENOT NULL,.CONSTRAINT emp_email_ukUNIQUE(email);PRIMARYKEY约束DEPARTMENTSPRIMARY KEYINSERT INTO不允许(空值)不允许 (50 已经存在)CREATETABLEdepartments(depart

5、ment_idNUMBER(4),department_nameVARCHAR2(30)CONSTRAINT dept_name_nnNOTNULL,manager_idNUMBER(6),location_idNUMBER(4),CONSTRAINT dept_id_pkPRIMARYKEY(department_id);PRIMARYKEY约束可以定义义在表级级或列级级:FOREIGNKEY约束DEPARTMENTSEMPLOYEESFOREIGNKEYINSERT INTO不允许(9 不存在)允许PRIMARYKEYFOREIGNKEY约束可以定义义在表级级或列级级:CREATETABL

6、Eemployees(employee_idNUMBER(6),last_nameVARCHAR2(25)NOTNULL,emailVARCHAR2(25),salaryNUMBER(8,2),commission_pctNUMBER(2,2),hire_dateDATENOT NULL,.department_idNUMBER(4),CONSTRAINT emp_dept_fk FOREIGNKEY (department_id)REFERENCES departments(department_id),CONSTRAINT emp_email_ukUNIQUE(email);FOREIGN

7、KEY约束的关关键字FOREIGN KEY:在表级指指定子表表中的列列REFERENCES:标示在父父表中的的列ONDELETECASCADE:当父表中中的列被被删除是是,子表表中相对对应的列列也被删删除ONDELETESET NULL:子表中相相应的列列置空CHECK约束定义每一一行必须须满足的的条件以下的表表达式是是不允许许的:出现CURRVAL,NEXTVAL,LEVEL,和ROWNUM伪列使用SYSDATE,UID,USER,和USERENV函数在查询中中涉及到到其它列列的值., salaryNUMBER(2)CONSTRAINT emp_salary_minCHECK(salary

8、0),.添加约束束的语法法使用ALTERTABLE语句:添加或删删除约束束,但是不能能修改约约束有效化或或无效化化约束添加NOTNULL约束要使使用MODIFY语句ALTERTABLEtableADDCONSTRAINTconstrainttype(column);添加约束束添加约束束举例ALTERTABLEemployeesADDCONSTRAINTemp_manager_fkFOREIGN KEY(manager_id)REFERENCES employees(employee_id);Tablealtered.删除约束束从表EMPLOYEES中删除约约束使用CASCADE选项删除除约束A

9、LTERTABLEemployeesDROP CONSTRAINTemp_manager_fk;Tablealtered.ALTERTABLEdepartmentsDROP PRIMARYKEY CASCADE;Tablealtered.无效化约约束在ALTERTABLE语句中使使用DISABLE子句将约约束无效效化。使用CASCADE选项将相相关的约约束也无无效化ALTERTABLEemployeesDISABLE CONSTRAINTemp_emp_id_pkCASCADE;Tablealtered.激活约束束ENABLE子句可将将当前无无效的约约束激活活当定义或或激活UNIQUE或PRI

10、MARY KEY约束时系系统会自自动创建建UNIQUE或PRIMARY KEY索引ALTERTABLEemployeesENABLECONSTRAINTemp_emp_id_pk;Tablealtered.及连约束束CASCADE CONSTRAINTS子句在DROP COLUMN子句中使使用在删除表表的列时时CASCADE CONSTRAINTS子句指定定将相关关的约束束一起删删除在删除表表的列时时CASCADE CONSTRAINTS子句同时时也删除除多列约约束及连约束束及连约束束举例:ALTERTABLEtest1DROP (pk)CASCADECONSTRAINTS;Tablealtered.ALTERTABLEtest1DROP (pk,fk, col1) CASCADECONSTRAINTS;Tablealtered.SELECTconstraint_name,constraint_type,search_conditionFROMuser_constraintsWHEREtable_name =EMPLOYEES;查询约束束查询数据据字典视视图USER_CONSTRAINTSSELECTconstraint_name,column_nameFROMuser_

温馨提示

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

评论

0/150

提交评论