ORACLE同义词、序列、视图

版权声明:本文为博主原创文章,未经允许不得转载 https://blog.csdn.net/qq_38545819/article/details/85252451

1.同义词

1.1私有同义词
 (默认情况下,普通用户没有创建同义词的权限)
create[or replace] synonym def
for 
scott.emp;
私有同义词只能在当前用户下访问。
用sys或者system用户给用户授权创建私有同义词:
grant create synonym to 用户名;
所创建的同义词为私有只能有创建的用户访问,其他用户不能通过这个同义词访问。
如果用户2想要访问这个同义词,需要创建同义词的那个用户 给用户2授权
grant select on def to 用户2;
用户2访问:
select * from scott.def;
私有时一定要用
同义词创建者的用户名.同义词
不然报错没有这个表。

当创建者自己访问,可以不加前缀。
1.2创建公有同义词–scott

(默认情况下普通用户没有这个权限)

用sys或者system用户给用户授权创建公有同义词:
grant create public synonym to 用户名;
用户3创建:create [or replace] public synonym ijk for scott.emp
用户8去访问:select * from ijk;
公有时不要用
用户名.同义词,
会提示表不存在。
1.3删除同义词
drop synonym def;
drop public synonym ijk;

2.序列

2.1 创建一个序列

cache指缓存,序列预先创建n个值,使用时直接取,提高性能。

create squence test_seq
start with 1
increment by 1
maxvalue 10
nocycle 
cache 2;
不循环,超出最大值10会报错。
create squence test_seq2
start with 1
increment by 1
maxvalue 10
cycle 
cache 2;
循环,超出最大值10会继续从1开始。
2.2获取序列的下一个值
select test_seq.nextval from dual;
2.3获取序列的当前值
select test_seq.currval from dual;

3.视图

3.1创建带有with check option 的视图
create or replace view stuinfov 
as
select * from stuinfo where sname like '%三%'
with 
check option constraint chk_sv;

chk_sv是随便起的检查约束的名字,前面的必须照写。

视图其实就是一张表,可以进行增删改查。
但是执行 
check option constraint chk_sv
以后,添加的姓名必须含有三字,不含就报错。
create or replace [force] view abc 
as 
select *from def;
当表def不存在时,不加force会报错,加了force强制创建成功。

猜你喜欢

转载自blog.csdn.net/qq_38545819/article/details/85252451
今日推荐