Post

SQL Cơ bản - Create Table as

Nếu bạn đang cảm thấy cuộc sống của mình thiếu đi một chút gì đó "phép thuật" trong thế giới SQL, thì bạn đã đến đúng chỗ rồi đấy! Hôm nay, mình sẽ dẫn bạn bước vào thế giới của CREATE TABLE AS, một cú pháp quyền lực đến mức nó có thể giúp bạn "tạo mới" từ những gì đã có. Chúng ta sẽ tìm hiểu cách sử dụng cú pháp này, khám phá những trường hợp hữu ích trong thực tế và đi qua một ví dụ cụ thể (để đời).

Bắt đầu thôi nào!

1. CREATE TABLE AS là gì?

Câu lệnh CREATE TABLE AS trong SQL là cách tuyệt vời để tạo ra một bảng mới, dựa trên kết quả của một truy vấn SELECT. Nói đơn giản, đây là phiên bản "hô biến" của SQL: bạn lấy dữ liệu từ một bảng hoặc nhiều bảng, và ngay lập tức tạo ra bảng mới chứa dữ liệu đó.

Nghe đã thấy "pro" đúng không? Nhưng đừng lo, mình sẽ giải thích chi tiết hơn ngay đây.

Cú pháp cơ bản của CREATE TABLE AS:

1
2
3
4
CREATE TABLE new_table_name AS
SELECT column1, column2, ...
FROM existing_table
WHERE conditions;

Trong đó:

  • new_table_name: Tên của bảng mới bạn muốn tạo.
  • SELECT column1, column2, ...: Lệnh chọn cột dữ liệu từ bảng cũ.
  • FROM existing_table: Từ bảng cũ mà bạn muốn lấy dữ liệu.
  • WHERE conditions: Điều kiện (tuỳ chọn) để lọc dữ liệu lấy từ bảng cũ.

2. Tại sao phải dùng CREATE TABLE AS?

Được rồi, nếu bạn vẫn đang tự hỏi: “Tại sao mình phải dùng nó? Cái này có gì khác với CREATE TABLE thông thường?”, thì đây là một số tình huống mà CREATE TABLE AS thực sự tỏa sáng:

  1. Sao chép bảng một cách dễ dàng: Bạn có một bảng cũ, bạn muốn sao chép nó mà không cần phải viết từng dòng code tạo bảng? Bùm! CREATE TABLE AS chính là câu lệnh cứu tinh.

  2. Tạo bảng tạm thời để làm báo cáo: Khi bạn cần trích xuất dữ liệu từ nhiều bảng và xử lý chúng tạm thời. Thay vì tạo ra bảng tạm, rồi sau đó insert dữ liệu vào đó, bạn có thể làm tất cả chỉ với một cú pháp đơn giản.

  3. Tăng tốc độ làm việc: Trong trường hợp bạn phải làm việc với một khối lượng dữ liệu lớn, việc xử lý dữ liệu tạm thời với bảng mới giúp giảm tải cho các truy vấn phức tạp.

  4. Backup dữ liệu cũ: Bạn muốn làm việc với dữ liệu hiện tại nhưng không muốn thay đổi bảng gốc? Hãy tạo một bản sao và "táy máy" trên đó thoải mái.

Hãy xem qua một ví dụ cụ thể, nơi chúng ta sẽ áp dụng câu lệnh CREATE TABLE AS để biến lý thuyết thành thực tế.

Giả sử chúng ta đang quản lý một cửa hàng online bán rất nhiều loại sản phẩm. Cửa hàng có một bảng chứa tất cả các sản phẩm và thông tin về doanh thu của chúng. Bây giờ, chúng ta muốn tạo ra một bảng mới chỉ chứa các sản phẩm có doanh thu cao hơn 1,000,000 VND. Để làm điều này, ta sẽ sử dụng CREATE TABLE AS.

Bảng gốc products:

product_id product_name category price revenue
1 Laptop A Electronics 15,000,000 1,200,000
2 Smartphone B Electronics 9,000,000 800,000
3 Coffee Maker C Home Goods 1,500,000 2,000,000
4 Vacuum Cleaner D Home Goods 3,000,000 500,000
5 Headphone E Electronics 2,000,000 1,200,000

