乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      oracle 創(chuàng)建視圖

       mac_tom 2009-07-29
      1,視圖概念:
            視圖是一個(gè)邏輯結(jié)構(gòu),本身不包含任何數(shù)據(jù),是一個(gè)可命名的select語(yǔ)句。
            透過(guò)視圖可以看到底層數(shù)據(jù),但是視圖和數(shù)據(jù)是相互獨(dú)立的。
      2,創(chuàng)建視圖需要有DBA權(quán)限。
      3,語(yǔ)法:CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view[(alias[,alias]..)]
            AS subquery;
      4,create or replace 表示若視圖存在則替換掉;
      如:
      SQL> create view testview3
        2  as
        3  select * from test3;
      視圖已創(chuàng)建。
       
      SQL> create view testview3
        2  as
        3  select * from test3;
      create view testview3
                  *
      第 1 行出現(xiàn)錯(cuò)誤:
      ORA-00955: 名稱已由現(xiàn)有對(duì)象使用
      修改視圖:
      SQL> create or replace view testview3
        2  as
        3  select * from test3;
      視圖已創(chuàng)建。
      5,force 表示若表不存在則強(qiáng)制創(chuàng)建視圖;
      如:SQL> create view tt
        2  as
        3  select * from tt;
      create view tt
                  *
      第 1 行出現(xiàn)錯(cuò)誤:
      ORA-01731: 出現(xiàn)循環(huán)的視圖定義

      SQL> create force view tt
        2  as
        3  select * from tt;
      警告: 創(chuàng)建的視圖帶有編譯錯(cuò)誤。
      6,查看視圖結(jié)構(gòu):
      SQL> desc testview3;
       名稱                                      是否為空? 類型
       ----------------------------------------- -------- ----------------------------
       ID                                        NOT NULL NUMBER(38)
       LNAME                                              VARCHAR2(20)
       FNAME                                              VARCHAR2(20)
      7,在使用聚合函數(shù)創(chuàng)建視圖時(shí),需制定別名;
      SQL> create view testview4
        2  as
        3  select id,sum(id) from test3
        4  group by id;
      select id,sum(id) from test3
                *
      第 3 行出現(xiàn)錯(cuò)誤:
      ORA-00998: 必須使用列別名命名此表達(dá)式

      SQL> create view testview4
        2  as
        3  select id,sum(id) test3_id from test3
        4  group by id;
      視圖已創(chuàng)建。
      ===========================
      ***************************
      8,更新視圖:
      SQL> select * from testview5;
        TEST5_ID TEST5_NAME           TEST5_FNAME
      ---------- -------------------- --------------------
               3 kong                 sales
               2 hh
      SQL> update testview5 set test5_name='kong_gai'
        2  where test5_id=3;
      已更新 1 行。
      SQL> select * from testview5;
        TEST5_ID TEST5_NAME           TEST5_FNAME
      ---------- -------------------- --------------------
               3 kong_gai             sales
               2 hh
      =========================================================
      CREATE TABLE count1
      (num1 NUMBER(4,2),
      num2 NUMBER(5,2),
      result NUMBER(6,2));
      select * from count1
      insert into count1 values(1,2,3)
      insert into count1 values(3,4,5)
      --------------------------
      create or replace view testview3
      as
      select * from count1
      -------------------
      select * from testview3
      update testview3 set num1 = 9 where num2=2 ----通過(guò)更新視圖,更新了視圖檢索的數(shù)據(jù),同時(shí)更新了基本表中的數(shù)據(jù):
      1. select * from testview3
      2. select * from count1         
      ---------------------------------
       
      對(duì)另一個(gè)數(shù)據(jù)對(duì)象而言同義詞是一個(gè)別名。public同義詞是針對(duì)所有用戶的,相對(duì)而言private同義詞則只針對(duì)對(duì)象擁有者或被授予權(quán)限的賬戶。
      在本地?cái)?shù)據(jù)庫(kù)中同義詞可以表示表、視圖、序列、程序、函數(shù)或包等數(shù)據(jù)對(duì)象,也可以通過(guò)鏈接表示另一個(gè)數(shù)據(jù)庫(kù)的對(duì)象。
      ------------------------------
      1.創(chuàng)建同義詞語(yǔ)句:

        create public synonym table_name for user.table_name;

        其中第一個(gè)table_name和第二個(gè)table_name可以不一樣。

        此外如果要?jiǎng)?chuàng)建一個(gè)遠(yuǎn)程的數(shù)據(jù)庫(kù)上的某張表的同義詞,需要先創(chuàng)建一個(gè)Database Link(數(shù)據(jù)庫(kù)連接)來(lái)擴(kuò)展訪問(wèn),然后在使用如下語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù)同義詞:create synonym table_name for table_name@DB_Link;

        當(dāng)然,你可能需要在user用戶中給當(dāng)前用戶(user2)授權(quán): grant select/delete/update on user2

      2.刪除同義詞:

        drop public synonym table_name;

        3.查看所有同義詞:

        select * from dba_synonyms

        同義詞擁有如下好處:
      節(jié)省大量的數(shù)據(jù)庫(kù)空間,對(duì)不同用戶的操作同一張表沒(méi)有多少差別;
      擴(kuò)展數(shù)據(jù)庫(kù)的使用范圍,能夠在不同的數(shù)據(jù)庫(kù)用戶之間實(shí)現(xiàn)無(wú)縫交互;
      同義詞可以創(chuàng)建在不同的數(shù)據(jù)庫(kù)服務(wù)器上,通過(guò)網(wǎng)絡(luò)實(shí)現(xiàn)連接。
       
       -------------------------------------------------
      問(wèn)題描述:
      有兩個(gè)oralce實(shí)例 SID分別為 A B
      A中a用戶下含有表objects
      B中有b用戶
      使在B中用b用戶登錄后執(zhí)行
      select * from objects
      能顯示出A中a.objects的全部?jī)?nèi)容

      問(wèn)題解答:
      用b用戶登錄到B中,執(zhí)行:
      create public synonym objects for a.objects@A
      此時(shí)執(zhí)行select * from objects 就能顯示出a.objects的全部?jī)?nèi)容

      需要注意的一點(diǎn):
      B中不能含有table b.objects否則語(yǔ)句可以執(zhí)行,但是執(zhí)行select操作時(shí)顯示的仍然為b.objects的內(nèi)容,需要先把.objects刪除掉,重新建立synonym即可。

      刪除同義詞

      使用DROP SYNONYM語(yǔ)句刪除不再需要的同義詞 要想刪除私有同義詞 就省略 PUBLIC 關(guān)鍵字;

      要想刪除公共同義詞 就要包括PUBLIC 關(guān)鍵字


      DROP SYNONYM emp;  刪除名為emp 的私有同義詞

      DROP PUBLIC SYNONYM public_emp;  刪除名為public_emp的公有同義詞
      --------------------------------------------------
       
       
       
       

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多