熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> SQL語言 >> 正文

SQL實戰新手入門:創建視圖(1)

2013-11-13 12:43:32  來源: SQL語言 

   創建視圖(

  對於視圖的基本形式來說將一個查詢轉換為一個視圖非常簡單只需要在查詢之前添加一個CREATE VIEW語句並為新創建的視圖定義一個名稱即可例如

  CREATE VIEW vwBooksONshelves

  AS

  SELECT

  loc_bookcase AS bookcase

   loc_shelf AS shelf

   loc_position_left AS position

   bk_title AS title

  FROM location INNER JOIN books

  ON locationfk_bk_loc = booksbk_id;

  這樣就創建了一個視圖接下來就可以使用簡單的SELECT *語法來查詢該視圖例如下面的例子

  SELECT * FROM vwBooksONshelves;

  表列出了查詢視圖的結果它與定義視圖的查詢產生的結果完全相同

  表 將兩個表的JOIN查詢包裝到一個視圖的結果

  (續表)

  視圖具有多種用途例如封裝復雜性強制安全性等本章隨後還將非常詳細地討論這些功能在各個RDBMS中CREATE VIEW語句可能會帶有相當多的特定於RDBMS的選項但前面例子中的語法是通用的在本書所討論的每一種RDBMS中都可以正常運行

  本書中介紹的任何一個SQL查詢(DQL類型的)幾乎都可以轉換為一個視圖但也有一些例外在某些RDBMS中帶有ORDER BY子句的查詢不能用在視圖的定義中(但是GROUPBY子句則可以)因此某些RDBMS不允許使用執行排序功能的關鍵字(DISTINCTFIRST等)例如HSQLDB和MySQL允許在視圖中使用ORDER BY子句但OracleMicrosoftAccessPostgreSQL和IBM DB則不允許使用ORDER BY子句任何一種RDBMS都不允許視圖引用自身(這會產生一個循環引用)也不允許引用暫態的結構例如臨時表(請參考第章)

  Microsoft Access是一個融合了數據庫和程序設計構造的集成環境可以將它作為其他RDBMS的前端但是這種功能具有很多限制例如在本章討論的環境中Microsoft Access數據庫引擎並不支持使用CREATE VIEW語句(就這一點而言也包括其他任何DDL語句)對非Microsoft Access引擎的數據庫創建視圖

  如果數據庫中已經存在同名的表或視圖RDBMS將拋出一個錯誤某些RDBMS(OraclePostgreSQL和MySQL)提供了替代的REPLACE關鍵字用於解決這一情況(在其他數據庫中在創建同名視圖之前必須先將已經存在的視圖刪除掉)例如

  CREATE OR REPLACE VIEW vwbooksONshelves

  AS

  SELECT

  loc_bookcase AS bookcase

   loc_shelf AS shelf

   loc_position_left AS position

   bk_title AS title

  FROM location INNER JOIN books

  ON locationfk_bk_loc = booksbk_id;

  開發人員可以輕而易舉地創建視圖以便限制用戶只能使用數據的某個子集子集既可以是縱向的(通過限定視圖暴露的列數)也可以是橫向的(通過限制返回記錄的數量)

  根據某種命名約定來命名數據庫對象是一個良好的編程實踐例如可以在視圖名稱前添加前綴vw使視圖與表區分開來

       返回目錄SQL實戰新手入門

       編輯推薦

       Oracle索引技術

       高性能MySQL

       數據倉庫與數據挖掘培訓視頻教程


From:http://tw.wingwit.com/Article/program/SQL/201311/16463.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.