日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

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

sql教程

SQL 教程

SQL 高級教程

SQL 函數

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

    拓展閱讀

    SQL 使用視圖

    閱讀 (2361)

    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;
    關閉
    程序員人生
    主站蜘蛛池模板: 精品午夜一区二区 | 黄色激情视频在线观看 | 成人在线免费视频观看 | 国产精品久久久久一区二区三区共 | 99国产精品99久久久久久粉嫩 | 国产一区二区在线观看免费 | 黄色电影在线免费观看 | 99精品视频在线观看免费 | 久久99国产精品久久99果冻传媒 | 久久最新网址 | 国产精品乱码一区二区三区 | 男女福利视频 | 精品一区在线播放 | 国产精品久久久久久久久免费软件 | jav成人av免费播放 | 夜夜草视频 | 精品久久久久一区二区国产 | 精品国产1区2区 | 久久99精品久久久久久久久久久久 | 国产一区二区三区免费视频 | 人人射 | 日日噜噜噜夜夜爽爽狠狠视频, | 91免费在线视频 | 麻豆成人在线观看 | 欧洲精品久久久 | 国精品一区二区 | 国产精品黄视频 | 国产欧美一区二区精品久导航 | 国产青青视频 | 国产精品一区二区三区在线 | 国产精品久久 | 欧美第一区| av天天干 | 成人免费视频一区二区 | 亚洲成av人片在线观看无码 | 亚洲污视频 | 久久久久久免费毛片精品 | 伊人影院久久 | 成人久久av | 国内成人精品2018免费看 | 青青草亚洲|