zoukankan      html  css  js  c++  java
  • 【SQL】定义约束

    数据库常见的约束类型及使用

    非空约束 NOT NULL

    创建表时定义

    create table dept80(id number,name varchar2(20) not null,salary number constraint dept80_not not null);
    

    在数据类型后面添加constraint 进行约束命名,不添加的话服务器会自动为你添加

    修改表时定义

    alter tabke dept80 add(location_id number);
    alter table dept80 modify location_id not null;
    

    唯一约束 UNIQUE

    指定列的值或列的组合值,使得表中的行必须是唯一的

    创建表时定义

    create table dept90(id number unique,name varchar2(20));
    

    修改表时定义

    alter table dept90 modify number name unique;
    

    主键约束 PRIMARY KEY

    表中的数据不能是空也必须是唯一的

    创建表时定义

    create table dept70(id number primary key);
    

    修改表时定义

    alter table dept90 modify(id primary key);
    

    创建联合主键

    create table dept50(id number,name varchar2(20),primary key(id,name);
    

    需要注意,不能直接在列后面添加,需要将联合主键写在primary key ()内

    外键约束

    在一个表和另一个表之间建立强制外键关系,预防破坏表之间连接的行为。约束也能防止非法数据插入外键列,因为它必须是指向的那个表的值之一。

    创建表时定义

    create table dept40(id number,d_id number ,foreign key(d_id) references dept60(id))
    

    只考虑外键,代码以d_id 为外键(foreign) 参照(references)dept60(id) ;需要注意创建表时定义,不能爱列后面直接添加(在,后定义外键,参照表要提前存在)

    修改表时定义

    alter table dept50 add foreign(d_id) references dept_60(id);
    

    用户自定义约束条件 CHECK

    指定一个必须为真的条件,满足条件填入

    创建表时

    create table dept30(id number,salary number(8,2) check(salary>1000));
    

    修改表时

    alter table dept50 add check(salary>1000);
    

    约束类型使用原则:

    • 创建表和修改表时,可以给约束起名时constraint 名称,但约束名称要唯一,若未起名,oracle会默认生成

    • 使用联合主键和外键约束时,不能直接在定义的数据类型后面直接添加,需单独在后面添加

    查询与禁用约束

    查询约束

    select constraint_name,constraint_type,search_condition from user_constraints where table_name = 'DEPT40'
    

    表名都是大写,search_condition 查询是否有check条件

    禁用约束 DISABLE

    alter table dept60 disable constraint dept60_pk cascade;
    

    截屏2020-08-18 上午11.02.02

    禁用的时候若存在主键有其他表的外键参考,则需要同时禁用,外键约束也需要禁用,使用casecade,否则报错

    启用约束 ENABLE

    alter table dept40 enable constraint dept40_fk;
    

    禁用和启用需要使用constraint 约束名

    悲观者正确,乐观者成功
  • 相关阅读:
    strcpy ,strncpy ,strlcpy(转载)
    窗口刷新时的问题(转)
    Linux下的实时流媒体编程(RTP,RTCP,RTSP)
    YUV色彩空间(转自百度百科)
    VC++2005快速构建安全的应用程序
    Linux多线程编程
    C++ PASCAL关键字(转)
    SkinMagic 进行皮肤设置
    .h和.cpp文件的区别
    strcpy_s与strcpy安全性的比较(转载)
  • 原文地址:https://www.cnblogs.com/freebule/p/13522332.html
Copyright © 2011-2022 走看看