PostgreSQL - 觀察:初學者的友好指南

您好,未來的數據庫大師!今天,我們將踏上一段令人興奮的旅程,進入 PostgreSQL 視圖的世界。別擔心如果你是編程新手——我將成為你的友好導遊,我們會一步步前進。在本教程結束時,你將能夠像專業人士一樣創建和管理視圖!

PostgreSQL - Views

視圖是什麼?

在我們深入細節之前,讓我們了解一下視圖是什麼。想像你有一扇神奇的窗戶,它展示了你從浩瀚數據景觀中想要的信息。在數據庫術語中,視圖就是這個意思!

視圖是一個基於 SQL 語句結果的虛擬表。它本身不存儲數據,但提供了一種特定的方式來查看基表中的數據。把它當作一個可以反覆使用的保存查詢。

為什麼使用視圖?

你可能會想,"我們可以直接寫查詢,何必麻煩使用視圖呢?" 好奇的朋友,視圖提供了以下幾個優勢:

  1. 簡單性:它們可以把複雜的查詢簡化為一個單一的、易於使用的虛擬表。
  2. 安全性:視圖可以限制對特定列或數據行的訪問。
  3. 一貫性:它們保證每個人都能以同樣的方式查看數據。
  4. 性能:在某些情況下,視圖可以改善查詢性能。

現在我們知道了視圖是什麼以及它們的用途,讓我們挽起袖子開始創建它們吧!

創建視圖

基本視圖創建

要創建視圖,我們使用 CREATE VIEW 語句。這裡是基本語法:

CREATE VIEW 視圖名稱 AS
SELECT 列1, 列2, ...
FROM 表名
WHERE 條件;

假設我們有一個名為 employees 的表,其中包含 idnamedepartmentsalary 列。我們想創建一個只顯示員工姓名和部門的視圖。我們這樣做:

CREATE VIEW employee_details AS
SELECT name, department
FROM employees;

現在,每當我們只想看見姓名和部門時,我們可以簡單地查詢我們的視圖:

SELECT * FROM employee_details;

簡單吧?這個視圖將始終顯示 employees 表的當前數據,所以它是最新的。

帶條件的視圖

當我們添加條件時,視圖變得更加強大。讓我們創建一個只顯示 IT 部門員工的視圖:

CREATE VIEW it_employees AS
SELECT name, salary
FROM employees
WHERE department = 'IT';

現在,查詢 it_employees 將始終給我們當前的 IT 部門員工和他們的薪水列表。

帶計算字段的視圖

視圖也可以包含計算字段。假設我們想創建一個顯示每個員工姓名和他們年薪的視圖(假設表中的薪水是每月的):

CREATE VIEW annual_salaries AS
SELECT name, salary * 12 AS annual_salary
FROM employees;

這個視圖會在我們查詢它時動態計算年薪。

基於多個表的視圖

視圖可以像普通查詢一樣結合多個表中的數據。讓我們說我們有另一個名為 departments 的表,其中包含 department_iddepartment_name。我們可以創建一個將這個表與我們的 employees 表連接的視圖:

CREATE VIEW employee_department_details AS
SELECT e.name, e.salary, d.department_name
FROM employees e
JOIN departments d ON e.department = d.department_id;

這個視圖給我們提供了員工信息以及他們完整的部門名稱的整潔摘要。

修改視圖

有時,我們可能需要更改現有的視圖。PostgreSQL 允許我們使用 CREATE OR REPLACE VIEW 語句來做到這一點:

CREATE OR REPLACE VIEW employee_details AS
SELECT name, department, salary
FROM employees;

這將更新我們的 employee_details 視圖以包括薪水列。

刪除視圖

當我們不再需要視圖時,我們可以使用 DROP VIEW 語句來移除它。這裡是語法:

DROP VIEW 視圖名稱;

例如,要移除我們的 annual_salaries 視圖:

DROP VIEW annual_salaries;

使用這個命令要小心——它會永久移除視圖!

視圖方法

PostgreSQL 提供了多種處理視圖的方法。下面是一個總結關鍵方法的表格:

方法 描述
CREATE VIEW 創建一個新視圖
CREATE OR REPLACE VIEW 創建一個新視圖或替換現有的視圖
ALTER VIEW 修改視圖的定義
DROP VIEW 移除一個視圖
RENAME VIEW 更改視圖的名稱
CREATE MATERIALIZED VIEW 創建一個物化視圖(存儲結果集)
REFRESH MATERIALIZED VIEW 更新物化視圖的存儲結果集

結論

恭喜你!你剛剛踏入了 PostgreSQL 視圖的奇妙世界。我們已經介紹了創建簡單視圖、帶條件的視圖、計算字段以及甚至結合多個表的視圖。我們還學習了如何根據需要修改和刪除視圖。

記住,視圖就像你個人的數據透鏡——它們幫助你專注於你需要的信息。隨著你繼續 PostgreSQL 的旅程,你會發現視圖成為你數據庫工具箱中不可或缺的工具。

繼續練習,保持好奇心,在你知道之前,你將會在睡夢中創建視圖(不過我建議不要真的那樣做——你的鍵盤可能不會喜歡那樣)!

祝你查詢愉快,未來的數據庫大師!

Credits: Image by storyset