真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

oracle視圖怎么設(shè)置 oracle視圖表怎么修改

Oracle數(shù)據(jù)庫視圖管理經(jīng)驗(yàn)技巧

視圖 對(duì)于數(shù)據(jù)庫來說 是一個(gè)最基本的 也是最重要的功能之一 數(shù)據(jù)庫視圖設(shè)計(jì)的好壞 直接跟數(shù)據(jù)庫的性能相關(guān) 而且 在大型數(shù)據(jù)庫設(shè)計(jì)中 大家分工合作 基礎(chǔ)表的設(shè)計(jì)與報(bào)表視圖的設(shè)計(jì)往往由不同的人負(fù)責(zé) 所以 視圖的設(shè)計(jì)管理跟基礎(chǔ)表的設(shè)計(jì)管理一樣 都有很大的學(xué)問 在這篇文章中 筆者將結(jié)合自己在視圖設(shè)計(jì)管理方面的工作經(jīng)驗(yàn) 談?wù)勗谶@方面的一些鮮為人知的技巧

創(chuàng)新互聯(lián)長期為數(shù)千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為西充企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè),西充網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

技巧一 把基礎(chǔ)表與視圖脫離開來

一般來說 視圖都是在基礎(chǔ)表的上面建立起來的 也就是說 要先有基礎(chǔ)表 而后有視圖 但是 在大型數(shù)據(jù)庫的設(shè)計(jì)過程中 出于項(xiàng)目時(shí)間的考慮 往往基礎(chǔ)表與視圖的設(shè)計(jì)是同時(shí)進(jìn)行的 如一些人負(fù)責(zé)基礎(chǔ)表的建立 另一些人則負(fù)責(zé)視圖的設(shè)計(jì)與建立等等 在這個(gè)過程中 往往基礎(chǔ)表不存在的時(shí)候 就需要建立一些視圖 以加快項(xiàng)目的進(jìn)度

為了使得基礎(chǔ)表的創(chuàng)建和修改與視圖的創(chuàng)建于修改沒有必然的聯(lián)系 以便于員工之間工作的同步 提高工作效率 所以 在Oracle數(shù)據(jù)庫中提出了一個(gè) 強(qiáng)制創(chuàng)建視圖 的概念 也就是說 正常情況下 如果基本表不存在 則創(chuàng)建視圖就會(huì)失敗 但是 我們可以在創(chuàng)建視圖的過程中 加入一個(gè)參數(shù) 只要?jiǎng)?chuàng)建視圖的語法沒有錯(cuò)誤的話 即使基礎(chǔ)表不存在 仍然可以建立這張表格 這個(gè)有用的參數(shù)就是force選項(xiàng) 如我們建立視圖時(shí) CREATE FORCE VIEW TEXT 只需要在關(guān)鍵字VIEW之前加入FORCE參數(shù)即可 如此的話 系統(tǒng)在編譯視圖的時(shí)候 就不會(huì)去考慮基礎(chǔ)表是否存在

不過這里要注意一點(diǎn) 若基礎(chǔ)表不存在的話 則編譯后該視圖的狀態(tài)為 無效 不能再這個(gè)視圖的基礎(chǔ)上執(zhí)行一些操作 如查詢操作等等 當(dāng)下次訪問這個(gè)視圖的時(shí)候 則數(shù)據(jù)庫會(huì)對(duì)這個(gè)視圖進(jìn)行重新編譯 若此時(shí)基礎(chǔ)表存在了 則該基礎(chǔ)表就會(huì)變?yōu)橛行?若基礎(chǔ)表不存在 則這視圖就會(huì)失效

Oracle數(shù)據(jù)庫之所以如此設(shè)置 主要是出于在數(shù)據(jù)庫設(shè)計(jì)過程中協(xié)同辦公的需要 有了這個(gè)功能之后 則在數(shù)據(jù)庫建立的過程中 只要把數(shù)據(jù)庫基礎(chǔ)表與視圖設(shè)計(jì)好之后 大家就可以分工合作 在數(shù)據(jù)庫中建立相關(guān)的對(duì)象 不然的話 要等基礎(chǔ)表建立好之后再建立視圖 如此就會(huì)明顯的影響數(shù)據(jù)庫建立的進(jìn)度 所以 在數(shù)據(jù)庫建立的過程中 特別是中大型的數(shù)據(jù)庫系統(tǒng) 這是一個(gè)很實(shí)用的功能

