INSERT INTO SELECT - Insert dữ liệu từ câu lệnh select

2022-11-02 13:52:15

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:

INSERT INTO "table1" ("column1", "column2", ...)
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:

INSERT INTO Store_Information (Store_Name, Sales, Txn_Date)
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:


Chia sẻ: