PostgreSQL View(視圖)

2020-04-22 17:57 更新

View(視圖)是一張假表,只不過是通過相關(guān)的名稱存儲(chǔ)在數(shù)據(jù)庫中的一個(gè) PostgreSQL 語句。

View(視圖)實(shí)際上是一個(gè)以預(yù)定義的 PostgreSQL 查詢形式存在的表的組合。

View(視圖)可以包含一個(gè)表的所有行或從一個(gè)或多個(gè)表選定行。

View(視圖)可以從一個(gè)或多個(gè)表創(chuàng)建,這取決于要?jiǎng)?chuàng)建視圖的 PostgreSQL 查詢。

View(視圖)是一種虛擬表,允許用戶實(shí)現(xiàn)以下幾點(diǎn):

  • 用戶或用戶組認(rèn)為更自然或直觀查找結(jié)構(gòu)數(shù)據(jù)的方式。
  • 限制數(shù)據(jù)訪問,用戶只能看到有限的數(shù)據(jù),而不是完整的表。
  • 匯總各種表中的數(shù)據(jù),用于生成報(bào)告。

PostgreSQL 視圖是只讀的,因此可能無法在視圖上執(zhí)行 DELETE、INSERT 或 UPDATE 語句。但是可以在視圖上創(chuàng)建一個(gè)觸發(fā)器,當(dāng)嘗試 DELETE、INSERT 或 UPDATE 視圖時(shí)觸發(fā),需要做的動(dòng)作在觸發(fā)器內(nèi)容中定義。

CREATE VIEW(創(chuàng)建視圖)

在 PostgreSQL 用 CREATE VIEW 語句創(chuàng)建視圖,視圖創(chuàng)建可以從一張表,多張表或者其他視圖。

CREATE VIEW 基礎(chǔ)語法如下:

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

您可以在 SELECT 語句中包含多個(gè)表,這與在正常的 SQL SELECT 查詢中的方式非常相似。如果使用了可選的 TEMP 或 TEMPORARY 關(guān)鍵字,則將在臨時(shí)數(shù)據(jù)庫中創(chuàng)建視圖。

實(shí)例

創(chuàng)建 COMPANY 表 ,數(shù)據(jù)內(nèi)容如下:

w3cschooldb# select * from 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
(7 rows)

現(xiàn)在,下面是一個(gè)從 COMPANY 表創(chuàng)建視圖的實(shí)例。視圖只從 COMPANY 表中選取幾列:

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

現(xiàn)在,可以查詢 COMPANY_VIEW,與查詢實(shí)際表的方式類似。下面是實(shí)例:

w3cschooldb# SELECT * FROM COMPANY_VIEW;

得到結(jié)果如下:

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 (刪除視圖)

要?jiǎng)h除視圖,只需使用帶有 view_name 的 DROP VIEW 語句。DROP VIEW 的基本語法如下:

w3cschooldb=# DROP VIEW view_name;

下面的命令將刪除我們在前面創(chuàng)建的 COMPANY_VIEW 視圖:

w3cschooldb=# DROP VIEW COMPANY_VIEW;


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)