SQL 檢視

摘要:在本教程中,您將學習 SQL 檢視以及如何管理資料庫檢視,例如建立新檢視、修改現有檢視和刪除檢視。

SQL 檢視簡介 #

在 SQL 中,檢視是儲存在資料庫系統中的一個命名的查詢

與表不同,檢視不物理儲存資料。資料庫系統只儲存檢視的定義。

當您從檢視中查詢資料時,資料庫系統會執行該查詢以從底層表中檢索資料。

有些檢視是可更新的。這意味著您可以透過可更新的檢視修改底層表的資料。

建立 SQL 檢視 #

要建立新檢視,您可以使用 CREATE VIEW 語句,後跟一個查詢,如下所示:

CREATE VIEW [IF NOT EXISTS] view_name
AS
queryCode language: SQL (Structured Query Language) (sql)

在此語法中:

  • 首先,在 CREATE VIEW 子句之後指定檢視的名稱。IF NOT EXISTS 選項可防止建立已存在的檢視。
  • 其次,在 AS 關鍵字之後提供一個 SELECT 語句。這個 SELECT 語句被稱為檢視定義查詢。

SELECT 語句可以從一個或多個表中檢索資料。這些表被稱為基表。

例如,以下語句基於 employeesdepartments 表建立了一個名為 employee_contacts 的檢視。

emp_dept_tables
CREATE VIEW employee_contacts AS
SELECT
  first_name,
  last_name,
  email,
  phone_number,
  department_name
FROM
  employees e
  INNER JOIN departments d ON d.department_id = e.department_id
ORDER BY
  first_name;Code language: SQL (Structured Query Language) (sql)

試一試

在此示例中,我們基於一個從 employeesdepartments連線資料的查詢建立了一個檢視。

指定 SQL 檢視列 #

預設情況下,檢視使用定義查詢的列名。如果您想使用不同的名稱,可以在 CREATE VIEW 子句中明確指定它們。

CREATE VIEW view_name(column1, column2, ...) 
AS
query;Code language: SQL (Structured Query Language) (sql)

在此語法中,我們在檢視名稱後為檢視指定一個用逗號分隔的列列表。

例如,以下語句建立了一個名為 payroll 的檢視,其列名與基表不同。

CREATE VIEW payroll (first_name, last_name, job, compensation) 
AS
SELECT
  first_name,
  last_name,
  job_title,
  salary
FROM
  employees e
  INNER JOIN jobs j ON j.job_id = e.job_id
ORDER BY
  first_name;Code language: SQL (Structured Query Language) (sql)

試一試

從檢視查詢資料 #

從檢視查詢資料與從表中選擇資料相同。例如,以下語句從 employee_contacts 檢視中選擇資料。

SELECT
  *
FROM
  employee_contacts;Code language: SQL (Structured Query Language) (sql)

試一試

修改檢視 #

要修改檢視結構,例如向檢視新增新列或從檢視中刪除列,您可以使用 CREATE OR REPLACE VIEW 語句。

CREATE OR REPLACE view_name 
AS
query;Code language: SQL (Structured Query Language) (sql)

如果檢視不存在,CREATE OR REPLACE 語句會建立一個新檢視;如果檢視已存在,則會替換現有檢視。

例如,以下語句透過新增 department 列並將 compensation 列重新命名為 salary 列來更改 payroll 檢視。

CREATE OR REPLACE VIEW payroll (first_name, last_name, job, department, salary) AS
SELECT
  first_name,
  last_name,
  job_title,
  department_name,
  salary
FROM
  employees e
  INNER JOIN jobs j ON j.job_id = e.job_id
  INNER JOIN departments d ON d.department_id = e.department_id
ORDER BY
  first_name;Code language: SQL (Structured Query Language) (sql)

試一試

SELECT
  *
FROM
  payroll;Code language: SQL (Structured Query Language) (sql)

試一試

SQL Modify View Example

刪除 SQL 檢視 #

要從資料庫中刪除檢視,您可以使用 DROP VIEW 語句,其語法如下:

DROP VIEW IF EXISTS view_name;Code language: SQL (Structured Query Language) (sql)

在此語法中:

  • 首先,在 DROP VIEW 關鍵字之後指定要刪除的檢視的名稱 (view_name)。
  • 其次,使用 IF EXISTS 選項有條件地僅在檢視存在時刪除它。如果您不使用 IF EXISTS 選項,而檢視不存在,資料庫系統將發出錯誤。IF EXISTS 選項可防止資料庫因刪除不存在的檢視而發出錯誤。

請注意,DROP VIEW 語句只刪除檢視,不刪除基表。

以下語句使用 DROP VIEW 語句從資料庫中刪除 payroll 檢視。

DROP VIEW payroll;Code language: SQL (Structured Query Language) (sql)

試一試

為何使用 SQL 檢視 #

  • 簡化複雜查詢:檢視允許您封裝包含連線、聚合、聯合和篩選的複雜查詢,幫助您編寫更直接的查詢。
  • 資料安全:檢視可以透過僅公開相關資料來限制對底層表中敏感資料的訪問。您可以建立一個只顯示必要資料的檢視,並授予使用者訪問該檢視的許可權,而不是讓他們直接訪問資料庫表。
  • 一致的介面:即使底層表結構發生變化,檢視也能為客戶端應用程式提供一致的資料介面。

摘要 #

  • 檢視是儲存在資料庫中的一個命名查詢。
  • 使用 CREATE VIEW 語句建立新檢視。
  • 使用 CREATE OR REPLACE VIEW 語句建立或修改檢視。
  • 使用 DROP VIEW 語句刪除檢視。

測驗 #

資料庫 #

© .