青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Prayer

在一般中尋求卓越
posts - 1256, comments - 190, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

SQL92,SQL SERVER,ORACLE,DB2可更新視圖概述

Posted on 2009-06-30 19:35 Prayer 閱讀(420) 評論(0)  編輯 收藏 引用 所屬分類: DB2

1.視圖概述

   視圖是從一個或多個基表(或視圖)導出的表。通常視圖僅僅是一個虛表,即數據庫中只存放視圖的定義信息等元數據,而不存放視圖對應的數據。 視圖上的操作和基表類似,但是 DBMS對視圖的更新操作(INSERT、DELETE、UPDATE)往往存在一定的限制。 DBMS對視圖進行的權限管理和基表也有所不同。
  
  視圖可以提高數據的邏輯獨立性,也可以增加一定的安全性。 DBMS在處理視圖時和基表存在很多不同的地方,例如:

定義:基于基表或視圖
數據:一般不單獨存放
查詢:允許,和基表類似
插入:有限制
刪除:有限制
更新:有限制
權限:有所不同
  本文主要討論視圖的可更新性,即考慮視圖上的更新類操作存在哪些特點和限制。

2.SQL92定義的可更新視圖

  若一個視圖是從單個的基表導出的,并且只是去掉了基表的某些行和列,且保留了基表的主碼,這樣的視圖被稱為行列子集視圖。SQL92中對可更新視圖的支持非常有限,主要就是上述的行列子集視圖。 SQL92中對可更新視圖的要求如下:

視圖定義必須是一個簡單的SELECT語句,不能帶連接、集合操作。即SELECT語句的FROM子句中不能出現多個表,也不能有 JOIN、EXCEPT、UNION、INTERSECT
視圖定義的 SELECT子句中不能有DISTINCT
SELECT子句中的各列必須來自于基表(視圖)的列,不能是表達式
視圖所基于的基表(或視圖)必須是可更新的
視圖定義的 SELECT子句的子查詢的FROM子句不能有視圖所基于的基表(或視圖)
視圖定義的 SELECT語句中不能含有GROUP BY子句
視圖定義的 SELECT語句中不能含有HAVING子句
  根據SQL92的定義,一個視圖要么是可更新的,要么是不可更新的,二者必居其一。SQL92 也不允許視圖中某些列可以更新,某些列不可以更新。

3.SQL99(SQL3)定義的可更新視圖

  SQL99放寬了對可更新視圖的限制,甚至還區分了視圖是否可插入、列是否可 LL、連接查詢生成的視圖可更新。

4.主流 DBMS對可更新視圖的支持

 (1)MS SQL Server 2000

  SQL Server 2000 除了支持SQL標準規定的可更新視圖,還提供了兩種擴充:

INSTEAD OF 觸發器
在視圖上創建這種類型的觸發器,可以間接地實現對基表的更新。
某些分區視圖是可更新的
  對于不具備上述兩種特性的視圖, SQL Server 遵照SQL標準的規定做了如下限制:

SELECT語句的結果列中沒有聚集函數,SELECT子句中沒有TOP, GROUPBY, UNION,DISTINCT 子句
這里沒有提到 INTERSECT, EXCEPT,是因為SQL Server不支持。
SELECT語句的結果列中沒有導出列。即只能有列名。
SELECT語句的FROM字句至少有一個表(或視圖)。
因為 SQL Server支持不帶FROM子句的SELECT語句。例如:

CREATE VIEW NoTable AS
  SELECT GETDATE() AS CurrentDate,
  @@LANGUAGE AS CurrentLanguage,
  CURRENT_USER AS CurrentUser;

SELECT CURRENT_USER;

UPDATE和INSERT,如果修改的數據僅涉及視圖所基于的一個基表,則可更新。DELETE則只能用于基于單個基表的視圖。
分區視圖其實是用 UNION ALL聯合兩個或多個SELECT語句定義的視圖。

SELECT
基表的所有列必須都在 SELECT的結果列中。
各個 SELECT語句的結果列對應的列是同一類型和COLLATION。
結果列中至少有一列上定義了簡單的 CHECK約束,保證該列取某個具體值的時候,要么不滿足所有表的CHECK約束,要么滿足其中一個表上的CHECK約束。即這些CHECK定義的值域是互不重疊的。
這樣的列被成為分區列。表上的約束必須是打開的。
表中的一個列最多在結果列中出現一次。

PARTITIONED COLUMN
分區列是主碼的一部分。
分區列不能是computed column。
該列上只能有1個約束。

MEMBER TABLES

表可以是本數據庫中的,也可以是其他數據庫中的,也可以是通過 OPENDATASOURCE 或 OPENROWSET-based引用的。
同一個表只能在 CREATE VIEW語句中出現一次。
不能在compute column上建有索引。
表的主碼必須類似(建在同樣的列上)。
所有表的 ANSI padding設置一致。

其他關于分布式分區表的限制

 (2)ORACLE 8i/9i

  ORACLE允許用“WITH READ ONLY”子句顯式地指定視圖是只讀的。若視圖不帶上述子句,則ORACLE遵照SQL標準提出了以下限制:

