溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

OCP->047(Les10 Creating Other Schema Object)[20171213]

發(fā)布時(shí)間:2020-08-07 23:21:04 來源:ITPUB博客 閱讀:181 作者:aslo_brook 欄目:關(guān)系型數(shù)據(jù)庫(kù)
目的:
        創(chuàng)建簡(jiǎn)單和復(fù)雜視圖
        視圖復(fù)取數(shù)據(jù)
        創(chuàng)建、維護(hù)和使用序列
        創(chuàng)建和維護(hù)索引
        創(chuàng)建私有和公有同義詞

數(shù)據(jù)庫(kù)對(duì)象:
        
Object Description
Table Basic unit of storage; composed of rows  
View  Logically represents subsets of data from one or more tables    
Sequence  Generates numeric values
Index Improves the performance of some queries
Synonym  Gives alternative names to objects
視圖【View】
什么是視圖?
        視圖呈現(xiàn)邏輯子集或數(shù)據(jù)的組合。視圖是基于表或其他視圖的邏輯表。一個(gè)視圖不包含自己的數(shù)據(jù),而是像一個(gè)窗口,通過窗口可以查看或更改表中的數(shù)據(jù)。視圖所基于的表稱為基表。視圖是存儲(chǔ)SELECT 聲明中的數(shù)據(jù)字典。
        

視圖的好處:
        視圖可限制數(shù)據(jù)的訪問,因?yàn)橐晥D只顯示選定的列。
        簡(jiǎn)化查詢,視圖進(jìn)行簡(jiǎn)單的查詢來檢索復(fù)雜連接。
        提供數(shù)據(jù)獨(dú)立性。一個(gè)視圖可以從多個(gè)表中檢索數(shù)據(jù)。
        視圖可根據(jù)特定標(biāo)準(zhǔn)為用戶提供對(duì)數(shù)據(jù)的訪問權(quán)限。

 簡(jiǎn)單視圖和復(fù)雜視圖
        
    簡(jiǎn)單視圖:
            僅僅從一個(gè)表導(dǎo)出數(shù)據(jù)
            不包含函數(shù)或數(shù)組
            視圖可以執(zhí)行DML操作
    復(fù)雜視圖:
            從多個(gè)表導(dǎo)出數(shù)據(jù)
            包含函數(shù)或數(shù)組
            視圖不允許DML操作

        
    創(chuàng)建視圖語法:
            CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view_name
                [(alias[, alias]...)]
            AS subquery--子查詢中可包含一個(gè)復(fù)雜的select查詢。
            [WITH CHECK OPTION [CONSTRAINT constraint]]
            [WITH READ ONLY [CONSTRAINT constraint]];

        OR REPLACE :已存在的將進(jìn)行覆蓋重建。
        FORCE    :無論基表是否存在,都進(jìn)行創(chuàng)建。
        NOFORCE    :使用基表存在的才能創(chuàng)建(默認(rèn)值)
        view_name    :視圖名稱
        alias    :別名為視圖查詢選擇的表達(dá)式指定名稱(別名數(shù)必須與視圖選擇的表達(dá)式數(shù)量相匹配。)
        subquery    :子查詢是一個(gè)完整的SELECT語句(您可以在SELECT列表中使用別名)。
        WITH CHECK OPTION    :指定僅可以插入或更新視圖可訪問的那些行
        WITH READ ONLY    :確保在此視圖上不能執(zhí)行DML操作

    視圖上執(zhí)行DML操作:
        簡(jiǎn)單視圖可以執(zhí)行DML操作
        含以下條件則不能對(duì)視圖執(zhí)行DML操作
                -組函數(shù)
                -GROUP BY子句
                -DISTINCT 關(guān)鍵字
                -ROWNUM 關(guān)鍵字
                -列上含有表達(dá)式,如(salary * 12)
                -基表NOT NULL的列未在視圖列表中。
     移除視圖:
        
        DROP VIEW view_name;

