PostgreSQL Tạo chế độ xem với ví dụ

⚡ Tóm tắt thông minh

PostgreSQL Views là các bảng giả được xây dựng từ một truy vấn SELECT đã lưu trữ, cho phép bạn gói gọn các truy vấn phức tạp hoặc thường xuyên sử dụng đằng sau một tên duy nhất mà bạn có thể đọc, cập nhật hoặc xóa giống như một bảng thông thường.

  • 🗂️ Bảng giả: View lưu trữ truy vấn chứ không phải dữ liệu, nhưng bạn lại sử dụng lệnh SELECT để truy vấn nó giống như một bảng.
  • 🛠️ Tạo nên: Lệnh CREATE VIEW đặt tên cho một truy vấn SELECT, ngay cả khi truy vấn này áp dụng cho nhiều bảng cơ sở khác nhau, giúp dễ dàng tái sử dụng.
  • ♻️ Thay thế: Lệnh CREATE OR REPLACE VIEW thay đổi chế độ xem mà không cần thả xuống.ping nó.
  • 🗑️ Rơi vãi: Lệnh DROP VIEW xóa một view, và lệnh IF EXISTS tránh lỗi.
  • 🤖 Hỗ trợ AI: Các trợ lý AI tạo ra các định nghĩa khung nhìn và đề xuất các truy vấn cần được bao bọc.

PostgreSQL Tạo chế độ xem

Là gì PostgreSQL Lượt xem?

In PostgreSQL, một khung nhìn là một bảng giả. Điều này có nghĩa là một khung nhìn không phải là một bảng thực. Tuy nhiên, chúng ta có thể CHỌN nó như một bảng thông thường. Một khung nhìn có thể có tất cả hoặc một số cột trong bảng. Một khung nhìn cũng có thể là sự thể hiện của nhiều bảng.

Các bảng này được gọi là bảng cơ sở. Khi tạo một view, bạn chỉ cần tạo một truy vấn rồi đặt tên cho nó, biến nó thành một công cụ hữu ích để bao bọc.ping Các truy vấn phức tạp và thường dùng.

Tạo PostgreSQL Cảnh Quan

Để tạo ra một PostgreSQL view, chúng ta sử dụng câu lệnh CREATE VIEW. Đây là cú pháp cho câu lệnh này:

CREATE [OR REPLACE] VIEW view-name AS
  SELECT column(s)
  FROM table(s)
  [WHERE condition(s)];

Tham số OR REPLACE sẽ thay thế chế độ xem nếu nó đã tồn tại. Nếu bị bỏ qua và chế độ xem đã tồn tại thì lỗi sẽ được trả về.

Tham số view-name là tên của view mà bạn cần tạo.

Điều kiện WHERE là tùy chọn và chúng phải được thỏa mãn thì bất kỳ bản ghi nào cũng có thể được thêm vào chế độ xem.

Hãy xem xét bảng Giá được đưa ra dưới đây:

Giá:

Tạo PostgreSQL Cảnh Quan

Chúng ta hãy tạo một khung nhìn từ bảng trên:

CREATE VIEW Price_View AS
  SELECT id, price
  FROM Price
  WHERE price > 200;

Lệnh trên sẽ tạo một khung nhìn dựa trên Câu lệnh SELECT. Chỉ những bản ghi có giá lớn hơn 200 mới được thêm vào chế độ xem. Chế độ xem đã được đặt tên là Price_View. Chúng ta hãy truy vấn nó để xem nội dung của nó:

SELECT *
FROM Price_View;

Điều này trả về như sau:

Tạo PostgreSQL Cảnh Quan

Mặc dù bảng cơ sở có 4 bản ghi nhưng chỉ có 2 bản ghi được thêm vào dạng xem.

Ở đây, chúng ta chỉ có thể thêm một cột vào khung nhìn. Hãy tạo một khung nhìn chỉ bao gồm một cột của bảng Giá:

CREATE VIEW Price_View2 AS
  SELECT price
  FROM Price
  WHERE price > 200;

Chế độ xem đã được đặt tên Price_View2 và chỉ bao gồm cột giá của bảng Giá. Chúng ta hãy truy vấn khung nhìn để xem nội dung của nó:

SELECT *
FROM Price_View2;

