PL/SQL基礎篇8(view,sequence,synonym)

 視圖:

/*

  視圖:經過以制定的方式顯示來自一個或多個表的數據

        可以視爲"虛擬表""存儲的查詢"

        創建視圖所依據的表爲基表

  優點:1.提供了另外一種級別的安全性;

        2.隱藏數據的複雜性;

        3.簡化用戶的sql語句;

        4.隔離基表的變化

        5.通過重命名列,從另外一個角度提供對數據的訪問。

*/

-- 視圖,關鍵字  view as

create or replace view emp_view  -- 要有創建view的權限

as

  select ename,sal,dname from emp,dept where emp.deptno = dept.deptno;

-- 從視圖中查詢

select * from emp_view;

-- 刪除視圖

drop  view emp_view;

/*

   連接視圖查詢與多表連接查詢相似,因爲可以將視圖當做虛擬表,只是有一些限制:

    1.只能修改一個底層的基表

    2.如果修改違反了基表的約束條件,則無法更新視圖

    3.如果視圖包含連接操作符、DISTINCT 關鍵字、集合操作符、聚合函數或 GROUP BY 子句,則將無法更新視圖

    4.如果視圖包含僞列或表達式,則將無法更新視圖

*/

索引:

/*

  索引:索引是與表相關的一個可選結構

  創建索引的優點:1.減少磁盤的I/O

                  2.能提高查詢語句的執行能力

  注意:建立不必要的索引會造成寫入數據的性能開銷以及磁盤空間的浪費

*/

-- 1.創建標準索引

create index emp_index on emp(ename); -- 注意不能用or replace

alter index emp_index rebuild; -- 重構索引

drop index emp_index; -- 刪除索引

-- 創建唯一索引

create unique index dept_uniqueIndex on dept(dname);

drop index dept_uniqueIndex;

 

同義詞

/*

     同義詞:現有對象的一個別名;

     優點:1.簡化sql;2.隱藏了對象的名稱和所有者;3.提供對對象的公共訪問

*/

-- 創建私有同義詞,只能在模式內訪問,且不能與當前對象同名

create or replace synonym em for emp;

select * from em;

drop synonym em;

--創建公有的同義詞,可以被所有的數據庫用戶訪問,當然別的用戶要有訪問權限

create or replace public synonym pub_emp for emp; --需要授權

drop public synonym pub_emp; -- 需要授權

 

/*

   序列:用於生成唯一,連續序號的對象,可以使升序,也可以使降序

*/

create sequence my_seq  -- 此處與索引一樣不能用 or replace

start with 1

increment by 1

maxvalue 1000

minvalue 1

cycle

cache 20

-- 查詢序列

select my_seq.nextval from dual; -- 序列下一個值

select my_seq.currval from dual; -- 序列當前值

create table person(

   pid number primary key,

   pname varchar2(20)

)

-- 人工創建自增

insert into person(pid,pname) values(my_seq.nextval,'ysjian');

insert into person values(my_seq.nextval,'ysjian');

select * from person;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章