序列【Sequence】
    序列是一個(gè)生成數(shù)值的數(shù)據(jù)庫(kù)對(duì)象??梢詣?chuàng)建序列,然后用來生成數(shù)值。
    
    序列的特征:
            -能自動(dòng)產(chǎn)生唯一的數(shù)值
            -它是共享對(duì)象
            -能用于主鍵值
            -替換應(yīng)用代碼
            -它的值緩存在內(nèi)存中提升訪問效率

    序列是用戶創(chuàng)建的數(shù)據(jù)庫(kù)對(duì)象,可以由多個(gè)用戶共享以生成整數(shù)。
    您可以定義一個(gè)序列來生成唯一的值,或者重復(fù)使用相同的數(shù)字。
    序列的典型用法是創(chuàng)建一個(gè)主鍵值,每個(gè)行必須是唯一的。 該序列由內(nèi)部Oracle例程生成并遞增(或遞減)。 這可以是一個(gè)節(jié)省時(shí)間的對(duì)象,因?yàn)樗梢詼p少編寫序列生成例程所需的應(yīng)用程序代碼量。
    序列號(hào)是獨(dú)立存儲(chǔ)和生成的。 因此,相同的序列可以用于多個(gè)表格。

    創(chuàng)建序列的語法:
            
            CREATE SEQUENCE sequence_name
                [INCREMENT BY n]
                [START WITH n]
                [{MAXVALUE n | NOMAXVALUE}]
                [{MINVALUE n | NOMINVALUE}]
                [{CYCLE | NOCYCLE}]
                [{CACHE n | NOCACHE}];

                INCREMENT BY n:指定序列號(hào)之間的間隔,其中n是一個(gè)整數(shù)(如果忽略此值,則序列增加1)
                START WITH n:指定要生成的第一個(gè)序列號(hào)(如果省略此值,則序列以1開頭)
                MAXVALUE n:指定序列可以生成的最大值
                NOMAXVALUE:指定遞增序列的最大值10^27,對(duì)遞減序列指定-1(默認(rèn)選項(xiàng))
                MINVALUE n:指定最小序列值
                NOMINVALUE:為遞增序列指定最小值1,對(duì)于遞增序列指定-(10^26)(默認(rèn)選項(xiàng))
                CYCLE | NOCYCLE:指定序列達(dá)到最大值或最小值是否繼續(xù)生成值(NOCYCLE是默認(rèn)選項(xiàng))
                CACHE| NOCACHE:指定Oracle服務(wù)器預(yù)分頻和保留在內(nèi)存中的值(默認(rèn)情況下,Oracle服務(wù)器緩存20個(gè)值)


           CREATE SEQUENCE sequence_t
                INCREMENT BY 1
                START WITH 10
                MAXVALUE 999
                NOCACHE
                NOCYCLE;
                
            序列生成后需要NEXTVAL和 CURRVAL偽列引用序列值
                NEXTVAL:偽列用于從指定序列中提取連續(xù)的序列號(hào)。必須使用序列名稱來限定nextval。當(dāng)引用sequence.nextval是,會(huì)生成一個(gè)新的序列號(hào),并將當(dāng)前序列置于currval。
                CURRVAL:偽列用于引用當(dāng)前用戶剛生成的序列號(hào)。必須使用nextval在當(dāng)前用戶會(huì)話生成一個(gè)序列號(hào),然后才能引用currval。
            16:53:05 SQL> select sequence_t.nextval from dual;
               NEXTVAL
            ----------
                10
            16:53:17 SQL> select sequence_t.currval from dual;
               CURRVAL
            ----------
                10

            緩存序列的值:
                在內(nèi)存中緩存序列,可以快速訪問這些序列值。當(dāng)?shù)谝淮螀⒖夹蛄袝r(shí),將會(huì)自動(dòng)填充緩存。從緩存的序列中檢索下一個(gè)序列值,在使用到最后的序列值之后,序列的下一個(gè)請(qǐng)求會(huì)將另一個(gè)序列的緩存拉入內(nèi)存中緩存。
            序列的丟失:
                    -連續(xù)生成序列的值時(shí),在事務(wù)中回滾會(huì)導(dǎo)致數(shù)值丟失。
                    -系統(tǒng)的崩潰,導(dǎo)致緩存中的序列丟失。
                    -多表共用同一序列,會(huì)導(dǎo)致序列丟失。

            修改序列:
                
                ALTER SEQUENCE sequence_name
                        INCREMENT BY 20
                        MAXVALUE 99999
                        NOCACHE
                        NOCYCLE;

            刪除序列:
                
                DROP SEQUENCE sequence_name;

                
    索引【Index】
        索引是數(shù)據(jù)庫(kù)對(duì)象,用于提高某些查詢的性能。創(chuàng)建主鍵或唯一性約束時(shí)數(shù)據(jù)庫(kù)也會(huì)自動(dòng)創(chuàng)建。

        索引:
            -它是一個(gè)schema對(duì)象
            -它使用指針關(guān)聯(lián)每一個(gè)行提高訪問速度
            -它減少磁盤I/O,快速訪問本地?cái)?shù)據(jù)
            -它依賴表
            -數(shù)據(jù)庫(kù)服務(wù)器自動(dòng)維護(hù)和使用它。

        Oracle服務(wù)器索引是一個(gè)模式對(duì)象,可以通過使用指針來加速行的檢索。 索引可以顯式或自動(dòng)創(chuàng)建。 如果在列上沒有索引,則會(huì)發(fā)生全表掃描。
        索引提供對(duì)表中行的直接和快速訪問。 其目的是通過使用索引路徑快速定位數(shù)據(jù)來減少磁盤I / O。 該索引由Oracle服務(wù)器自動(dòng)維護(hù)和使用。 索引創(chuàng)建后,用戶不需要直接的活動(dòng)。
        索引在邏輯上和物理上獨(dú)立于索引表。 這意味著它們可以隨時(shí)創(chuàng)建或刪除,并且不會(huì)影響基表或其他索引。
        注意:刪除表格時(shí),相應(yīng)的索引也會(huì)被刪除。
        
        
        索引類型:
            唯一性索引:PRIMARY KEY和UNIQUE約束會(huì)自動(dòng)創(chuàng)建唯一性索引。
            非唯一性索引:用戶自定義創(chuàng)建索引。
            
            注意:創(chuàng)建唯一性索引時(shí),建議創(chuàng)建一個(gè)唯一性約束,因?yàn)樗鼤?huì)隱式的創(chuàng)建一個(gè)唯一性索引。

        創(chuàng)建索引語法:
            
               CREATE INDEX schema.index_name
                    ON schema.table_name (column[,column]...);

        創(chuàng)建索引的條件:
                -列上的資料跨度大
                -列上的資料有大量的空值
                -一個(gè)或多個(gè)列經(jīng)常在WHERE子句或連接條件中一起使用
                -該表很大,大多數(shù)查詢預(yù)計(jì)將檢索少于2%到4%的行
        不建議創(chuàng)建索引:
                -索引列沒有用于SQL語句查詢
                -檢索資料大于總資料的2%或4%
                -該列上有大量的更新操作
                -該列查詢被用于表達(dá)式

        注意:索引越多并不是更好,表上索引越多不會(huì)產(chǎn)生更快的查詢。在有索引列的表上進(jìn)行DML操作意味索引也必須更新。索引依賴表被刪除,索引也會(huì)跟著刪除。
            

        刪除索引:
            DROP INDEX schema.index_name ;
            
        重建索引:
            ALTER INDEX schema.index_name REBUILD [PARALLEL n];


        14:40:24 SQL> create index hr.hr_emp_01 on hr.emp_01(salary);
        14:40:51 SQL> alter index hr.hr_emp_01 rebuild parallel 4;
        14:41:06 SQL> drop index hr.hr_emp_01;

    同義詞【Synonym】
            同義詞是能夠以其他名稱調(diào)用表(其他對(duì)象)的數(shù)據(jù)庫(kù)對(duì)象。可以創(chuàng)建同義詞,給一個(gè)表(或其他對(duì)象)的替代名稱。
    
        創(chuàng)建語法:
            CREATE [PUBLIC] SYNONYM synonym_name FOR schema.object_name;
        
        同義詞分類:
            PUBLIC:公有同義詞,其他用戶均可以訪問。
            PRIVATE:私有同義詞,只能是創(chuàng)建用戶所擁有或訪問(默認(rèn)值)。
    刪除同義詞:
            DROP [PUBLIC] SYNONYM synonym_name;
        注意:public公有同義詞用戶必須擁有drop public synonym權(quán)限才能刪除。
        14:57:16 SQL> drop public synonym dbmonitor_book2
        15:00:20   2  ;
        drop public synonym dbmonitor_book2
                    *
            ERROR 在行 1:
            ORA-01031: 權(quán)限不足
        15:00:25 SQL> drop  synonym dbmonitor_book2
        15:00:31   2  ;
            已刪除同義字.

            
            

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI