zoukankan      html  css  js  c++  java
  • oracle 约束类别

    约束:(什么叫约束)

    概念:1.约束是表级强制执行的规则2.当表中数据有相互依赖性时,可保护数据不被删除

    Oracle 有如下类型的约束:

    NOT NULL—非空约束

    UNIQUE Key—唯一性约束

    PRIMARY KEY—主键约束

    FOREIGN KEY—外键约束

    Check-约束

    约束概况:

    Oracle使用 SYS_Cn 格式命名约束.

    创建约束的方式-两种:

    1.在建表的同时创建

    2.建表后创建

    可定义列级或表级约束.

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

    创建约束的方式:

    CREATE TABLE [schema.]table

                (column datatype [DEFRAULT expr]

                 [column_constraint],

                

    [table_constraint];

    )

    语法格式:ALTER TABLE命令

    ALTER TABLE 表名 ADD CONSTRAINT 约束名 约束内容。

    实例:

    创建表的时候创建约束:

    CREATE TABLE emp

    (emptno NUMBER(4),

    ename VARCHAR2(10),

    deptno NUMBER(7,2) NOT NULL,

    CONSTRAINT emp_empno_pk PRIMARY KEY (empno));

    列级约束:

       Column [constraint constraint_name] constraint_type,

    表级约束:

    Column,…

    [constraint constraint_name] constraint_type(column,…),

    非空约束(not null)

    定义列级约束:

    SQL> CREATE TABLE emp(

    empno NUMBER(4),

    ename  VARCHAR2(10) NOT NULL,

    job  VARCHAR2(9),

    mgr  NUMBER(4),

    hiredate DATE,

    sal  NUMBER(7,2),

    comm  NUMBER(7,2),

    deptno  NUMBER(7,2) NOT NULL);

    唯一性约束(unique)

    SQL> CREATE TABLE dept(

    deptno NUMBER(2),

    dname  VARCHAR2(14),

    loc  VARCHAR2(13),

    CONSTRAINT dept_dname_uk UNIQUE(dname));

    主键约束(PRIMARY KEY)

    SQL> CREATE TABLE dept(

    deptno NUMBER(2),

    dname  VARCHAR2(14),

    loc  VARCHAR2(13),

    CONSTRAINT dept_dname_uk UNIQUE(dname),

    CONSTRAINT dept_deptno_pk PRIMARY KEY(dept_no));

    外键约束(FOREIGN KEY)

    SQL> CREATE TABLE emp(

    empno NUMBER(4),

    ename  VARCHAR2(10) NOT NULL,

    job  VARCHAR2(9),

    mgr  NUMBER(4),

    hiredate DATE,

    sal  NUMBER(7,2),

    comm  NUMBER(7,2),

    deptno  NUMBER(7,2) NOT NULL,

    CONSTRAINT emp_deptno_fk FOREIGN KEY (deptno)

    REFERENCES dept (deptno));

    外键约束的关键字

    Foreign key :定义子表的哪一列作为外键的约束。

    References:指示主表和参照的列

    ON DELETE CASCADE:删除子表时将子表的相关记录删除

    ON DELETE SET NULL:将外键引用置为空值

    Check约束

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

    条件表达式不允许有:currval,nextval,level,rownum

                       Sysdate,uid,user,userenv 函数

                       参照其他记录的值

            ..., deptno  NUMBER(2),

    CONSTRAINT emp_deptno_ck

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

    加约束

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

    可以使约束生效和失效

    使用modify子句可加not null约束

    ALTER TABLE table

    ADD [CONSTRAINT constraint] type (column);

    实例:增加外键约束到EMP表

    SQL> ALTER TABLE  emp

    ADD CONSTRAINT emp_mgr_fk

    FOREIGN KEY(mgr) REFERENCES emp(empno);

     

    删除约束:

    删除约束emp_mgr_fk

    SQL> ALTER TABLE  emp

    DROP CONSTRAINT emp_mgr_fk;

    结果:Table altered.

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

    SQL> ALTER TABLE  dept

    DROP PRIMARY KEY CASCADE;

    使约束失效:

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

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

    SQL> ALTER TABLE  emp

    DISABLE CONSTRAINT  emp_empno_pk CASCADE;

    使约束生效

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

    SQL> ALTER TABLE  emp

     ENABLE CONSTRAINT  emp_empno_pk;

    结果:Table altered.

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

    PRIMARY KEY 索引.

    查看约束:

    通过查看 USER_CONSTRAINTS 表可得到用户的所有约束.

    SQL> SELECT constraint_name, constraint_type,

    search_condition

    FROM  user_constraints

    WHERE  table_name = 'EMP';--‘EMP’表名必须是大写

     

    查看约束建立在哪些列:

    通过查询USER_CONS_COLUMNS 视图可获得约束建立在哪些列上

    SQL> SELECT  constraint_name, column_name

    FROM  user_cons_columns

    WHERE  table_name = 'EMP';

     

    约束的种类:not null ,unique key,primary key,foreign key,check

    查询有关约束的数据字典表

  • 相关阅读:
    COJ 1002 WZJ的数据结构(二)(splay模板)
    生成网络流图
    最小费用最大流MCMF zkw费用流
    COJ 2003 选根 (树的重心)
    最小费用最大流MCMF 最小增广
    PDO 基础知识
    使 用 Jquery 全选+下拉+单选+事件+挂事件
    搜 房 网 站 设 计 练 习
    百分比进度条
    在PHP系统里连接MySQL 数据访问,+ + + + + 数据删除
  • 原文地址:https://www.cnblogs.com/Equinox-Flower1314/p/8689420.html
Copyright © 2011-2022 走看看