• Oracle 数据完整性与约束机制


    为了维护数据库数据的完整性,在创建表时需要定义一些约束,Oracle中的约束类型包括:非空约束、主键约束、唯一约束、外键约束等。在对约束操作前,我们可以通过表名查询它具有的约束信息。

    表约束

    SELECT table_name, owner,constraint_name,table_name,r_owner,r_constraint_name
    FROM all_constraints
    WHERE table_name = 'T_TEST1';

    列约束
    SELECT *
    FROM ALL_CONS_COLUMNS
    WHERE table_name = 'T_TEST1'
    AND    owner='SCOTT';

    1 非空约束

    非空约束限制某列必须有值,不能为NULL,NULL是不存在的值,它既不是数字0也不是空字符串,而是不存在,未知的情况。定义非空约束非常简单:

    create table t_test1

    (

      id number not null, -- 非空约束

      name varchar2(50)

    );

    也可以单独设置某列为非空或者为空

    alter table t_test1 modify name not null/null;

    2 主键约束

    主键(primary key)约束用于唯一标识表中的每一行记录。主键约束由一列组成时,被称为行级约束;由两列或者更多列组成时,称为表级约束。 

    create table t_test1

    (

      id number not null, -- 非空约束

      name varchar2(50),

      constraint PK_ID primary key(id) --主键约束

    );

    单独设置主键约束

    alter table t_test1 add constraint PK_ID primary key(id);

    删除主键约束

    alter table t_test1 drop constraint PK_ID;

    3 唯一性约束

    唯一性约束(unique)强制要求所在列不能有重复值,它的定义比主键约束弱,允许列有空值(NULL)。用于保证除主键外其他列值的唯一性。

    create table t_test1

    (

      id number not null, -- 非空约束

      name varchar2(50) constraint uk_name unique  -- constraint un_name unique(name)

    );

    单独设置唯一性约束

    alter table t_test1 add constraint uk_name unique(name);

    4 外键约束

    外键约束使用两个或者以上的表进行关联,表1引用表2的某列或者几列,表1的列在表2必须存在,且表2的列必须为主键约束或者唯一性约束。

    create table t_department
    (
      depno number not null primary key,
      depname varchar2(50) not null
    );

    create table t_test1
    (

      id number not null,
      depno number not null,
      name varchar2(50)
    );

    alter table t_test1 add constraint FK_depno foreign key(depno) references t_department(depno);

    5 禁用激活约束

    alter table t_test1 disable constraint FK_DEPNO;

    alter table t_test1 enable constraint FK_DEPNO;

    6 删除约束

    alter table t_test1 drop constraint FK_DEPNO;

      

  • 相关阅读:
    SQL群集多实例卸载、安装
    Java 数组的 12 个方法
    Java 容器
    RDA 升级
    DVB条件接收系统多密技术的设计与实现
    perl数组的长度与元素个数
    TS流解析 四
    Python中操作myslq的方法
    DVB-subtitle解析流程浅
    JAVA回调机制(CallBack)详解
  • 原文地址:https://www.cnblogs.com/Latiny/p/6797436.html
Copyright © 2020-2023  润新知