不能有集合操作(UNION,UNION ALL,INTERSECT,MINUS)
不能有DISTINCT
不能有聚集函數(AVG,COUNT,MAX,MIN等)和分析函數
不能有GROUP BY,ORDER BY,CONNECT BY,START WITH
SELECT列表中不能出現collection expression
SELECT列表中不能有子查詢
一般不能是JOIN查詢(參見i)
SELECT列表中若出現系統的偽列或表達式,則更新語句不能修改這些列
可更新的連接視圖要滿足一些額外的條件
簡單的說,視圖定義中用到的基本表必須是“鍵值保持表”。(A base table of a view is considered a key-preserved table if every primary-key or unique-key value in the base table is also unique in the result set of the join view—in other words, if the entity integrity of the base table is preserved by the join view. )
  我們還可以用INSTEAD OF 觸發器來實現視圖的更新。詳細的信息還請參考文獻[7]。

(3)DB2V8

  DB2將視圖區分為可刪除視圖、可更新視圖、可插入視圖、只讀視圖、不可用視圖等。這樣的劃分應該更為合理,也比較好理解。DB2的可更新視圖:

允許更新某些UNION ALL視圖
不允許更新象ORACLE支持的連接查詢視圖
  也可以用INSTEAD OF 觸發器來實現視圖的更新操作。詳細的信息還請參考文獻[8]。

  主要的幾個 DBMS 都實現了 SQL92 定義的可更新視圖,SQL99 定義的可更新視圖也或多或少的得到了支持。但是需要注意的是,產品之間對可更新視圖的實現程度是有差異的,而且由于它們支持的SQL語法存在一些差異,要書寫可移植的 SQL 語句需要特別注意。

5.可更新視圖的進一步探討

  E.F.Codd提出了評價全關系系統的12條準則。其中的準則6就是討論視圖的更新的。準則6的內容如下:
    準則6:視圖更新準則。所有理論上可以更新的視圖也應該允許由系統更新。
  理論上可以更新的視圖指的是對視圖的更新要求,存在一個與時間無關的算法,可以無二義性地把更新要求轉換為對基表的更新序列。視圖更新準則對于系統對數據的邏輯獨立性支持是非常重要的。
  
  C. J. Date在文獻[2]和他的很多技術文章中對SQL標準定義的可更新視圖提出了批評,并提出了自己的一系列觀點。他的基本觀點是所有的視圖本質都是可以更新的,只是某些時候要受制于完整性約束。這是一種比較美妙的境界,實際的 DBMS產品當然還不可能做到這樣完美。

參考文獻:

