位置:首頁 > 數據庫 > PostgreSQL教學 > PostgreSQL視圖

PostgreSQL視圖

視圖是偽表。也就是說,他們是不是真正的表,但仍然顯示為普通表來的SELECT。一個視圖可以代表一個真正的表的一個子集,從一個普通的表中選擇特定的列或某些行。視圖甚至可以代表加入表。因為視圖被分配單獨的權限,你可以使用它們來限製對表的訪問,使用戶隻看到特定的行或列一個表。

從一個或多個表,視圖可以包含一個表的所有行或選定行。可以從一個或多個表,這取決於寫入PostgreSQL查詢創建一個視圖創建視圖。

視圖是一種虛表,讓用戶做到以下幾點:

  • 結構數據的方式,用戶或類彆的用戶發現自然或直觀。

  • 限製訪問,用戶隻能看到有限的數據,而不是完整的表等數據。

  • 總結各種表中的數據可用於生成報告。

由於視圖不同於普通的表,所以可能不能執行DELETE,INSERT或UPDATE語句在視圖上。但是,您可以創建規則更正此問題,使用DELETE,INSERT或UPDATE視圖上。

創建視圖:

PostgreSQL的使用CREATE VIEW語句創建視圖。從單一表、多個表或另一個視圖中可以創建PostgreSQL視圖。

CREATE VIEW語法的基本情況如下:

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

可以包含多個表在SELECT語句,與在正常的PostgreSQL SELECT查詢中使用它們的方式非常相似。如果可選的TEMP或TEMPORARY關鍵字,視圖將被創建在臨時空間。在當前會話結束臨時視圖會自動丟棄。

例子:

考慮COMPANY 表中有以下記錄:

 id | name  | age | address    | salary
----+-------+-----+------------+--------
  1 | Paul  |  32 | California |  20000
  2 | Allen |  25 | Texas      |  15000
  3 | Teddy |  23 | Norway     |  20000
  4 | Mark  |  25 | Rich-Mond  |  65000
  5 | David |  27 | Texas      |  85000
  6 | Kim   |  22 | South-Hall |  45000
  7 | James |  24 | Houston    |  10000

現在,下麵是一個例子,從公司創建一個視圖表。這個視圖將被用於從COMPANY 表隻有幾列:

testdb=# CREATE VIEW COMPANY_VIEW AS
SELECT ID, NAME, AGE
FROM  COMPANY;

現在可以在類似的方式為查詢實際的表查詢COMPANY_VIEW。下麵的例子:

testdb=# SELECT * FROM COMPANY_VIEW;

這將產生以下結果:

 id | name  | age
----+-------+-----
  1 | Paul  |  32
  2 | Allen |  25
  3 | Teddy |  23
  4 | Mark  |  25
  5 | David |  27
  6 | Kim   |  22
  7 | James |  24
(7 rows)

刪除視圖:

要刪除視圖,隻需使用DROP VIEW語句與VIEW_NAME。 DROP VIEW的基本語法如下:

testdb=# DROP VIEW view_name;

以下命令將刪除COMPANY_VIEW:

testdb=# DROP VIEW COMPANY_VIEW;