Oracle约束举例

--创建非空约束:
--创建表的同时创建约束,默认名称
create table tab3 (
       id number not null,
       name varchar2(20)
);
--创建表的同时创建约束,自定义名称
create table tab4 (
       id number constraint notnull_tab4_id not null,
       name varchar2(20)
       );
--已存在的表创建非空约束,通过alter命令(特殊)
alter table tab3
modify name varchar2(20) not null;
--非空约束,限制插入数据时,一定要在该列插入值,不能为null
insert into tab3 (id,name) values(1,'a');

--唯一性约束
create table tab5 (
       id number unique,
       name varchar2(20)
);
create table tab6 (
       id number,
       name varchar2(20),
       constraint uni_tab5_name unique (name)
);
--唯一性约束不允许列中有重复项
insert into tab5 (id) values(4);
insert into tab5 (id) values(4);--第二次无法执行

--主键约束:包含了非空、唯一约束,还会创建索引,还跟外键有关。
create table tab7 (
       id number primary key,
       name varchar2(20)
);
create table tab7 (
       id number,
       name varchar2(20),
       constraint pk_tab7_id primary key (id)
);

--创建参照表
create table tea (
       t_id number primary key,
       t_name varchar2(50)
);
--创建课程表,创建外键,默认形式,当有外键值使用参照表中一行时,该行不能删除
create table subj(
       s_id number,
       s_name varchar2(50),
       t_id number,
       constraint fk_subj_tea foreign key (t_id) references tea(t_id)
);
--创建课程表,创建外键,级联删除,参照表删除一行时,外键中的也会被删除(危险)
create table subj(
       s_id number,
       s_name varchar2(50),
       t_id number,
       constraint fk_subj_tea foreign key (t_id) references tea(t_id) on delete CASCADE
);
--创建课程表,创建外键,置空,参照表删除一行时,外键中的会设置为空值
create table subj(
       s_id number,
       s_name varchar2(50),
       t_id number,
       constraint fk_subj_tea foreign key (t_id) references tea(t_id) on delete set null
);
--外键做了什么,外键所在的列,值或者为null,或者为参照表主键列中已有的值。
insert into subj values(1,'语文',1);
insert into subj values(2,'物理',null);
--check约束:自定义的检查,适应不同环境下的数据正确性
create table tab8 (
       name varchar2(50),
       age number,
       constraint che_age check (age>=18 and age<=60)
);
 
insert into tab8 values('wang',30);

--追加约束
--基本语法 alter table 表名 add constraint 约束名 约束类型 (参数)
--非空约束例外,其它只能追加约束,删除约束

--删除约束
--基本语法 alter table 表名 drop 约束名

--无效化约束
--基本语法 alter table 表名 disable 约束名

--激活无效化的约束
--基本语法 alter table 表名 enable 约束名

--查询本用户创建过的约束
select * from user_constraints;

--查询约束所在的列
select * from user_cons_columns;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值