Thứ Tư, 26 tháng 7, 2023

Lệnh Create View trong MySQL

Trong bài viết này chúng ta sử dụng lệnh Create View trong MySQL để tạo mới một View trong Database, hoặc thay thế nội dung của view có sẵn.

Về cơ bản lệnh này sẽ phải kết hợp với câu lệnh Select để lấy kết quả từ nhiều table đổ vào trong View. Mỗi khi có thay đổi ở các bảng đó thì data trong View cũng sẽ thay đổi theo.

Mục lục

  • 1. Giới thiệu lệnh Create View trong MySQL
  • 2. Cách sử dụng lệnh Create View trong MySQL
    • Ví dụ 1: Tạo một view đơn giản
    • Ví dụ 2: Tạo mới một View từ một View khác
    • Ví dụ 3: Tạo View với lệnh Join
    • Ví dụ 4: Tạo View với truy vấn con

1. Giới thiệu lệnh Create View trong MySQL

Lệnh Create View sẽ tạo ra một View mới trong Database, sau đây là cú pháp:

1
2
3
CREATE [OR REPLACE] VIEW [db_name.]view_name [(column_list)]
AS
  select-statement;

Ý nghĩa của các từ khóa như sau:

Bài viết này được đăng tại tranvanbinh.vn

Từ khóa Create View cho thấy bạn đang muốn tạo một View mới có tên là view_name, năm trong database db_name.

Nếu bạn dùng thêm từ khóa Or Replace thay thì nó sẽ thay thế View có tên là view_name bằng nội dung SQL mới. Nếu view_name chưa tồn tại thì nó sẽ tạo view mới.

Column_list là danh sách các cột sẽ được đặt tên lại. Nếu bạn không truyền vào thì nó sẽ lấy tên cột mặc định của các table.

Select-statement chính là câu lệnh Select trả về danh sách dữ liệu sẽ được lưu vào trong View. Bạn có thể sử dụng kết hợp các lệnh Join, Order By, Limit, ... miễn là nó trả về kết quả là danh sách dữ liệu.

Theo mặc định thì lệnh Create View sẽ tạo mới một view nằm trong DB hiện tại đang kết nối. Nhưng nếu bạn muốn chỉ định rõ DB nào thì sẽ đặt nó ở vị trí của db_name.

2. Cách sử dụng lệnh Create View trong MySQL

Hãy làm một vài ví dụ để hiểu rõ hơn lệnh này.

Ví dụ 1: Tạo một view đơn giản

Hãy xem cấu trúc của table orderdetails như trong hình dưới đây.

orderdetails png

Bây giờ mình sẽ viết một View lưu trữ doanh thu của mỗi đơn hàng, bằng cách sử dụng lệnh Select kết hợp Group By.

1
2
3
4
5
6
7
8
CREATE VIEW salePerOrder AS
    SELECT
        orderNumber,
        SUM(quantityOrdered * priceEach) total
    FROM
        orderDetails
    GROUP by orderNumber
    ORDER BY total DESC;

Để kiểm tra View đã xuất hiện chưa thì hãy sử dụng lệnh sau:

1
SHOW TABLES;

Lệnh này sẽ hiển thị danh sách tất cả các table đang có trong DB hiện tai. Vì View cũng là table nên cũng sẽ xuất hiện trong đó.

show table view jpg

Ngoài ra, để xem chi tiết đâu là table và đâu là view thì bạn sử dụng lệnh sau:

1
SHOW FULL TABLES;

Kết quả lệnh này như sau:

show full table command jpg

Bây giờ nếu bạn muốn xem tổng doanh thu của mỗi đơn hàng thì chỉ cần truy vấn trong View SalePerOrder mà đã tạo ở trên.

1
SELECT * FROM salePerOrder;

Kết quả dạng như sau:

mysql create view simple view example png

Ví dụ 2: Tạo mới một View từ một View khác

Nghe có vẻ kì lạ phải không? Thực tế bạn có thể tạo mới một view với dữ liệu được lấy từ một View khác.

Giả sử mình muốn lấy danh sách những đơn hàng có giá trị hơn 6000, lúc này chỉ cần lấy trong view salesPerOrder mà ta đã tạo ở trên là được.

1
2
3
4
5
6
7
8
CREATE VIEW bigSalesOrder AS
    SELECT
        orderNumber,
        ROUND(total,2) as total
    FROM
        salePerOrder
    WHERE
        total > 60000;

Bây giờ dữ liệu trong view bigSalesOrder chính là những đơn hàng có doanh thu hơn 6000. Hãy thử chạy một câu truy vấn xem sao.

1
2
3
4
5
SELECT
    orderNumber,
    total
FROM
    bigSalesOrder;

create a view based on another view jpg

Ví dụ 3: Tạo View với lệnh Join

Hãy xem ví dụ dưới đây, mình tạo ra một view có tên là customerOrders để lưu trữ thông tin khách hàng và tổng số tiền mà khách hàng đã mua. Mình đã JOIN 3 bảng gồm: orderDetailsorders và customers

1
2
3
4
5
6
7
8
9
10
CREATE OR REPLACE VIEW customerOrders AS
SELECT
    orderNumber,
    customerName,
    SUM(quantityOrdered * priceEach) total
FROM
    orderDetails
INNER JOIN orders o USING (orderNumber)
INNER JOIN customers USING (customerNumber)
GROUP BY orderNumber;

Bây giờ sử dụng lệnh Select trong view customerOrders là được.

1
2
SELECT * FROM customerOrders
ORDER BY total DESC;

Kết quả tham khảo:

mysql create view with join example png

Ví dụ 4: Tạo View với truy vấn con

Trong ví dụ dưới đây mình có sử dụng cấu trúc truy vấn con để tạo ra View.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
CREATE VIEW aboveAvgProducts AS
    SELECT
        productCode,
        productName,
        buyPrice
    FROM
        products
    WHERE
        buyPrice > (
            SELECT
                AVG(buyPrice)
            FROM
                products)
    ORDER BY buyPrice DESC;

* Lời kết: Như vậy bản chất của lệnh Select trong View là không quan trọng, bởi View chỉ quan tâm kết quả mà lệnh Select trả về, còn việc nó kết hợp với bao nhiêu lệnh khác đi nữa thì nó không quan tâm.

Như vậy là mình đã hướng dẫn xong cách sử dụng lệnh Create View trong MySQL, đây là lệnh dùng để tạo ra một View mới hoặc thay thế nội dung cho một view có sẵn.

=============================
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
Lệnh Create View trong MySQL, oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master