约束

作者: 李昱俊 | 来源:发表于2017-12-17 15:23 被阅读0次

    not null

    • NOT NULL约束 :也叫非空约束,确保被约束列的所有行记录都不能为空值。

    NOT NULL约束只能定义在在列级上。

    create table emp2(
    empno number(5),
    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) constraint emp2_deptno_nn not null,
    )
    

    unique

    • UNIQUE约束:也叫唯一约束,用来确保表中的某一列或者某几列组合的所有行数据必须唯一,定义UNIQUE约束的列 (或列组合) 被称为唯一键。

    • 每个表可以有多个为UNIQUE约束。

    create table dept2(
    deptno number(2),
    dname varchar2(14) constraint dept2_dname_uq unique,
    loc varchar2(13),
    )
    

    定义在表级:

    create table dept2(
    deptno number(2),
    dname varchar2(14),
    loc varchar2(13),
    constraint dept2_dname_uq unique(name)
    )
    

    primary key

    • PRIMARY KEY约束:主键约束,用来确保表中的某一列或者某几列组合的所有行数据必须唯一,并且确保作为主键一部分的列不能包含空值。
    • 每个表只能创建一个主键约束。
    create table dept2(
    deptno number(2) constraint dept_deptno_pk primary key,
    dname varchar2(13),
    
    )
    

    定义在表级:

    create table dept2(
    deptno number(2),
    dname varchar2(13),
     constraint dept_deptno_pk primary key(deptno)
    )
    

    foreign key

    1. FOREIGN KEY,也叫外键约束,外键确保了相关联的两个字段的关系:
    • 外键列的值必须在引用列值的范围内,或者为空;
    • 外键参照的是列必须是主键或者唯一键;

    2.主键表主键值被外键表参照时,主键表记录不允许被删除。

    create table empss(
    empno number(4),
    ename varchar2(10) constraint empss_ename_nn not null,
    job varchar2(9),
    deptno number(7,2) not null constraint empss_deptno_fk foreign key references dept (deptno),
    sal number(7,2)
    )
    
    create table empss(
    empno number(4),
    ename varchar2(10) constraint empss_ename_nn not null,
    job varchar2(9),
    deptno number(7,2) not null ,
    sal number(7,2),
    constraint empss_deptno_fk foreign key(deptno) references dept (depyno) on delete cascade
    )
    

    check

    create table empss(
    empno number(4),
    ename varchar2(10) not null,
    deptno number(7,2) constraint empss_deptno_ck check(deptno between 10 and 99),
    sal number (7,2)
    )
    

    追加约束

    • 追加foreign key约束

    例:在emp表中的mgr上添加一个外键约束,指示该列的值必须引用emp表中的empno值。

    alter table emp 
    add constraint emp_mgr_fk foreign key(mgr) references emp(empno)
    
    • 追加 not null
    alter table emp
    modify(empno constraint emp_empno_nn not null )
    

    删除约束

    • 例:从emp表中删除emp_mgr_fk约束
    alter table emp 
    drop constraint emp_mgr_fk(约束名)
    
    • 例:删除dept表上的PRIMARY KEY约束,并且删除相关联的在emp表deptno上的FOREIGN KEY约束;
    alter table dept
    drop primary key cascade
    

    约束启用与禁用

    • 禁用
    alter table 表名 disable constraint 约束名 cascade
    

    应用CASCADE选项禁用相依赖的外键约束

    • 启用
    alter table 表名 enable constraint 约束名
    

    相关文章

      网友评论

          本文标题:约束

          本文链接:https://www.haomeiwen.com/subject/wgpywxtx.html