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

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>
            国产精品videosex极品| 尤物精品在线| 99国产一区二区三精品乱码| 久久精选视频| 亚洲精品久久久久久下一站| 亚洲欧美不卡| 一本色道88久久加勒比精品| 在线看不卡av| 亚洲午夜国产成人av电影男同| 一区二区三区欧美成人| 一区二区国产在线观看| 午夜精品一区二区三区在线视| 亚洲色无码播放| 亚洲欧美电影院| 麻豆精品视频| 最新日韩精品| 久久综合婷婷| 久久久久久久综合色一本| 欧美高清视频免费观看| 久久米奇亚洲| 亚洲精品在线免费观看视频| 亚洲成色精品| 中日韩美女免费视频网站在线观看| 久久精品理论片| 国产欧美一区二区三区在线老狼| 亚洲欧美国产高清va在线播| 亚洲人午夜精品| 欧美日韩调教| 亚洲美女av网站| 欧美国产一区二区| 久久久久久亚洲精品不卡4k岛国| 国产一区视频在线观看免费| 先锋影音一区二区三区| 亚洲综合成人婷婷小说| 国产精品久久夜| 亚洲欧洲在线播放| 亚洲男人的天堂在线aⅴ视频| 亚洲国产欧美久久| 日韩视频在线观看国产| 一区二区三区精品视频在线观看| 日韩一区二区精品葵司在线| 久久理论片午夜琪琪电影网| 一区二区三区高清视频在线观看| 久久精品国产亚洲a| 欧美一区二区三区在线观看视频| 欧美精品在线视频观看| 亚洲激情在线观看| 亚洲国产成人一区| 久久午夜电影| 亚洲国产日韩欧美一区二区三区| 欧美日韩卡一卡二| 午夜精品久久久久久久99水蜜桃| 亚洲香蕉网站| 亚洲激情视频在线播放| 亚洲一卡久久| 日韩视频三区| 久久久久久久网| 亚洲欧美日韩国产综合在线 | 蜜桃av一区二区| 黄色在线一区| 久久av一区二区三区漫画| 亚洲级视频在线观看免费1级| 中文日韩电影网站| 亚洲国产精品999| 久久久久免费| 91久久国产综合久久| 亚洲午夜影视影院在线观看| 国产精品久久久久久模特 | 亚洲欧美日本另类| 一本色道久久综合精品竹菊 | 欧美一级在线视频| 欧美精品乱人伦久久久久久 | 亚洲免费av网站| 亚洲精选在线观看| 免费欧美电影| 99国产精品99久久久久久粉嫩| 亚洲国产日韩欧美在线动漫| 久久综合九色欧美综合狠狠| 快射av在线播放一区| 亚洲人成7777| 国产精品成人免费| 欧美一区二区三区另类| 久久一区二区三区四区| 一色屋精品视频在线观看网站| 老鸭窝毛片一区二区三区 | 亚洲一区二区三区777| 欧美日韩成人网| 亚洲一区二区三区在线播放| 久久久久久久久蜜桃| 亚洲高清av在线| 国产精品视频自拍| 久久久夜夜夜| 亚洲一区二区3| 91久久精品国产91性色tv| 亚洲欧美日本另类| 136国产福利精品导航| 国产精品日韩在线| 欧美精品1区2区3区| 久久精品国产精品亚洲| 亚洲一区二区三区激情| 欧美国产日韩一区二区三区| 欧美在线综合| 欧美一二区视频| 亚洲一区精彩视频| 狼狼综合久久久久综合网| 一区二区三区欧美成人| 亚洲免费观看| 亚洲国产影院| 亚洲国产日韩欧美一区二区三区| 久久亚洲综合网| 久久久久国产精品一区二区| 午夜欧美精品| 欧美一区二区在线观看| 欧美一区二区三区精品电影| 亚洲欧美精品| 欧美资源在线| 另类图片国产| 亚洲精品视频免费| 夜色激情一区二区| 亚洲一区日韩| 久久午夜羞羞影院免费观看| 久久久水蜜桃av免费网站| 久久久亚洲午夜电影| 欧美大片第1页| 欧美日韩综合另类| 国产精品日日摸夜夜添夜夜av| 国产一区白浆| aa国产精品| 久久成人免费日本黄色| 欧美日韩在线视频首页| 亚洲精品黄网在线观看| 亚洲美女少妇无套啪啪呻吟| 午夜国产不卡在线观看视频| 免费不卡欧美自拍视频| 国产精品国产a级| 亚洲成人在线视频播放| 午夜激情综合网| 亚洲精品久久久蜜桃| 久久色在线播放| 欧美日韩亚洲高清一区二区| 在线电影欧美日韩一区二区私密| 亚洲精品日本| 99精品福利视频| 亚洲国产精品久久久久秋霞蜜臀| 免费观看亚洲视频大全| 午夜久久电影网| 亚洲国产精品久久91精品| 亚洲主播在线| 一片黄亚洲嫩模| 亚洲一区二区三区在线视频| 一本色道久久综合亚洲精品不 | 在线亚洲伦理| 亚洲欧美中文日韩在线| 国产精品视频九色porn| 亚洲免费在线视频一区 二区| 欧美一区在线直播| 伊甸园精品99久久久久久| 欧美激情一区二区三区| 在线亚洲美日韩| 巨乳诱惑日韩免费av| 亚洲国产成人tv| 欧美日本高清| 亚洲欧美日韩国产| 欧美激情一区三区| 亚洲图片在线观看| 国产视频欧美| 欧美777四色影视在线| 亚洲最快最全在线视频| 久久人人爽人人爽爽久久| 亚洲精品美女| 国产日韩欧美精品| 欧美激情国产精品| 久久国产成人| 这里只有精品丝袜| 欧美搞黄网站| 久久久久久久尹人综合网亚洲| 亚洲九九爱视频| 国产一区二区视频在线观看| 欧美精品久久一区二区| 久久er精品视频| 一区二区三区视频在线看| 欧美顶级少妇做爰| 久久精品亚洲一区| 亚洲素人一区二区| 亚洲精品欧美激情| 日韩视频第一页| 欧美成人自拍| 久久精品一区四区| 亚洲欧美在线磁力| 一区二区欧美在线| 亚洲国产一区二区三区a毛片| 国产裸体写真av一区二区| 欧美日韩在线视频一区二区| 欧美sm重口味系列视频在线观看| 久久经典综合| 欧美一区二区三区视频| 亚洲天堂久久| 一区二区冒白浆视频| 亚洲美女毛片| 亚洲精品乱码视频 |