Tạo một bảng mới tên là high_revenue_products, chứa các sản phẩm có doanh thu trên 1,000,000 VND.

Câu lệnh SQL:

1
2
3
4
CREATE TABLE high_revenue_products AS
SELECT product_id, product_name, category, revenue
FROM products
WHERE revenue > 1000000;

Giải thích:

  • CREATE TABLE high_revenue_products: Chúng ta đang tạo một bảng mới với tên là high_revenue_products.
  • SELECT product_id, product_name, category, revenue: Chọn các cột mà chúng ta muốn lấy từ bảng cũ (products).
  • FROM products: Lấy dữ liệu từ bảng products.
  • WHERE revenue > 1000000: Điều kiện lọc: chỉ lấy những sản phẩm có doanh thu cao hơn 1,000,000 VND.

Bảng high_revenue_products mới sẽ có dữ liệu như sau:

product_id product_name category revenue
1 Laptop A Electronics 1,200,000
3 Coffee Maker C Home Goods 2,000,000
5 Headphone E Electronics 1,200,000

3. Một số lưu ý khi sử dụng CREATE TABLE AS

Chỉ tạo bảng: Câu lệnh CREATE TABLE AS chỉ tạo ra một bản sao của cấu trúc dữ liệu và dữ liệu từ truy vấn SELECT. Nó không sao chép các ràng buộc (constraints), khoá ngoại (foreign keys), hay các chỉ mục (indexes) từ bảng gốc.

Tạo bảng trống: Bạn có thể tạo ra bảng trống (chỉ có cấu trúc) bằng cách sử dụng WHERE 1 = 0. Ví dụ:

1
2
3
CREATE TABLE empty_products AS
SELECT * FROM products
WHERE 1=0;

Kết quả sẽ tạo ra một bảng có cùng cấu trúc như bảng products, nhưng không có dữ liệu.

Hiệu suất: Tạo bảng mới từ câu lệnh SELECT có thể tiêu tốn tài nguyên hệ thống, đặc biệt khi bạn đang làm việc với khối lượng dữ liệu lớn. Nên chắc chắn rằng bạn đã tối ưu hoá các truy vấn SELECT trước khi tạo bảng.

4. Ứng dụng CREATE TABLE AS

Ngoài việc giúp sao chép dữ liệu, CREATE TABLE AS còn là công cụ mạnh mẽ trong những kịch bản phân tích dữ liệu lớn. Ví dụ, bạn có thể:

  • Tạo bảng báo cáo: Thu thập dữ liệu từ nhiều bảng, tổng hợp và lưu lại kết quả cho báo cáo phân tích. Điều này rất hữu ích khi làm việc với hệ thống BI (Business Intelligence).

  • Sao lưu dữ liệu tạm thời: Khi bạn cần làm việc với một tập dữ liệu cụ thể mà không muốn thay đổi bảng gốc. Hãy sao lưu nó bằng CREATE TABLE AS và làm việc thoải mái.

  • Tăng tốc truy vấn phức tạp: Đôi khi bạn có những truy vấn phức tạp, chạy rất lâu. Thay vì chạy chúng trực tiếp mỗi lần, bạn có thể lưu kết quả vào bảng mới và chỉ cần truy vấn từ bảng đó cho những lần tiếp theo.

Kết luận

Vậy là chúng ta đã cùng nhau khám phá hết sức mạnh của câu lệnh CREATE TABLE AS. Từ việc sao chép bảng, tạo báo cáo, đến backup dữ liệu – tất cả đều có thể làm được chỉ với một câu lệnh đơn giản.

Hãy nhớ rằng, với SQL, đôi khi không cần phải “phức tạp hoá” vấn đề. Chỉ cần biết sử dụng những câu lệnh thông minh, bạn sẽ tiết kiệm được rất nhiều thời gian và công sức. Và CREATE TABLE AS chính là một trong những vũ khí đó!

Hãy thử áp dụng nó vào công việc hàng ngày và bạn sẽ thấy sự khác biệt!

Bài viết mang tính chất “ghi chú, lưu trữ, chia sẻ và phi lợi nhuận”.
Nếu bạn thấy hữu ích, đừng quên chia sẻ với bạn bè và đồng nghiệp của mình nhé!

Happy coding! 😎 👍🏻 🚀 🔥

This post is licensed under CC BY 4.0 by the author.