MySQL Chế độ xem: Cách tạo chế độ xem từ bảng với ví dụ

Lượt xem trong MySQL?

LƯỢT XEM là các bảng ảo không lưu trữ bất kỳ dữ liệu nào của riêng mình mà hiển thị dữ liệu được lưu trữ trong các bảng khác. Nói cách khác, XEM không là gì ngoài Truy vấn SQL. Một khung nhìn có thể chứa tất cả hoặc một vài hàng của một bảng. MỘT MySQL view có thể hiển thị dữ liệu từ một bảng hoặc nhiều bảng.

MySQL Cú pháp lượt xem

Bây giờ chúng ta hãy xem cú pháp cơ bản được sử dụng để tạo chế độ xem trong MySQL.

CREATE VIEW `view_name` AS SELECT statement;

Ở ĐÂU

  • “TẠO CHẾ ĐỘ XEM `view_name`” nói MySQL máy chủ để tạo một đối tượng xem trong cơ sở dữ liệu có tên `view_name`
  • “NHƯ câu lệnh CHỌN” các câu lệnh SQL có được đóng gói trong MySQL Lượt xem. Nó có thể là câu lệnh SELECT có thể chứa dữ liệu từ một bảng hoặc nhiều bảng.

Cách tạo chế độ xem trong MySQL

Sau đây là quy trình từng bước để tạo chế độ xem trong MySQL:

Bước 1) Tạo chế độ xem đầu tiên của chúng tôi bằng cách sử dụng “myflixdb”

Bây giờ, hãy tạo chế độ xem đầu tiên bằng cách sử dụng “myflixdb”, chúng tôi sẽ tạo một chế độ xem đơn giản giới hạn các cột được nhìn thấy trong bảng thành viên.

Giả sử yêu cầu ủy quyền nêu rõ bộ phận tài khoản chỉ có thể xem số, tên và giới tính của thành viên từ bảng của thành viên. Để đạt được điều này, bạn có thể tạo XEM –

CREATE VIEW `accounts_v_members` AS SELECT `membership_number`,`full_names`,`gender` FROM `members`;

Bước 2) Mở rộng nút lượt xem

Thực thi đoạn script trên trong MySQL workbench so với myflixdb và mở rộng nút chế độ xem trong trình khám phá cơ sở dữ liệu mang lại cho chúng ta kết quả sau.

Tạo chế độ xem trong MySQL

Lưu ý đối tượng Account_v_members hiện hiển thị trong các đối tượng khung nhìn cơ sở dữ liệu.

Bước 3) Thực thi câu lệnh SELECT

Bây giờ chúng ta hãy thực hiện một Câu lệnh SELECT chọn tất cả các trường từ chế độ xem như hiển thị bên dưới MySQL tạo ví dụ xem.

SELECT * FROM `accounts_v_members`;

Bước 4) Thực thi một kịch bản

Thực thi đoạn script trên trong MySQL workbench so với myflixdb cung cấp cho chúng ta kết quả như hình dưới đây.

membership_number full_names gender
1 Janet Jones Female
2 Janet Smith Jones Female
3 Robert Phil Male
4 Gloria Williams Female
5 Leonard Hofstadter Male
6 Sheldon Cooper Male
7 Rajesh Koothrappali Male
8 Leslie Winkle Male
9 Howard Wolowitz Male

Chỉ các cột được ủy quyền cho phòng kế toán mới được trả về. Các chi tiết khác được tìm thấy trong bảng thành viên đã bị ẩn.

Nếu muốn xem các câu lệnh SQL tạo nên một chế độ xem cụ thể, chúng ta có thể sử dụng tập lệnh hiển thị bên dưới để thực hiện điều đó.

SHOW CREATE VIEW `accounts_v_members`;

Việc thực thi đoạn mã trên sẽ cung cấp cho bạn tên dạng xem và các câu lệnh SQL SELECT được sử dụng để tạo dạng xem.

Tham gia và xem trong MySQL

Bây giờ chúng ta hãy xem một ví dụ khá phức tạp liên quan đến nhiều bảng và cách sử dụng tham gia.

Chúng tôi sẽ đóng gói THAM GIA được tạo để lấy thông tin từ ba (3) bảng là thành viên, phim và phim cho thuê. Dưới đây là kịch bản giúp chúng tôi đạt được điều đó.