技巧二 創(chuàng)建視圖的理想步驟

無論是簡單視圖 還是比較復(fù)雜的視圖 筆者覺得數(shù)據(jù)庫管理員在創(chuàng)建視圖的時(shí)候 最好能夠遵循一定的步驟 這一方面是因?yàn)橐晥D的更改相對(duì)來說 是一件比較麻煩的工作 所以 我們?cè)诮⒁晥D的時(shí)候 要確保視圖的準(zhǔn)確性 另一方面 視圖是基礎(chǔ)表的一個(gè)體現(xiàn)形式 若不按步驟來做的話 有可能就不能夠達(dá)到我們預(yù)計(jì)的需求

當(dāng)然這個(gè)步驟沒有官方的版本 完全是數(shù)據(jù)庫管理員根據(jù)實(shí)際的經(jīng)驗(yàn)總結(jié)出來的 這個(gè)步驟不僅對(duì)Oracle數(shù)據(jù)庫有效 對(duì)于其他數(shù)據(jù)庫來說 也是類似的道理

一般來說 視圖創(chuàng)建可以分為五步走

第一步 先考慮Select語句的編寫 我們知道 視圖其實(shí)就是一個(gè)Select語句的集合 所以 我們建立視圖的第一步 就是考慮這個(gè)Select語句該如何編寫 這個(gè)Select語句編寫的是否合理 執(zhí)行效率的高低直接影響著這個(gè)視圖的性能 另外 在Select語句中 可能還會(huì)有格式的控制 內(nèi)容的編排等等 如在Select語句中 可以把一些字段合并成一個(gè)字段;也可以把相關(guān)的內(nèi)容進(jìn)行倒置等等 這些功能都是Select語句完成的 所以可以這么說 Select語句的編寫是視圖建立的基礎(chǔ)

第二步 對(duì)這個(gè)Select語句進(jìn)行測(cè)試 當(dāng)我們編寫好Select語句之后 就需要在數(shù)據(jù)庫中執(zhí)行這條語句 看其能否查詢到我們想要的值 在對(duì)Select語句進(jìn)行測(cè)試的時(shí)候 需要注意一個(gè)問題 有時(shí)候Select查詢語句可以查到準(zhǔn)確的數(shù)據(jù) 但是在以這條語句建立視圖的時(shí)候 可能就會(huì)通不過 如在一些表之間的連接查詢的時(shí)候 如果兩個(gè)表中有個(gè)字段名相同 是可以的 因?yàn)樗麄兂俗侄蚊种?還有表名一起來定義這個(gè)字段 如A name與B name 這是不算重名的 但是 若在建立視圖的時(shí)候 這就會(huì)被認(rèn)為是重復(fù)的列明 需要對(duì)其中的一個(gè)列名進(jìn)行重定義 這一點(diǎn)在數(shù)據(jù)庫視圖建立的時(shí)候 要特別的注意

第三步 考慮查詢結(jié)果的準(zhǔn)確性 通過查詢語句把我們想要的結(jié)果查詢出來后 我們就需要看看這個(gè)結(jié)果是否滿足我們的需要 在這個(gè)過程中 我們主要注意兩點(diǎn) 一是形式字段是否齊全 在一些應(yīng)用系統(tǒng)中 若數(shù)據(jù)庫的視圖要能夠被前臺(tái)的應(yīng)用程序調(diào)用的話 則必須包含一些形式字段 如筆者以前在設(shè)計(jì)一個(gè)ERP系統(tǒng)的時(shí)候 若前臺(tái)系統(tǒng)要調(diào)用數(shù)據(jù)庫中的視圖的時(shí)候 必須包含記錄更新時(shí)間 更新者 記錄創(chuàng)建時(shí)間 創(chuàng)建者等相關(guān)信息 若缺乏這些信息的話 則前臺(tái)調(diào)用這張視圖的時(shí)候 就會(huì)出現(xiàn)錯(cuò)誤 故在考慮查詢結(jié)果準(zhǔn)確性的問題的時(shí)候 就要考慮到前臺(tái)應(yīng)用程序的需要 看看這些形式字段是否齊全 二是實(shí)體內(nèi)容的完整性 我們到底需要顯示表中的哪些字段呢 這個(gè)我們?cè)谶@里要確認(rèn)清楚 若顯示內(nèi)容太多的話 則會(huì)影響視圖的執(zhí)行效率 而且也會(huì)降低視圖的安全性作用;但是 若字段內(nèi)容顯示不足的話 則以后要添加字段的話 會(huì)比較麻煩 有一定的工作量 所以在這個(gè)檢驗(yàn)的時(shí)候 需要根據(jù)視圖的實(shí)際功用 確定視圖需要顯示的內(nèi)容

