多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

中國最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2

sql教程

SQL 教程

SQL 高級教程

SQL 函數

  • SQL 主機
  • SQL 總結
  • 實例/測驗

    拓展閱讀

    SQL 使用視圖

    閱讀 (2359)

    SQL 使用視圖

    視圖無非就是存儲在數據庫中并具有名字的 SQL 語句,或者說是以預定義的 SQL 查詢的形式存在的數據表的成分。

    視圖可以包含表中的所有列,或者僅包含選定的列。視圖可以創建自一個或者多個表,這取決于創建該視圖的 SQL 語句的寫法。

    視圖,一種虛擬的表,允許用戶執行以下操作:

    • 以用戶或者某些類型的用戶感覺自然或者直觀的方式來組織數據;
    • 限制對數據的訪問,從而使得用戶僅能夠看到或者修改(某些情況下)他們需要的數據;
    • 從多個表中匯總數據,以產生報表。

    創建視圖:

    數據庫視圖由 CREATE VIEW 語句創建。視圖可以創建自單個表、多個表或者其他視圖。

    要創建視圖的話,用戶必須有適當的系統權限。具體需要何種權限隨數據庫系統實現的不同而不同。

    CREATE VIEW 語句的基本語法如下所示:

    CREATE VIEW view_name AS
    SELECT column1, column2.....
    FROM table_name
    WHERE [condition];

    和普通的 SQL SELECT 查詢一樣,你可以在上面的 SELECT 語句中包含多個數據表。

    示例:

    考慮 CUSTOMERS 表,表中的記錄如下所示:

    +----+----------+-----+-----------+----------+
    | ID | NAME     | AGE | ADDRESS   | SALARY   |
    +----+----------+-----+-----------+----------+
    |  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
    |  2 | Khilan   |  25 | Delhi     |  1500.00 |
    |  3 | kaushik  |  23 | Kota      |  2000.00 |
    |  4 | Chaitali |  25 | Mumbai    |  6500.00 |
    |  5 | Hardik   |  27 | Bhopal    |  8500.00 |
    |  6 | Komal    |  22 | MP        |  4500.00 |
    |  7 | Muffy    |  24 | Indore    | 10000.00 |
    +----+----------+-----+-----------+----------+

    下面是由 CUSTOMERS 表創建視圖的例子。該視圖包含來自 CUSTOMERS 表的顧客的名字(name)和年齡(age):

    SQL > CREATE VIEW CUSTOMERS_VIEW AS
    SELECT name, age
    FROM  CUSTOMERS;

    現在,你就可以像查詢普通的數據表一樣查詢 CUSTOMERS_VIEW 了:

    SQL > SELECT * FROM CUSTOMERS_VIEW;

    上述語句將會產生如下運行結果:

    +----------+-----+
    | name     | age |
    +----------+-----+
    | Ramesh   |  32 |
    | Khilan   |  25 |
    | kaushik  |  23 |
    | Chaitali |  25 |
    | Hardik   |  27 |
    | Komal    |  22 |
    | Muffy    |  24 |
    +----------+-----+

    WITH CHECK OPTION

    WITH CHECK OPTION 是 CREATE VIEW 語句的一個可選項。WITH CHECK OPTION 用于保證所有的 UPDATE 和 INSERT 語句都滿足視圖定義中的條件。

    如果不能滿足這些條件,UPDATE 或 INSERT 就會返回錯誤。

    下面的例子創建的也是 CUSTOMERS_VIEW 視圖,不過這次 WITH CHECK OPTION 是打開的:

    CREATE VIEW CUSTOMERS_VIEW AS
    SELECT name, age
    FROM  CUSTOMERS
    WHERE age IS NOT NULL
    WITH CHECK OPTION;

    這里 WITH CHECK OPTION 使得視圖拒絕任何 AGE 字段為 NULL 的條目,因為視圖的定義中,AGE 字段不能為空。

    更新視圖:

    視圖可以在特定的情況下更新:

    • SELECT 子句不能包含 DISTINCT 關鍵字
    • SELECT 子句不能包含任何匯總函數(summary functions)
    • SELECT 子句不能包含任何集合函數(set functions)
    • SELECT 子句不能包含任何集合運算符(set operators)
    • SELECT 子句不能包含 ORDER BY 子句
    • FROM 子句中不能有多個數據表
    • WHERE 子句不能包含子查詢(subquery)
    • 查詢語句中不能有 GROUP BY 或者 HAVING
    • 計算得出的列不能更新
    • 視圖必須包含原始數據表中所有的 NOT NULL 列,從而使 INSERT 查詢生效。

    如果視圖滿足以上所有的條件,該視圖就可以被更新。下面的例子中,Ramesh 的年齡被更新了:

    SQL > UPDATE CUSTOMERS_VIEW
          SET AGE = 35
          WHERE name='Ramesh';

    最終更新的還是原始數據表,只是其結果反應在了視圖上。現在查詢原始數據表,SELECT 語句將會產生以下結果:

    +----+----------+-----+-----------+----------+
    | ID | NAME     | AGE | ADDRESS   | SALARY   |
    +----+----------+-----+-----------+----------+
    |  1 | Ramesh   |  35 | Ahmedabad |  2000.00 |
    |  2 | Khilan   |  25 | Delhi     |  1500.00 |
    |  3 | kaushik  |  23 | Kota      |  2000.00 |
    |  4 | Chaitali |  25 | Mumbai    |  6500.00 |
    |  5 | Hardik   |  27 | Bhopal    |  8500.00 |
    |  6 | Komal    |  22 | MP        |  4500.00 |
    |  7 | Muffy    |  24 | Indore    | 10000.00 |
    +----+----------+-----+-----------+----------+

    向視圖中插入新行:

    可以向視圖中插入新行,其規則同(使用 UPDATE 命令)更新視圖所遵循的規則相同。

    這里我們不能向 CUSTOMERS_VIEW 視圖中添加新行,因為該視圖沒有包含原始數據表中所有 NOT NULL 的列。否則的話,你就可以像在數據表中插入新行一樣,向視圖中插入新行。

    刪除視圖中的行:

    視圖中的數據行可以被刪除。刪除數據行與更新視圖和向視圖中插入新行遵循相同的規則。

    下面的例子將刪除 CUSTOMERS_VIEW 視圖中 AGE=22 的數據行:

    SQL > DELETE FROM CUSTOMERS_VIEW
          WHERE age = 22;

    該語句最終會將原始數據表中對應的數據行刪除,只不過其結果反應在了視圖上。現在查詢原始數據表,SELECT 語句將會產生以下結果:

    +----+----------+-----+-----------+----------+
    | ID | NAME     | AGE | ADDRESS   | SALARY   |
    +----+----------+-----+-----------+----------+
    |  1 | Ramesh   |  35 | Ahmedabad |  2000.00 |
    |  2 | Khilan   |  25 | Delhi     |  1500.00 |
    |  3 | kaushik  |  23 | Kota      |  2000.00 |
    |  4 | Chaitali |  25 | Mumbai    |  6500.00 |
    |  5 | Hardik   |  27 | Bhopal    |  8500.00 |
    |  7 | Muffy    |  24 | Indore    | 10000.00 |
    +----+----------+-----+-----------+----------+

    刪除視圖:

    很明顯,當我們不再需要某個視圖的時候,需要有一種方式可以讓我們將其刪除。刪除視圖的語法非常簡單,如下所示:

    DROP VIEW view_name;

    下面的例子展示了如何從 CUSTOMERS 表中刪除 CUSTOMERS_VIEW 視圖:

    DROP VIEW CUSTOMERS_VIEW;
    關閉
    程序員人生
    主站蜘蛛池模板: 欧亚精品一区二区三区 | 欧美刺激午夜性久久久久久久 | 国产jizz中国jizz免费看 | 欧美日韩亚洲精品一区二区 | 日本成人高清视频 | 国产人成精品免费视频 | 成人久久精品 | 欧美国产成人在线 | 精品自拍视频在线观看 | 婷婷激情五月 | 日韩精品大片 | 欧美军人男同69gay | www.欧美xxx| 亚洲在线观看免费视频 | 成人在线免费小视频 | 亚洲精品国产一区二区三区四区 | 亚洲成人在线播放 | 综合亚洲欧美日韩一区二区 | 国产欧美日韩综合精品二区 | 在线观看视频网站 | 国产成人精品免费视频大全五级 | 亚洲免费大片 | free性欧美tube视频 | 欧美性乱 | 国产精品乱码一区二区三区 | 男女很舒服爽视频免费 | 久久精品国产精品亚洲精品 | 自由成熟的性色视频 | 成人免费小视频 | 亚洲人成77777在线播放网站不卡 | 欧美一区二区精品 | 玖玖色资源站 | 国产成人久久一区二区三区 | 色综合久久久高清综合久久久 | 欧美日韩一区二区在线视频播放 | 片在线观看免费观看视频 | 欧美黄色一级片视频 | 欧美 日韩 国产 成人 在线观看 | 免费羞羞视频 | 午夜羞羞| 亚洲精品高清在线观看 |