CREATE VIEW `general_v_movie_rentals` AS SELECT mb.`membership_number`,mb.`full_names`,mo.`title`,mr.`transaction_date`,mr.`return_date` FROM `movierentals` AS mr INNER JOIN `members` AS mb ON mr.`membership_number` = mb.`membership_number` INNER JOIN `movies` AS mo ON mr.`movie_id` = mo.`movie_id`;

Việc thực thi các tập lệnh trên sẽ tạo ra chế độ xem có tên General_v_movie_rentals trong myflixdb của chúng tôi

Bây giờ chúng ta hãy chọn tất cả các trường từ bảng có tên General_v_movie_rentals.

SELECT * FROM `general_v_movie_rentals`;

Thực thi đoạn script trên trong MySQL bàn làm việc so với myflixdb cung cấp cho chúng ta kết quả như bên dưới.

membership_number full_names title transaction_date return_date
1 Janet Jones Pirates of the Caribean 4 20-06-2012 28-06-2012
1 Janet Jones Forgetting Sarah Marshal 22-06-2012 25-06-2012
3 Robert Phil Forgetting Sarah Marshal 22-06-2012 25-06-2012
2 Janet Smith Jones Forgetting Sarah Marshal 21-06-2012 24-06-2012
3 Robert Phil X-Men 23-06-2012 28-06-2012

Lưu ý rằng chúng ta không cần phải viết truy vấn JOIN phức tạp để lấy thông tin về thành viên, phim và chi tiết cho thuê phim. Chúng ta chỉ cần sử dụng chế độ xem trong câu lệnh SELECT thông thường như bất kỳ bảng thông thường nào khác. Chế độ xem có thể được gọi từ bất kỳ đâu trong hệ thống ứng dụng chạy trên myflixdb.

Giảm lượt xem trong MySQL

Lệnh DROP có thể được sử dụng để xóa một khung nhìn khỏi cơ sở dữ liệu điều đó không còn cần thiết nữa. Cú pháp cơ bản để loại bỏ chế độ xem như sau.

DROP VIEW ` general_v_movie_rentals `;

Tại sao nên sử dụng lượt xem?

Bạn có thể muốn sử dụng chế độ xem chủ yếu vì 3 lý do sau

  • Cuối cùng, bạn sẽ sử dụng SQL kiến thức, để tạo ra các ứng dụng sẽ sử dụng cơ sở dữ liệu cho các yêu cầu dữ liệu. Bạn nên sử dụng XEM cấu trúc bảng gốc trong ứng dụng của mình thay vì sử dụng chính các bảng đó. Điều này đảm bảo rằng khi bạn cấu trúc lại DB, mã kế thừa của bạn sẽ thấy lược đồ gốc thông qua dạng xem mà không làm hỏng ứng dụng.
  • VIEWS tăng khả năng tái sử dụng. Bạn sẽ không phải tạo các truy vấn phức tạp liên quan đến các phép nối nhiều lần. Tất cả sự phức tạp được chuyển đổi thành một dòng truy vấn duy nhất bằng cách sử dụng VIEWS. Mã cô đọng như vậy sẽ dễ tích hợp hơn vào ứng dụng của bạn. Điều này sẽ loại bỏ khả năng xảy ra lỗi đánh máy và mã của bạn sẽ dễ đọc hơn.
  • VIEWS giúp bảo mật dữ liệu. Bạn có thể sử dụng chế độ xem để chỉ hiển thị thông tin được ủy quyền cho người dùng và ẩn dữ liệu nhạy cảm như số thẻ tín dụng.

Tổng kết

  • Lượt xem là các bảng ảo; chúng không chứa dữ liệu được trả về. Dữ liệu được lưu trữ trong các bảng được tham chiếu trong câu lệnh SELECT.
  • Chế độ xem cải thiện tính bảo mật của cơ sở dữ liệu bằng cách chỉ hiển thị dữ liệu mong muốn cho người dùng được ủy quyền. Chúng ẩn dữ liệu nhạy cảm.
  • Chế độ xem giúp cuộc sống dễ dàng hơn vì bạn không phải viết các truy vấn phức tạp nhiều lần.
  • Có thể sử dụng CHÈN, CẬP NHẬT và XÓA trên XEM. Các thao tác này sẽ thay đổi các bảng cơ bản của VIEW. Điều cần cân nhắc duy nhất là VIEW phải chứa tất cả các cột NOT NULL của các bảng mà nó tham chiếu. Tốt nhất, bạn không nên sử dụng VIEWS để cập nhật.