ORACLE同義詞、序列、檢視
阿新 • • 發佈:2019-01-05
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強制建立成功。