Điều này trả về như sau:

Tạo PostgreSQL Cảnh Quan

Thay đổi PostgreSQL Cảnh Quan

Định nghĩa của một khung nhìn có thể được thay đổi mà không cần phải loại bỏ nó. Điều này được thực hiện bằng cách sử dụng câu lệnh CREATE OR REPLACE VIEW.

Hãy để chúng tôi chứng minh điều này bằng cách cập nhật chế độ xem có tên Price_View2.

Giá_Xem2:

Thay đổi PostgreSQL Cảnh Quan

Bảng Sách như sau:

Sách:

Thay đổi PostgreSQL Cảnh Quan

Bảng giá như sau:

Giá:

Thay đổi PostgreSQL Cảnh Quan

Truy vấn sau đây sẽ giúp chúng ta cập nhật chế độ xem Price_View2:

CREATE or REPLACE VIEW Price_View2 AS
  SELECT price, name
  FROM Book
  INNER JOIN Price
  ON Book.id = Price.id
  WHERE price > 200;

Bây giờ chúng ta truy vấn view để xem nội dung của nó:

Thay đổi PostgreSQL Cảnh Quan

Chế độ xem đã được thay đổi và bây giờ chúng tôi có hai cột từ hai bảng khác nhau. Điều này đã đạt được bằng cách sử dụng câu lệnh JOIN.

xóa PostgreSQL Cảnh Quan

Bất cứ lúc nào bạn cần xóa một PostgreSQL Để xem, bạn có thể sử dụng câu lệnh DROP VIEW. Đây là cú pháp của câu lệnh:

DROP VIEW [IF EXISTS] view-name;

Tham số view-name là tên của view sẽ bị xóa.

Trong cú pháp này, IF EXISTS là tùy chọn. Nếu bạn không chỉ định nó và cố gắng xóa một view không tồn tại, bạn sẽ nhận được lỗi.

Ví dụ, để xóa chế độ xem có tên Price_View2, chúng ta có thể chạy câu lệnh sau:

DROP VIEW Price_View2;

Chế độ xem sẽ bị xóa.

Sử dụng pgAdmin

Bây giờ chúng ta hãy xem cách thực hiện các thao tác này bằng pgAdmin.

Tạo PostgreSQL Cảnh Quan

Để thực hiện điều tương tự thông qua pgAdmin, hãy làm điều này:

Bước 1) Đăng nhập vào tài khoản pgAdmin của bạn.

Bước 2)

  • Từ thanh điều hướng ở bên trái-Nhấp vào Cơ sở dữ liệu.
  • Nhấp vào Bản trình diễn.

Tạo PostgreSQL Lượt xem bằng pgAdmin

Bước 3) Nhập truy vấn vào trình soạn thảo truy vấn:

CREATE VIEW Price_View AS
  SELECT id, price
  FROM Price
  WHERE price > 200;

Bước 4) Nhấp vào nút Thực hiện.

Tạo PostgreSQL Lượt xem bằng pgAdmin

Bước 5) Để xem nội dung của khung nhìn, hãy thực hiện các bước sau:

  • Nhập lệnh sau vào trình soạn thảo truy vấn:
SELECT *
FROM Price_View;
  • Nhấp vào nút Thực hiện.

Tạo PostgreSQL Lượt xem bằng pgAdmin

Kết quả trả về sẽ như sau:

Tạo PostgreSQL Lượt xem bằng pgAdmin

Để tạo chế độ xem Price_View2, hãy thực hiện như sau:

Bước 1) Nhập truy vấn sau vào trình soạn thảo truy vấn:

CREATE VIEW Price_View2 AS
  SELECT price
  FROM Price
  WHERE price > 200;

Bước 2) Nhấp vào nút Thực hiện.

Tạo PostgreSQL Lượt xem bằng pgAdmin

Bước 3) Để xem nội dung của chế độ xem, hãy làm như sau:

  • Nhập truy vấn sau vào trình soạn thảo truy vấn:
SELECT *
FROM Price_View2;
  • Nhấp vào nút Thực hiện.

Tạo PostgreSQL Lượt xem bằng pgAdmin

Kết quả trả về sẽ như sau:

Tạo PostgreSQL Lượt xem bằng pgAdmin

