美文网首页
Oracle约束

Oracle约束

作者: 堆石成山 | 来源:发表于2020-09-09 21:55 被阅读0次

    什么是约束?
    约束是Oracle提供的自动保持数据库完整性的一种方法,它通过限制字段中数据、记录中数据和表之间的数据来保证数据库的完整性。

    constraint constraint_name <约束>(字段)
    

    约束:
    primary key constraint——主键约束:表级约束,值不能为NULL,不能重复,一个表只能有一个
    如设定主键约束:constraint id_pk primary key(sid)
    修改表添加主键约束:alter table student add constraint id_pk primary key(sid);

    unique constraint——唯一性约束:指定一个或多个列的组合值具有唯一性
    例如:

    create table student(
    sid number(8,0),
    name varchar2(20),
    sex char(2) constraint nn_sex,
    birthday date,
    address varchar2(50),
    email varchar2(50) unique,
    cardid varchar2(18),
    constraint cardid_pk unique(cardid)//指定约束的名称
    );
    

    修改表时添加唯一性约束:alter table student add constraint cardid_pk unique(cardid);
    禁用唯一性约束:alter table student disable constraint cardid_pk;
    删除唯一性约束:alter table student drop constraint cardid_pk;

    default constraint——默认约束
    not null constraint——非空约束:列级约束,确保列不能为NULL
    例如:

    create table student(
    sid number(8,0),
    name varchar2(20) not null,//推荐
    sex char(2) constraint nn_sex not null,//指定约束的名称
    birthday date,
    address varchar2(50),
    constraint sid_pk primary key(sid)//指定约束的名称
    );
    

    修改表添加约束:alter table student add [constraint constraint_name] constraint_type (column);
    添加非空约束:alter table student modify (name varchar2(20) not null);

    check constraint——检查约束:限制输入值
    创建表时设置检查约束:

    create table student(
    sid number(8,0),
    name varchar2(20),
    sex char(2) check(sex='男'or sex='女'),//列级添加约束,两者选其一
    birthday date,
    address varchar2(50),
    constraint ck_sex check(sex='男' or sex='女')//表级添加约束,两者选其一
    );
    

    修改表是添加检查约束:alter table student add constraint ck_sex check(sex='男' or sex='女');
    禁用启用检查约束:alter table student disable/enable constraint ck_sex;
    删除约束:alter table student drop constraint ck_sex;

    foreign key constraint——外部键约束:是用于建立或者加强两个表数据之间的链接的一列或多列,通常是先创建的表是主表,后是从表。
    例如:

    //主表
    create table department(
    depid varchar2(10) primary key,
    depname varchar2(30)
    );
    //从表
    create table student(
    sid number(8,0);
    name varchar2(20);
    sex char(2)
    birthday date,
    address varchar2(50),
    depid varchar2(10) references department(depid)
    )
    //或
    create table student(
    sid number(8,0);
    name varchar2(20);
    sex char(2)
    birthday date,
    address varchar2(50),
    depid varchar2(10) ,
    constraint fk_depid foreign key(depid) references department(depid) on delete cascade//级联删除
    )
    

    修改表时添加外接约束:alter table student add constraint fk_depid foreign key(depid) references department(depid) on delete cascade;

    删除约束:
    1、禁用或开启:alter table student disable|enable constraint constraint_name
    2、永久删除:alter table student drop constraint constraint_name
    3、删除主键约束的格式:alter table student drop primary key
    4、另一只方面常用的删除非空约束:alter table table_name modify column_name datatype null;

    相关文章

      网友评论

          本文标题:Oracle约束

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