第四步 視圖的修飾 有時(shí)候 為了閱讀的方便 我們需要對(duì)查詢結(jié)果進(jìn)行一些修飾 如現(xiàn)在有兩張表 一張是員工基本信息表 這表中有員工姓名 員工職位編號(hào)等等;另一張表是職位基本信息表 在這表中有職位編號(hào) 職位名稱 我們希望在視圖中能夠如下顯示 職位 員工名字 如數(shù)據(jù)庫工程師 Victor 也就是說 把兩個(gè)字段合并起來 并且在中間加入一個(gè)冒號(hào) 這些格式性的內(nèi)容都是在查詢的時(shí)候?qū)崿F(xiàn)的 所以 我們確認(rèn)查詢的結(jié)果沒有錯(cuò)誤之后 接下來就要確認(rèn)格式問題 若能夠在視圖中規(guī)范這些格式問題 則前臺(tái)的程序設(shè)計(jì)就會(huì)相對(duì)來說比較簡單

lishixinzhi/Article/program/Oracle/201311/17034

Oracle中如何建視圖

Oracle中創(chuàng)建視圖

Oracle的數(shù)據(jù)庫對(duì)象分為五種:表,視圖,序列,索引和同義詞。

視圖是基于一個(gè)表或多個(gè)表或視圖的邏輯表,本身不包含數(shù)據(jù),通過它可以對(duì)表里面的數(shù)據(jù)進(jìn)行查詢和修改。視圖基于的表稱為基表。

視圖是存儲(chǔ)在數(shù)據(jù)字典里的一條select語句。 通過創(chuàng)建視圖可以提取數(shù)據(jù)的邏輯上的集合或組合。

視圖的優(yōu)點(diǎn):

1.對(duì)數(shù)據(jù)庫的訪問,因?yàn)橐晥D可以有選擇性的選取數(shù)據(jù)庫里的一部分。

2.用戶通過簡單的查詢可以從復(fù)雜查詢中得到結(jié)果。

3.維護(hù)數(shù)據(jù)的獨(dú)立性,試圖可從多個(gè)表檢索數(shù)據(jù)。

4.對(duì)于相同的數(shù)據(jù)可產(chǎn)生不同的視圖。

視圖分為簡單視圖和復(fù)雜視圖:

簡單視圖只從單表里獲取數(shù)據(jù)

復(fù)雜視圖從多表

簡單視圖不包含函數(shù)和數(shù)據(jù)組

復(fù)雜視圖包含

簡單視圖可以實(shí)現(xiàn)DML操作

復(fù)雜視圖不可以.

視圖的創(chuàng)建:

CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view_name

[(alias[, alias]...)]

AS subquery

[WITH CHECK OPTION [CONSTRAINT constraint]]

[WITH READ ONLY]

其中:

OR REPLACE :若所創(chuàng)建的試圖已經(jīng)存在,ORACLE自動(dòng)重建該視圖;

FORCE :不管基表是否存在ORACLE都會(huì)自動(dòng)創(chuàng)建該視圖;

NOFORCE :只有基表都存在ORACLE才會(huì)創(chuàng)建該視圖:

alias :為視圖產(chǎn)生的列定義的別名;

subquery :一條完整的SELECT語句,可以在該語句中定義別名;

WITH CHECK OPTION :

插入或修改的數(shù)據(jù)行必須滿足視圖定義的約束;

WITH READ ONLY :

該視圖上不能進(jìn)行任何DML操作。

例如:

CREATE OR REPLACE VIEW dept_sum_vw

(name,minsal,maxsal,avgsal)

AS SELECT d.dname,min(e.sal),max(e.sal),avg(e.sal)

FROM emp e,dept d

WHERE e.deptno=d.deptno

GROUP BY d.dname;

視圖的定義原則:

1.視圖的查詢可以使用復(fù)雜的SELECT語法,包括連接/分組查詢和子查詢;

