根据类型进行分类
主键约束:唯一+非空
建立约束:
drop table tab_name;
create table tab_name(
pid number(5) primary key,
.....
);
自定义的报错信息提示
constraint tab_name pid pk PRIMARYKEY(pid)
可以定义联合主键:
传入两个参数即可
唯一约束
列级别约束
unique
表级别约束
constraint person pname uk UNIQUEF(panme)
非空约束
只有列级别约束
not null
检查约束 建表时
age not null check(age beteeen 0 and 150)
sex not null check(sex in ('男','女'))
改为表级别约束:
constraint person_age_ck check(age beteeen 0 and 150)
外键约束
drop table department(
deptno number(5) primary key,
....
);
drop table emplyee;
create table emplyee(
empno number(5),
ename varchar2(10),
deptno number(5),reference department(deptno)
) ;
表级别约束
constraint employee_deptno_fk foreign key(deptno) reference department(deptno)
根据约束的位置进行分类
列级别约束:
建表时 列后定义的约束
表级别约束:
constratint
建表语句的()里面 上面的列都定义结束之后 在后面写表级的约束,也可以将语句放在 列的后面
建立约束,尽量以表级别约束为主
添加约束:
alter table table_name add 约束
eg 将表级别的约束直接加在后面即可
alter table person add constraint person_age_ck check(age beteeen 0 and 150)
删除约束:
有约束名字的
alter table table_name drop 约束
eg 将表级别的约束直接加在后面即可
alter table person drop constraint person_age_ck
只加约束的名字即可
alter table person drop primary key
非空约束的修改 使用修改列的方式进行
查看约束
select *
from user_constraints
where table_name = 'emp'
select constraint ,constraint _type,table_name
from user_constraints
where table_name = 'emp'
约束启动和禁用:
暂时将约束失效
alter table tab_name disable constraint 约束名;
alter table tab_name enable constraint 约束名;
创建视图
必须在 sys 账号下
create [or relpace] [force unforce ]view my_view
as
select...[with check option 约束]
[with read only]
参数解释:
or relpace 如果视图存在就相当于修改视图
force 表不管存不存在都会创建 如果表不存在是 视图的数据为空
unforce 表存在的时候才能创建视图
with read only 不可以DML
注:
可以在视图里面起别名 在select 那里即可
删除视图
drop view view_name
创建视图之后将表删除,视图还存在吗?
???
同义词:
create sysnonym s_emp for scott.emp;
select * from e_emp;
drop