1. 程式人生 > >ORACLE同義詞、序列、檢視

ORACLE同義詞、序列、檢視

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強制建立成功。