View là gì?
Nói một cách đơn giản, VIEW là các bảng ảo. Có nghĩa là ảo, các bảng không lưu trữ bất kỳ dữ liệu nào của riêng chúng mà hiển thị dữ liệu được lưu trữ trong các bảng khác.
Nói cách khác, VIEW không gì khác ngoài CHỌN truy vấn.
Cú pháp VIEW
Bây giờ chúng ta hãy xem cú pháp cơ bản được sử dụng để tạo ra một khung nhìn trong MySQL.
CREATE VIEW `view_name` AS SELECT statement;
TRONG ĐÓ
- "CREATE VIEW `view_name`" nói với máy chủ MySQL để tạo một đối tượng xem trong cơ sở dữ liệu có tên` view_name`
- "AS SELECT statement" là các câu lệnh SQL được đóng gói trong các khung nhìn. Nó có thể là một câu lệnh CHỌN có thể chứa dữ liệu từ một bảng hoặc nhiều bảng.
Bây giờ chúng ta hãy tạo chế độ xem đầu tiên bằng cách sử dụng "myflixdb", chúng ta 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ử các yêu cầu ủy quyền nêu rõ rằng bộ phận tài khoản chỉ có thể nhìn thấy 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 một XEM -
CREATE VIEW `accounts_v_members` AS SELECT `membership_number`,`full_names`,`gender` FROM `members`;
Thực thi tập lệnh trên trong bàn làm việc của MySQL đối với myflixdb và mở rộng nút xem trong trình khám phá cơ sở dữ liệu cho chúng ta các kết quả sau.
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ây giờ chúng ta hãy thực thi một câu lệnh CHỌN chọn tất cả các trường từ chế độ xem.
SELECT * FROM `accounts_v_members`;
Việc thực thi đoạn script trên trong bàn làm việc của MySQL đối với myflixdb cho chúng ta các kết quả sau được hiển thị bên dưới.
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 bộ phận tài khoản đã được trả lại. Các chi tiết khác được tìm thấy trong bảng thành viên đã bị ẩn.
Nếu chúng ta muốn xem các câu lệnh SQL tạo nên một khung nhìn cụ thể, chúng ta có thể sử dụng tập lệnh được hiển thị bên dưới để làm điều đó.
SHOW CREATE VIEW `accounts_v_members`;
Thực thi đoạn mã trên cung cấp cho bạn tên khung nhìn và các câu lệnh SQL SELECT được sử dụng để tạo dạng xem.
JOIN và VIEW
Bây giờ chúng ta hãy xem xét một ví dụ khá phức tạp bao gồm nhiều bảng và sử dụng các phép nối.
Chúng tôi sẽ đóng gói JOIN được tạo để lấy thông tin từ ba (3) bảng là thành viên, phim và cho thuê phim. 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 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ừ một bảng có tên general_v_movie_rentals.
SELECT * FROM `general_v_movie_rentals`;
Việc thực thi đoạn script trên trong bàn làm việc của MySQL đối với myflixdb cho chúng ta các kết quả sau được hiển thị 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 tôi không phải viết truy vấn JOIN phức tạp để có được thông tin về các thành viên, phim và chi tiết cho thuê phim. Chúng tôi chỉ đơn giản sử dụng khung nhìn trong một 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 đỉnh myflixdb.
DROP VIEW
Lệnh DROP có thể được sử dụng để xóa chế độ VIEW khỏi cơ sở dữ liệu không còn cần thiết. Cú pháp cơ bản để XOÁ VIEW như sau:
DROP VIEW ` general_v_movie_rentals `;
Tại sao nên sử dụng View?
Bạn có thể muốn sử dụng View chủ yếu vì 3 lý do sau
- Cuối cùng, bạn sẽ sử dụng kiến thức SQL của mình, để tạo 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 VIEWS của 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 của mình, mã kế thừa của bạn sẽ thấy lược đồ gốc thông qua chế độ xem mà không phá vỡ ứng dụng.
- VIEW tăng khả năng sử dụng lại. Bạn sẽ không phải tạo các truy vấn phức tạp liên quan đến việc tham gia 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 sử dụng VIEWS. Mã cô đọng như vậy sẽ dễ tích hợp hơn trong ứng dụng của bạn. Điều này sẽ loại bỏ các cơ hội lỗi chính tả và mã của bạn sẽ dễ đọc hơn.
- VIEW 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óm lược
- 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.
- Lượt xem cải thiện bảo mật cơ sở dữ liệu bằng cách chỉ hiển thị dữ liệu dự định cho người dùng được ủy quyền. Họ che giấu dữ liệu nhạy cảm.
- Lượt xem làm cho cuộc sống dễ dàng vì bạn không phải viết lại các truy vấn phức tạp.
- Có thể sử dụng CHERTN, CẬP NHẬT và XÓA trên XEM. Các hoạt động này sẽ thay đổi các bảng cơ bản của XEM. Cân nhắc duy nhất là VIEW nên chứa tất cả các cột KHÔNG 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 XEM để cập nhật.
Đăng nhận xét