现在位置:中国IDC吧>数据库>SQL server数据库> 文章内容

Oracle约束

收藏发布 来源:blog 作者:中国IDC吧 更新日期:2008-09-30 点击:
  什么是约束?约束是表级强制执行的规则,当表中数据有相互依赖性时,可保护数据不被删除。本文详细介绍了Oracle中约束,包括在建表的同时创建,建表后创建,可定义列级或表级约束,可通过数据字典表查看约束。   可通过数据字典表查看约束.

  什么是约束?约束是表级强制执行的规则,当表中数据有相互依赖性时,可保护数据不被删除。

  Oracle 有如下类型的约束:

NOTNULL
  UNIQUEKey
  PRIMARYKEY
  FOREIGNKEY
  CHECK

  Oracle使用SYS_Cn格式命名约束.

  创建约束:

  在建表的同时创建

  建表后创建

  可定义列级或表级约束.

  可通过数据字典表查看约束.

  建表时创建约束

createtableOTL_NICOTINE_GRADE(IDNUMBERnotnull,SEASON_NONUMBER(4)notnull,RECEIPT_NONUMBER(8)notnull,
  GRADEVARCHAR2(10)notnull,PROPORTIONNUMBER(5,2)notnull,WEIGHTNUMBER(10,2)notnull,VALUENUMBER(12,2)not
  null,constraintPK_OTL_NICOTINE_GRADEprimarykey(ID,GRADE),constraintFK_OTL_NICO_REFERENCE_OTL_CHECforeign
  key(ID)referencesOTL_CHECK_CHEM(ID))

  建表后添加约束

 ALTERTABLE(table_name)ADD(CONSTRAINT(foreignkeyconstraintname)FOREIGNKEY(fieldname)REFERENCES
  primary_table_name(primary_table_primary_index_field)
  SQL>createtableemplyees(
  2employee_idnumber(6),
  3last_namevarchar2(25)notnull,
  4salarynumber(8,2),
  5commission_pctnumber(2,2),
  6hire_datedate,
  7constraintemp_hire_date_1notnull,
  8CONSTRAINTdept_dname_ukUNIQUE(emp_name)
  9);
  表已创建。
  SQL>
  1selectconstraint_name,table_name
  2fromdba_constraints
  3wheretable_name='EMPLYEES'
  CONSTRAINT_NAMETABLE_NAME
  ------------------------------------------------------------
  SYS_C003012EMPLYEES
  EMP_HIRE_DATE_1EMPLYEES

  定义主键约束PRIMARY KEY 1 2 3 4 :    什么是约束?约束是表级强制执行的规则,当表中数据有相互依赖性时,可保护数据不被删除。本文详细介绍了Oracle中约束,包括在建表的同时创建,建表后创建,可定义列级或表级约束,可通过数据字典表查看约束。   可通过数据字典表查看约束.

SQL>CREATETABLEdept(
  2deptnoNUMBER(2),
  3dnameVARCHAR2(14),
  4locVARCHAR2(13),
  5CONSTRAINTdept_dname_ukUNIQUE(dname),
  6CONSTRAINTdept_deptno_pkPRIMARYKEY(deptno));

  外键约束FOREIGN KEY

SQL>CREATETABLEemp(
  2empnoNUMBER(4),
  3enameVARCHAR2(10)NOTNULL,
  4jobVARCHAR2(9),
  5mgrNUMBER(4),
  6hiredateDATE,
  7salNUMBER(7,2),
  8commNUMBER(7,2),
  9deptnoNUMBER(7,2)NOTNULL,
  10CONSTRAINTemp_deptno_fkFOREIGNKEY(deptno)
  11REFERENCESdept(deptno));

  外键约束的关键字

  FOREIGN KEY

  定义子表的哪一列作为外键约束

  REFERENCES

  指示主表和参照的列

  ON DELETE CASCADE

  删除主表记录时将子表相关记录删除

  ON DELETE SET NULL

  将外键引用置为空值

  CHECK 约束

  定义每一记录都要满足的条件

  条件表达式不允许有:

  CURRVAL, NEXTVAL, LEVEL, ROWNUM 9 1 2 3 4 :    什么是约束?约束是表级强制执行的规则,当表中数据有相互依赖性时,可保护数据不被删除。本文详细介绍了Oracle中约束,包括在建表的同时创建,建表后创建,可定义列级或表级约束,可通过数据字典表查看约束。   可通过数据字典表查看约束.

  SYSDATE, UID, USER, USERENV 函数

  参照其他记录的值

  ..., deptno NUMBER(2),

  CONSTRAINT emp_deptno_ck

  CHECK (DEPTNO BETWEEN 10 AND 99),...

  加约束

  ALTER TABLE table

  ADD [CONSTRAINT constraint] type (column);

  可加或删除约束,但不能修改

  可使约束生效和失效

  使用MODIFY子句可加 NOT NULL约束

  加 FOREIGN KEY 约束到EMP表

 SQL>ALTERTABLEemp
  2ADDCONSTRAINTemp_mgr_fk
  3FOREIGNKEY(mgr)REFERENCESemp(empno);

  删除约束

  删除约束emp_mgr_fk

SQL>ALTERTABLEemp
  2DROPCONSTRAINTemp_mgr_fk;

  删除主键约束和相关的外键约束

SQL>ALTERTABLEdept
  2DROPPRIMARYKEYCASCADE;

  使约束失效 9 1 2 3 4 :    什么是约束?约束是表级强制执行的规则,当表中数据有相互依赖性时,可保护数据不被删除。本文详细介绍了Oracle中约束,包括在建表的同时创建,建表后创建,可定义列级或表级约束,可通过数据字典表查看约束。   可通过数据字典表查看约束.

  在ALTER TABLE 语句中执行DISABLE子句可使完整性约束失效

  使用 CASCADE 选项可使依赖的完整约束失效

SQL>ALTERTABLEemp
  2DISABLECONSTRAINTemp_empno_pkCASCADE;

  使用ENABLE子句将失效的约束生效

SQL>ALTERTABLEemp
  2ENABLECONSTRAINTemp_empno_pk;

  当使UNIQUE 或 PRIMARY KEY约束生效时,会自动创建 UNIQUE 或PRIMARY KEY 索引.



上一页12 下一页
收藏此页到网摘/书签:
所有评论

评论列表

用户名: 新注册) 密码: 匿名评论