VIEW
STORED PROCEDURE
INDEX
FULL TEXT SEARCH
TRIGGER
TIPS
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
Dự án mới của mình là gamehow.net, mời anh em ghé thăm và góp ý ạ.

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.

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

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:

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

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

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.

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:

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:

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.

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.

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.

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: orderDetails, orderscustomers

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.

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.

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.

Cùng chuyên mục:

Hàm ENCRYPT trong MySQL

Hàm ENCRYPT trong MySQL

Cách sử dụng ENCRYPT trong MySQL

Hàm MD5 trong MySQL

Hàm MD5 trong MySQL

Cách sử dụng MD5 trong MySQL

Hàm OLD_PASSWORD trong MySQL

Hàm OLD_PASSWORD trong MySQL

Cách sử dụng OLD_PASSWORD trong MySQL

Hàm PASSWORD trong MySQL

Hàm PASSWORD trong MySQL

Cách sử dụng PASSWORD trong MySQL

Hàm ASCII trong MySQL

Hàm ASCII trong MySQL

Cách sử dụng ASCII trong MySQL

Hàm CHAR_LENGTH trong MySQL

Hàm CHAR_LENGTH trong MySQL

Cách sử dụng CHAR_LENGTH trong MySQL

Hàm CHARACTER_LENGTH trong MySQL

Hàm CHARACTER_LENGTH trong MySQL

Cách sử dụng CHARACTER_LENGTH trong MySQL

Hàm CONCAT trong MySQL

Hàm CONCAT trong MySQL

Cách sử dụng CONCAT trong MySQL

Hàm CONCAT_WS trong MySQL

Hàm CONCAT_WS trong MySQL

Cách sử dụng CONCAT_WS trong MySQL

Hàm FIELD trong MySQL

Hàm FIELD trong MySQL

Cách sử dụng FIELD trong MySQL

Hàm FIND_IN_SET trong MySQL

Hàm FIND_IN_SET trong MySQL

Cách sử dụng FIND_IN_SET trong MySQL

Hàm FORMAT trong MySQL

Hàm FORMAT trong MySQL

Cách sử dụng FORMAT trong MySQL

Hàm INSERT trong MySQL

Hàm INSERT trong MySQL

Cách sử dụng INSERT trong MySQL

Hàm INSTR trong MySQL

Hàm INSTR trong MySQL

Cách sử dụng INSTR trong MySQL

Hàm LCASE trong MySQL

Hàm LCASE trong MySQL

Cách sử dụng LCASE trong MySQL

Hàm LEFT trong MySQL

Hàm LEFT trong MySQL

Cách sử dụng LEFT trong MySQL

Hàm LENGTH trong MySQL

Hàm LENGTH trong MySQL

Cách sử dụng LENGTH trong MySQL

Hàm LOCATE trong MySQL

Hàm LOCATE trong MySQL

Cách sử dụng LOCATE trong MySQL

Hàm LOWER trong MySQL

Hàm LOWER trong MySQL

Cách sử dụng LOWER trong MySQL

Hàm LPAD trong MySQL

Hàm LPAD trong MySQL

Cách sử dụng LPAD trong MySQL

Top