Oracle约束

Oracle约束
约束的作用
  • 定义规则
  • 确保完整性
非空约束
  • 在创建表时设置非空约束
create table table_name(
    column_name datatype not null,...
)
  • 在修改表时添加非空约束
alter table table_name
modify column_name datatype not null;
  • 在修改表时去除非空约束
alter table table_name
modify column_name datatype null;
主键约束
  • 作用:确保表当中的每一行数据的唯一性,主键约束具有非空和唯一性
  • 一张表只能设计一个主键约束
  • 主键约束可以由多个字段构成(联合主键或复合主键)
  • 在创建表时设置主键约束
create table table_name(
    column_name datatype primary key,...
)

-- 联合主键
constraint constraint_name primaty key(column_name1,...)

-- 举个列子1
create table userInfo(
    id number(6,0) primary key,
    username varchar2(20)
)

-- 举个例子2
create table userInfo(
    id number(6,0),
    username varchar2(20),
    constraint pk_userInfo_id primary key(id)
)
  • 在修改表时添加主键约束
-- 语法
alter table table_name
add constraint constraint_name
primary key(column1,...);

-- 举个例子
alter table userInfo
add constraint pk_userInfo_id
primary key(id);
  • 更改约束的名称
-- 语法
alter table table_name
rename constraint old_constraint_name to new_constraint_name
  • 删除主键约束
-- 禁用指定的约束
alter table table_name
disable | enable constraint constraint_name

-- 删除指定约束
alter table table_name
drop constraint constraint_name

-- 删除主键约束 [cascade]级联删除外键关系
alter table table_name
drop primary key [cascade]
外键约束
  • 在创建表时设置外键约束
-- table_name 从表,table2_name 主表
-- 设置外键约束时,主表的字段必须是主键
-- 主从表中相应的字段必须是同一个数据类型
-- 从表中外键字段的值必须来自主表中的相应字段的值,或者为null值
create table table_name(
    column_name datatype references table2_name(column_name,
     ...
);

-- 举个列子
create table typeInfo(
    id number(6),
    typeName varchar2(20),
    constraint pk_typeInfo_id primary key(id)
);

create table userInfo(
    id number(6,0) primary key,
    username varchar2(20),
    type_id number(6) references typeInfo(id)
)


-- 第二种
constraint constraint_name foreign key(column_name) references table_main_name(column_name) [on delete cascade];

-- 举个例子2  
create table userInfo(
    id number(6,0) primary key,
    username varchar2(20),
    type_id number(6),
    constraint fk_typeInfo_userInfo_type_id foreign key(type_id) references typeInfo(id)
)
  • 在修改表时添加外键约束
-- table_name 指的是从表
alter table table_name
add constraint constraint_name foreign key(column_name) references table_main_name(column_name) [on delete cascade];

-- 举个例子
alter table userInfo
add constraint fk_typeInfo_userInfo_type_id foreign key(type_id) references typeInfo(id) [on delete cascade];
  • 删除外键约束
-- 禁用指定的约束
alter table table_name
disable | enable constraint constraint_name

-- 删除指定约束
alter table table_name
drop constraint constraint_name
唯一约束
  • 作用:保证字段值的唯一性
  • 唯一约束和主键约束的区别:

    • 主键字段值必须是非空的
    • 唯一约束允许有一个空值
    • 主键在每一张表中只能有一个
    • 唯一约束在每张表中可以有多个
  • 在创建表时设置唯一约束

create table table_name(
    column_name datatype unique,
     ...
);

constraint constraint_name unique(column_name);
  • 在修改表时添加唯一约束
-- 语法
alter table table_name
add constraint constraint_name
unique(column1,...);
  • 删除唯一约束
-- 禁用指定的约束
alter table table_name
disable | enable constraint constraint_name

-- 删除指定约束
alter table table_name
drop constraint constraint_name
检查约束
  • 在创建表时设置检查约束
create table table_name(
    column_name datatype check(expressions),
     ...
);

-- 举个例子
create table userInfo(
    id number(6,0) primary key,
    username varchar2(20),
    salary number(5,2) check(salary>0)
);

-- 第二种
constraint constraint_name check(expressions);
  • 在修改表时添加检查约束
-- 语法
alter table table_name
add constraint constraint_name
check(expressions);
  • 删除检查约束
-- 禁用指定的约束
alter table table_name
disable | enable constraint constraint_name

-- 删除指定约束
alter table table_name
drop constraint constraint_name
如何查找创建的约束?
-- 查询数据字典 用户的约束
desc user_constraints;

-- 查找表的约束名称及其状态
select constraint_name,status from user_constraints where table_name='USERINFO'
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值