2.在沒有WITH CHECK OPTION和 READ ONLY 的情況下,查詢中不能使用

ORDER BY 子句;

3.如果沒有為CHECK OPTION約束命名,系統(tǒng)會(huì)自動(dòng)為之命名,形式為SYS_Cn;

4.OR REPLACE選項(xiàng)可以不刪除原視圖便可更改其定義并重建,或重新授予對(duì)象

權(quán)限。

視圖的查詢:

視圖創(chuàng)建成功后,可以從視圖中檢索數(shù)據(jù),這點(diǎn)和從表中檢索數(shù)據(jù)一樣。

還可以查詢視圖的全部信息和指定的數(shù)據(jù)行和列。

如:

檢索數(shù)據(jù):

SQLSELECT * FROM dept_sum_vw;

查詢視圖定義:

SELECT view_name,text from user_views;

其中text顯示的內(nèi)容為視圖定義的SELECT語句,可通過DESC USER_VIEWS

得到相關(guān)信息。

修改視圖:

通過OR REPLACE 重新創(chuàng)建同名視圖即可。

視圖上的DML 操作:

DML操作應(yīng)遵循的原則:

1.簡單視圖可以執(zhí)行DML操作;

2.在視圖包含GROUP 函數(shù),GROUP BY子句,DISTINCT關(guān)鍵字時(shí)不能

刪除數(shù)據(jù)行;

3.在視圖不出現(xiàn)下列情況時(shí)可通過視圖修改基表數(shù)據(jù)或插入數(shù)據(jù):

a.視圖中包含GROUP 函數(shù),GROUP BY子句,DISTINCT關(guān)鍵字;

b.使用表達(dá)式定義的列;

c.ROWNUM偽列。

d.基表中未在視圖中選擇的其他列定義為非空且無默認(rèn)值。

視圖可用于保持?jǐn)?shù)據(jù)庫的完整性,但作用有限。

通過視圖執(zhí)行引用完整性約束可在數(shù)據(jù)庫級(jí)執(zhí)行約束。

WITH CHECK OPTION 子句限定:

通過視圖執(zhí)行的INSERTS和UPDATES操作不能創(chuàng)建該視圖檢索不到的數(shù)據(jù)行,

因?yàn)樗鼤?huì)對(duì)插入或修改的數(shù)據(jù)行執(zhí)行完整性約束和數(shù)據(jù)有效性檢查。

例如:

CREATE OR REPLACE VIEW vw_emp20

AS SELECT * FROM emp

WHERE deptno=20

WITH CHECK OPTION constraint vw_emp20_ck;

視圖 已建立。

查詢結(jié)果:

SELECT empno,ename,job FROM vw_emp20;

EMPNO ENAME JOB

--------------------- -------------- -------------

7369 SMITH CLERK

7566 JONES MANAGER

7902 FORD ANALYST

修改:

UPDATE vw_emp20

SET deptno=20

WHERE empno=7902;

將產(chǎn)生錯(cuò)誤:

UPDATE vw_emp20

*

ERROR 位于第一行:

ORA-01402:視圖WITH CHECK OPTION 違反WHERE 子句

視圖的刪除:

DROP VIEW VIEW_NAME語句刪除視圖。

刪除視圖的定義不影響基表中的數(shù)據(jù)。

只有視圖所有者和具備DROP VIEW權(quán)限的用戶可以刪除視圖。

視圖被刪除后,基于被刪除視圖的其他視圖或應(yīng)用將無效。

oracle物化視圖如何在上億的表建立

oracle物化視圖如何在上億的表建立,操作方法如下。

設(shè)備:聯(lián)想電腦

系統(tǒng):win8

軟件:PL/SQL Developer

1、首先在打開的軟件中,創(chuàng)建手動(dòng)刷新的物化視圖。

2、查詢物化視圖mv_address中的數(shù)據(jù)。

3、接著向地址表t_address中插入一條數(shù)據(jù)。

4、通過PL/SQL手動(dòng)刷新物化視圖?;蛘咄ㄟ^命令手動(dòng)刷新物化視圖(需要在命令窗口中執(zhí)行)。

5、刷新之后,物化視圖中的數(shù)據(jù)才會(huì)生成,如下圖所示就完成了。


名稱欄目:oracle視圖怎么設(shè)置 oracle視圖表怎么修改
瀏覽地址:http://weahome.cn/article/hjdhdd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部