1.薩師煊、王珊,數據庫系統概論(第三版),高等教育出版社,2000
2.C. J. Date,An Introduction to Database Systems (Seventh Edition),機械工業出版社,2002
3.SQL92, ANSI/ISO/IEC 9075:1992
4.SQL99, ANSI/ISO/IEC 9075-2:1999
5.Peter Gulutzan, Trudy Pelzer, 齊舒創作室譯, SQL-3 參考大全, 機械工業出版社,2001
6.Microsoft, http://msdn.microsoft.com, SQL Server 2000 Online Book
7.Oracle, http://otn.oracle.com, Oracle 9i SQL Reference
8.IBM, http://www.ibm.com, IBM DB2 Universal Database SQL Reference Volume 2
9.http://www.oracle.com/oramag/oracle/01-mar/index.html?o21o8i.html
10.http://www-900.ibm.com/developerWorks/cn/dmdd/library/techarticles/0210rielau/0210rielau.shtml

 

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/yzsind/archive/2007/01/10/1478753.aspx

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/yzsind/archive/2007/01/10/1478753.aspx

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久天天躁夜夜躁狠狠躁2022| 国产日韩欧美成人| 亚洲夜间福利| 99国产精品久久久久久久成人热| 亚洲观看高清完整版在线观看| 男女激情久久| 亚洲激情欧美激情| 亚洲视频在线二区| 欧美主播一区二区三区| 久久天天躁狠狠躁夜夜av| 欧美99在线视频观看| 欧美日韩亚洲激情| 一区在线视频| 国产精品久久久久久久久久直播 | 国产麻豆9l精品三级站| 国产婷婷色一区二区三区在线| 国产亚洲激情视频在线| 精品盗摄一区二区三区| 亚洲三级电影在线观看| 亚洲欧美日韩国产中文| 久久精品久久综合| 欧美激情麻豆| 在线综合亚洲| 久久综合伊人77777| 欧美日一区二区在线观看| 极品少妇一区二区三区| 亚洲午夜日本在线观看| 欧美jizz19性欧美| 亚洲一区三区电影在线观看| 久久精品日韩欧美| 欧美日在线观看| 在线观看91精品国产麻豆| 亚洲视频在线一区观看| 美女网站在线免费欧美精品| 一区二区三区四区五区精品| 久久免费精品日本久久中文字幕| 欧美日韩天堂| 亚洲激情视频在线| 久久亚洲精品欧美| 亚洲午夜视频在线观看| 欧美日韩日韩| 99精品热视频| 老司机成人在线视频| 亚洲午夜日本在线观看| 欧美日本在线视频| 亚洲黄色大片| 欧美成人午夜77777| 欧美在线综合视频| 国产欧美日韩一区二区三区| 宅男66日本亚洲欧美视频 | 99精品视频免费观看| 麻豆久久婷婷| 狠狠干综合网| 亚洲一区在线观看免费观看电影高清| 欧美91精品| 久久er99精品| 国产真实乱偷精品视频免| 小辣椒精品导航| 亚洲影院免费| 国产日韩综合| 久久影视精品| 久久久国产精品一区| 好吊妞这里只有精品| 久久夜色精品一区| 91久久久在线| 亚洲狠狠丁香婷婷综合久久久| 久久久久久久久蜜桃| 亚洲欧美另类国产| 亚洲高清不卡一区| 日韩一级免费| 亚洲国产综合在线| 噜噜噜噜噜久久久久久91| 国产亚洲美州欧州综合国| 欧美一级成年大片在线观看| 亚洲影院色在线观看免费| 国产欧美日韩高清| 久久精品视频在线播放| 久久资源在线| 99re热这里只有精品视频| 亚洲美女中出| 国产精品专区h在线观看| 久久国产精品久久w女人spa| 久久国产黑丝| 亚洲美女黄色片| 亚洲男人的天堂在线观看| 一区国产精品| 99视频在线观看一区三区| 国产欧美日韩亚洲一区二区三区| 久久精品人人做人人爽| 国产欧美一区二区精品婷婷| 久久天堂av综合合色| 欧美成人中文字幕| 亚洲一级电影| 欧美自拍偷拍午夜视频| 亚洲激情电影中文字幕| 中文国产一区| 亚洲成人资源网| 日韩午夜电影| 国产综合视频| 亚洲免费精品| 伊人色综合久久天天五月婷| 亚洲电影免费在线观看| 国产精品久久久久一区二区| 久久青草福利网站| 欧美日韩国产综合久久| 久久激情婷婷| 欧美人与性动交α欧美精品济南到| 欧美一级久久| 欧美区高清在线| 美女视频一区免费观看| 国产精品视频yy9099| 欧美黄色一区| 国产一区二区无遮挡| 亚洲人久久久| 亚洲精品久久久久久下一站 | 香蕉成人久久| 99视频在线精品国自产拍免费观看| 亚洲欧美综合精品久久成人| 夜夜嗨av一区二区三区网页| 久久久久九九视频| 欧美一区二区三区日韩视频| 欧美精品一区二区三区蜜桃 | 亚洲视频www| 91久久久久久| 欧美一级成年大片在线观看| 日韩午夜三级在线| 久久夜色精品国产亚洲aⅴ | 亚洲福利视频三区| 国产亚洲欧洲997久久综合| 日韩午夜免费视频| 99国产精品久久久久老师| 农村妇女精品| 亚洲高清久久| 亚洲另类在线一区| 欧美国产精品人人做人人爱| 免费成人av在线看| 国内精品久久久久久久影视蜜臀 | 亚洲一区视频在线| 欧美高清成人| 在线看片一区| 老鸭窝91久久精品色噜噜导演| 欧美资源在线| 国内精品久久久久影院色| 亚洲欧美一区二区原创| 欧美在线三级| 国产一区二区三区在线观看视频 | 久久男女视频| 亚洲高清色综合| 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | 韩国三级在线一区| 欧美在线精品一区| 狂野欧美一区| 91久久精品国产| 欧美精品乱人伦久久久久久| 亚洲激情视频| 亚洲欧美国产日韩中文字幕| 国产精品久久久久免费a∨ | 亚洲女优在线| 欧美在线一级va免费观看| 黑人一区二区| 欧美gay视频激情| 日韩亚洲一区二区| 欧美在线免费看| 亚洲国产精品久久久久秋霞蜜臀| 欧美成人一品| 性色av一区二区三区| 国产一区自拍视频| 欧美成人黄色小视频| 一区二区三区免费观看| 久久久综合视频| 亚洲美女精品久久| 国产亚洲欧洲| 欧美日本一区| 久久爱www.| 亚洲精品色婷婷福利天堂| 欧美一区二区三区喷汁尤物| 精品不卡在线| 国产精品久久7| 久久综合给合久久狠狠色| 亚洲图片欧美日产| 亚洲成色最大综合在线| 午夜久久tv| 久久精品国产91精品亚洲| 另类图片综合电影| 亚洲第一网站| 国产精品久久久久久久久| 久久久亚洲午夜电影| 亚洲伦理一区| 欧美18av| 久久久久国产精品一区| 日韩视频在线永久播放| 国产在线观看91精品一区| 欧美日韩精品国产| 免费观看一级特黄欧美大片| 亚洲图片欧美午夜| 亚洲日本无吗高清不卡| 欧美.com| 免费看亚洲片| 麻豆久久精品| 久热国产精品视频|