INSERT INTO SELECT - Insert dữ liệu từ câu lệnh select
Câu lệnh INSERT INTO SELECT được sử dụng để thêm nhiều bản ghi mới vào một bảng cơ sở dữ liệu cùng một lúc.
Cú pháp
Cú pháp INSERT INTO SELECT như sau:
SELECT "column3", "column4", ...
FROM "table2";
Note that this is the simplest form. The SELECT statement can easily contain WHERE, GROUP BY, and HAVING clauses, as well as table joins and aliases.
Xin lưu ý rằng số cột được chỉ định trong câu lệnh SELECT phải giống với số cột được chỉ định trong câu lệnh INSERT INTO.
Ví dụ
Chúng tôi sử dụng các bảng sau cho ví dụ của chúng tôi.
Table Store_Information
Column Name | Data Type |
Store_Name | char(50) |
Sales | float |
Txn_Date | datetime |
Bảng Sales_Data
Column Name | Data Type |
Store_Name | char(50) |
Product_ID | integer |
Sales | float |
Txn_Date | datetime |
Bảng Sales_Data có thông tin bán hàng chi tiết, trong khi bảng Store_Information lưu giữ dữ liệu tóm tắt về doanh số bán hàng theo cửa hàng theo ngày. Để sao chép dữ liệu từ Sales_Data sang Store_Information , chúng tôi nhập:
SELECT Store_Name, SUM(Sales), Txn_Date
FROM Sales_Data
GROUP BY Store_Name, Txn_Date;
Xin lưu ý rằng chúng tôi đã chỉ định thứ tự của các cột để chèn dữ liệu trong ví dụ trên (cột đầu tiên là Tên cửa hàng, cột thứ hai là Bán hàng và cột thứ ba là Txn_Date). Mặc dù điều này không hoàn toàn cần thiết, nhưng bạn nên làm theo một cách tốt, vì điều này có thể đảm bảo rằng chúng tôi luôn chèn dữ liệu vào đúng cột.
Exercises
Giả sử bảng Sales_Data ở trên chứa dữ liệu sau:Store_Name | Product_ID | Sales | Txn_Date |
Mountain View | 101 | 50 | Feb-22-1999 |
Cupertino | 120 | 35 | Feb-22-1999 |
Redwood City | 101 | 40 | Feb-22-1999 |
Sunnyvale | 80 | 60 | Feb-22-1999 |
Redwood City | 120 | 20 | Feb-22-1999 |
Sunnyvale | 101 | 30 | Feb-22-1999 |
Mountain View | 120 | 35 | Feb-23-1999 |
Cupertino | 80 | 25 | Feb-23-1999 |
Mountain View | 101 | 30 | Feb-23-1999 |
Cupertino | 120 | 40 | Feb-23-1999 |
Redwood City | 101 | 40 | Feb-23-1999 |
Sunnyvale | 80 | 50 | Feb-23-1999 |
1. Câu lệnh SQL nào sau đây là hợp lệ? (Có thể có nhiều hơn một câu trả lời)
a) INSERT INTO Store_Information SELECT * FROM Sales_Data WHERE Txn_Date = 'Feb-22-1999';
b) INSERT INTO Store_Information SELECT Store_Name, Sales, Txn_Date FROM Sales_Data WHERE Txn_Date = 'Feb-22-1999';
c) INSERT INTO Store_Information (Sales, Txn_Date, Store_Name) SELECT SUM(Sales), Txn_Date, Store_Name FROM Sales_Data WHERE Txn_Date = 'Feb-22-1999';
d) INSERT INTO Store_Information (Store_Name, Sales, Txn_Date) SELECT Store_Name, Sales, Txn_Date FROM Sales_Data WHERE Product_ID BETWEEN 80 AND 100;
2. Dữ liệu nào được chèn vào bảng Store_Information bằng câu lệnh SQL sau?
INSERT INTO Store_Information SELECT Store_Name, SUM(Sales), Txn_Date FROM Sales_Data WHERE Product_ID < 101 GROUP BY Store_Name, Txn_Date;
3. Viết câu lệnh SQL lấy tất cả dữ liệu bán hàng từ bảng Sales_Data và lưu trữ tổng dữ liệu bán hàng hàng ngày của cửa hàng trong bảng Store_Information . Có bao nhiêu hàng được chèn?
Xem thêm:
- DELETE FROM - Xóa dòng trong SQL
- UPDATE - cú pháp cập nhật dữ liệu
- INSERT INTO - cú pháp thêm dữ liệu
- SELECT UNIQUE - Select loại bỏ trùng
- SQL AS - Gán bí danh cho bảng
- SQL HAVING - Lọc kết quả theo group by