--创建非空约束:
--创建表的同时创建约束,默认名称
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;
Oracle约束举例
最新推荐文章于 2021-04-05 07:22:47 发布