Thay đổi PostgreSQL Cảnh Quan

Để thực hiện điều tương tự thông qua pgAdmin, hãy làm điều này:

Bước 1) Đăng nhập vào tài khoản pgAdmin của bạn.

Bước 2)

  • Từ thanh điều hướng ở bên trái-Nhấp vào Cơ sở dữ liệu.
  • Nhấp vào Bản trình diễn.

Thay đổi PostgreSQL Lượt xem bằng pgAdmin

Bước 3) Nhập truy vấn vào trình soạn thảo truy vấn:

CREATE or REPLACE VIEW Price_View2 AS
  SELECT price, name
  FROM Book
  INNER JOIN Price
  ON Book.id = Price.id
  WHERE price > 200;

Bước 4) Nhấp vào nút Thực hiện.

Thay đổi PostgreSQL Lượt xem bằng pgAdmin

Bước 5) Nhập truy vấn sau vào trình soạn thảo truy vấn:

SELECT *
FROM Price_View2;

Kết quả trả về sẽ như sau:

Thay đổi PostgreSQL Lượt xem bằng pgAdmin

xóa PostgreSQL Cảnh Quan

Để thực hiện điều tương tự thông qua pgAdmin, hãy làm điều này:

Bước 1) Đăng nhập vào tài khoản pgAdmin của bạn.

Bước 2)

  • Từ thanh điều hướng ở bên trái-Nhấp vào Cơ sở dữ liệu.
  • Nhấp vào Bản trình diễn.

xóa PostgreSQL Lượt xem bằng pgAdmin

Bước 3) Nhập truy vấn vào trình soạn thảo truy vấn:

DROP VIEW Price_View2;

Bước 4) Nhấp vào nút Thực hiện.

xóa PostgreSQL Lượt xem bằng pgAdmin

Chế độ xem sẽ bị xóa.

Tải xuống Cơ sở dữ liệu được sử dụng trong Hướng dẫn này

Câu Hỏi Thường Gặp

Bảng lưu trữ dữ liệu vật lý trên đĩa. Chế độ xem chỉ lưu trữ một truy vấn SELECT, vì vậy khi truy vấn chế độ xem, truy vấn đó sẽ được chạy lại và trả về dữ liệu hiện tại từ các bảng cơ sở.

Chế độ xem vật lý (materialized view) lưu trữ kết quả truy vấn trên đĩa. Nó đọc dữ liệu nhanh hơn chế độ xem thông thường nhưng cần lệnh REFRESH MATERIALIZED VIEW để hiển thị dữ liệu mới.

Chế độ xem tiêu chuẩn chạy truy vấn mỗi lần, hiển thị dữ liệu trực tiếp. Chế độ xem vật chất lưu trữ kết quả trên đĩa để tăng tốc độ nhưng có thể bị lỗi thời cho đến khi được làm mới.

Đôi khi. Một bảng đơn giản không có tổng hợp dữ liệu sẽ tự động được cập nhật, vì vậy các thao tác INSERT, UPDATE và DELETE hoạt động trực tiếp. Các bảng phức tạp hơn cần sử dụng trigger INSTEAD OF.

Truy vấn danh mục: SELECT table_name FROM information_schema.views WHERE table_schema = 'public'. Trong pgAdmin, bạn có thể mở rộng nút Views bên dưới một schema.

Các trợ lý AI chuyển yêu cầu bằng ngôn ngữ thông thường thành câu lệnh CREATE VIEW, đặt tên cho view và thêm các mệnh đề WHERE và JOIN phù hợp, giúp tăng tốc các truy vấn bạn thường xuyên sử dụng lại.

Đúng vậy. Dán một câu lệnh SELECT dài và trợ lý AI sẽ bao bọc nó trong câu lệnh CREATE OR REPLACE VIEW, đề xuất tên và đánh dấu các cột cần bí danh để tránh trùng tên.

Chế độ xem thông thường không tăng tốc truy vấn vì câu lệnh SELECT của nó được thực thi mỗi lần. Để đọc dữ liệu lặp lại nhanh hơn, hãy sử dụng chế độ xem vật lý (materialized view), chế độ xem này lưu trữ kết quả trên đĩa cho đến khi được làm mới.

Tóm tắt bài viết này với: