1. 程式人生 > >oracle資料庫物件

oracle資料庫物件

一、同義詞 1.概念:可以直接輸入其他使用者所擁有的表名,而不是通過使用者名稱、表名 2.優點:隱藏物件的名稱和所有者;對於分散式資料庫系統起到了透明位置的作用 3.型別:       私有:普通使用者建立,並且由建立該同義詞的使用者使用       公有:公用的同義詞必須由dba建立,供任何的資料庫使用者都可以使用,本地物件與公用物件同義詞同名時,優先順序本地物件優先。 3.語法:       建立:create [public] synonym 同義詞名 for object (使用者名稱.資料庫物件)           例:select * from emp               create public sysnonym emp for sctto.emp
          刪除:drop synonym  同義詞名 二、序列 1.概念:實現欄位的取值能夠按一定的規律自增 2.特點:生成唯一、連續的整數;用於生成主鍵值,可以正常升序也可以降序。 3.建立:     1.create sequence 序列名(seq_對應的表名)        minvalue 1   -------序列的最小值        maxvalue 100--------序列的最大值,最大可達10的27次方        start with 1--------起始值        increment by 1------每次自增的幅度        cache 10------------快取,orecal每次生成序列數的時候,一次性生成多少個放在記憶體裡面,便於應對頻繁的序列數獲取
       cycle;--------------在指定範圍裡面的數是否要迴圈使用 4.訪問     nextval:第一次使用序列時,一定要先執行nextval命令,這樣可以返回序列的初始值     currval:返回序列的當前值,即最後一次引用nextval的值 5.使用方式:用於資料新增的時候,一般用於資料插入時生成主鍵 insert into 表名(主鍵欄位名,其他欄位)values (序列名.nextval,...);將來可以通過觸發器,實現類似自增的效果 例:-----可以先為表t_table建立一個同義詞       create public sysnonym t_table for scott.t_table
   -----為t_table表新增資料       insert into t_table values(seq_dep.nextval,seq_dep.currval||'a')    -----通過序列可以生成使用者希望的主鍵值,比如id必須滿足三位。不足的左邊 用0補齊       insert into t_table1 values(lpad(seq_dep.nextval,3,'0'),seq_dep.currval||'a') 三、檢視 1.概念:檢視是虛表,沒有具體物理資料,是通過實體表的一種計算對映邏輯。主要就是為了方便和資料安全。                可以實現對複雜的sql語句的儲存;檢視是儲存在資料字典裡面的一條sql語句 2.優點:         進行服務端程式開發的時候,傳輸的資料量較少。         可以有針對性的選取使用者需要的資料。          維護資料的獨立性,可以實現從多個表檢索資料 3.分類:        簡單檢視:簡單檢視只從單標獲取資料,不包含函式,可以實現dml(增刪改操作)        複雜檢視: 4.語法: 標配語法:create [or replace] view v_檢視名稱 as  查詢語句    查詢:select*from v_emp1; select*from v_emp1 where ename like'%M%';    修改:update v_emp1 set job='銷售'wheree name='sb';    新增:insert into v_emp2 values('2222','sb2','技術');    刪除:delete from v_emp2 whereempno=2222    例1:create view v_dep_emp as         select e.*,d.name,d.loc from emp e join dept d on e.deptno=d.deptno       建立檢視後下次需要查詢時只需select * from v_dep_emp 就可以    例2:create view v_emp as        select e.empno,e.name,e.job from emp e       --檢視的查詢:select * from v_emp       --檢視的DML操作:update v_emp set ename='SCOYY' where empno=8801       --強建立檢視的許可權給scott         grant create any view to scott 高配語法:create [or replace] view v_檢視名稱           -----給select 語句裡面的欄位取別名           ------as select 語句,一條完整的sql語句,可以在語句裡面定義別名           ------[with check option] 指定插入或者修改的資料行必須滿足的條件            ------[with read only] 可以確保檢視不被修改    例1:建立一個檢視,裡面顯示,部門名稱,該部門的最高最低薪水,平均薪水        create or replace view v_depemp_sal         (name,minsal,maxsal,avgsal)         as select d.name,min(e.sal),max(e.sal),trunc(avg(e.sal)) from emp e join dept d on          e.deptno=d.deptno group by d.name        --建立結束後可通過語句:select * from v_depemp_sal 進行查詢    例2:建立一個簡單的檢視,裡面只包含depNo=10的員工資料,姓名,編號        create or replace view v_emp2        as select e.empno,e.ename,e.job,e.deptno from emp e where e.deptno=10        with check option constraint v_dep10_ck       ----通過如下語句進行驗證          select * from v_emp2          update v_emp2 set deptno =20 where empno=7728執行該語句時將會出現“識別符號無效”錯誤 四、索引 1.什麼是索引:             可選的結構、加快sql語句的執行、在邏輯和物理上獨立於表裡面的資料、orecal會自動進行索引的維護 2.索引的型別:            唯一索引:確保列裡面沒有重複的值,oracle會自動為主鍵和唯一鍵建立唯一索引,                                  唯一鍵:建立了唯一約束的列,就是唯一鍵,            create unique index 索引名 on 表名(欄位名)           索引加快速度的原理:                     如果沒有索引,資料庫系統會按照順序查詢的原則進行資料查詢。                     如果建立了索引,那麼首先會開闢一個空間,存放跟索引有關的資料內容,比如如果是主鍵,                     會有一個空間專門儲存某張表的主鍵值。有了索引資料以後,系統會利用類似折半查詢的方式                    來查詢資料,這個時間複雜度是log2N            組合索引                   一般將多個欄位組合在一起進行索引                    組合索引的使用情況:1、比如表裡面有姓名這樣的欄位,需要經常被查詢,                                                                  可以考慮對姓名建立一個索引,可以提升效率          create index 索引名 on 表名(欄位1,欄位2,欄位3) 3.如何建立索引:            a .在需要經常檢索的列上面建立索引,可以提高查詢效率;            b.關於使用符號對於索引的影響,<>,!=會導致索引使用失敗,系統照樣用全表查詢;            c.在查詢裡面使用函式的時候,要提升檢索速度,就要建立對應函式的索引;            d .需要注意型別的匹配,有時候根據內容可以查詢到,但如果型別不匹配,就無法利用索引,               資料庫會自動變成全表查詢 4.索引的優點:大大加快資料檢索的速度 5.索引的缺點:            a. 建立索引和維護索引要耗費時間,隨著資料量的增加而增加            b.索引是需要佔據物理空間            c.對資料進行增刪改的時候,索引也要動態的維護,降低了資料維護的速度 6.不適合建立索引的列:            a.很少進行檢索查詢的列            b.對於內容差異程度低的列,不要建立索引,索引無效            c.blob列,資料量太大的            d.增刪改操作比查詢操作頻繁的列 7.內容特徵方面進行索引型別劃分            a.平衡樹,內容差異程度高,比如,id,每一條記錄都不同            b.點陣圖,內容差異長度低,比如性別,比如民族