资源描述:
《Oracle Les10_约束》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、约束目标通过本章学习,您将可以:描述约束创建和维护约束什么是约束约束是表级的强制规定约束阻止删除表中有关联关系的数据有以下五种约束:NOTNULLUNIQUEPRIMARYKEYFOREIGNKEYCHECK注意事项如果不指定约束名Oracleserver自动按照SYS_Cn的格式指定约束名在什么时候创建约束:建表的同时建表之后可以在表级或列级定义约束可以通过数据字典视图查看约束定义约束CREATETABLE[schema.]table(columndatatype[DEFAULTexpr][column_constraint],...[table_co
2、nstraint][,...]);CREATETABLEemployees(employee_idNUMBER(6),first_nameVARCHAR2(20),...job_idVARCHAR2(10)NOTNULL,CONSTRAINTemp_emp_id_pkPRIMARYKEY(EMPLOYEE_ID));定义约束列级表级column[CONSTRAINTconstraint_name]constraint_type,column,...[CONSTRAINTconstraint_name]constraint_type(column,...)
3、,NOTNULL约束保证列值不能为空:NOTNULL约束无NOTNULL约束NOTNULL约束…CREATETABLEemployees(employee_idNUMBER(6),last_nameVARCHAR2(25)NOTNULL,salaryNUMBER(8,2),commission_pctNUMBER(2,2),hire_dateDATECONSTRAINTemp_hire_date_nnNOTNULL,...NOTNULL约束只能定义在列级:系统命名用户命名UNIQUE约束EMPLOYEESUNIQUE约束INSERTINTO不允许:已经存
4、在允许…UNIQUE约束可以定义在表级或列级:CREATETABLEemployees(employee_idNUMBER(6),last_nameVARCHAR2(25)NOTNULL,emailVARCHAR2(25),salaryNUMBER(8,2),commission_pctNUMBER(2,2),hire_dateDATENOTNULL,...CONSTRAINTemp_email_ukUNIQUE(email));PRIMARYKEY约束DEPARTMENTSPRIMARYKEYINSERTINTO不允许(空值)不允许(50已经存在)…C
5、REATETABLEdepartments(department_idNUMBER(4),department_nameVARCHAR2(30)CONSTRAINTdept_name_nnNOTNULL,manager_idNUMBER(6),location_idNUMBER(4),CONSTRAINTdept_id_pkPRIMARYKEY(department_id));PRIMARYKEY约束可以定义在表级或列级:FOREIGNKEY约束DEPARTMENTSEMPLOYEESFOREIGNKEYINSERTINTO不允许(9不存在)允许PRI
6、MARYKEY……FOREIGNKEY约束可以定义在表级或列级:CREATETABLEemployees(employee_idNUMBER(6),last_nameVARCHAR2(25)NOTNULL,emailVARCHAR2(25),salaryNUMBER(8,2),commission_pctNUMBER(2,2),hire_dateDATENOTNULL,...department_idNUMBER(4),CONSTRAINTemp_dept_fkFOREIGNKEY(department_id)REFERENCESdepartments
7、(department_id),CONSTRAINTemp_email_ukUNIQUE(email));FOREIGNKEY约束的关键字FOREIGNKEY:在表级指定子表中的列REFERENCES:标示在父表中的列ONDELETECASCADE:当父表中的列被删除是,子表中相对应的列也被删除ONDELETESETNULL:子表中相应的列置空CHECK约束定义每一行必须满足的条件以下的表达式是不允许的:出现CURRVAL,NEXTVAL,LEVEL,和ROWNUM伪列使用SYSDATE,UID,USER,和USERENV函数在查询中涉及到其它列的值..
8、.,salaryNUMBER(2)CONSTRAINTemp_salary_mi