Mục lục
Mã lệnh Insert Into trong SQL được sử dụng để thêm một dòng dữ liệu trong một bảng. Chúng ta có 2 cách sử dụng Insert Into trong SQL
- Chỉ chứa các giá trị, lưu ý với cách này các gía trị phải được đặt đúng thứ tự của các cột tương ứng khi tạo bảng.
INSERT INTO table_name VALUES (value1, value2, value3,…); table_name: Tên của bảng value1, value2,.. : giá trị của bảng thứ nhất, thứ hai, thứ ba, thứ n
Chứa cả tên cột và giá trị, đối với cách này vì đã chỉ định tên cột, nên thứ tự có thể đảo lộn, tuy nhiên cần đảm bảo giá trị đi đúng theo thứ tự đã khai báo trong mệnh đề Insert Into.
INSERT INTO table_name (column1, column2, column3,..) VALUES ( value1, value2, value3,..); table_name: Tên của bảng. column1: Tên cột thứ nhất, thứ 2, thứ n value1, value2, value3 : giá trị của bảng thứ nhất, thứ hai, thứ ba, thứ n
Ví dụ sử dụng Insert Into
Cho bảng NHANVIEN, Thêm dữ liệu vào bảng NHANVIEN với cú pháp chứa cả tên cột và giá trị.
INSERT INTO NHANVIEN (ID,TEN,TUOI,DIACHI,LUONG) VALUES (1, 'Thanh', 24, 'Haiphong', 2000.00 ); INSERT INTO NHANVIEN (ID,TEN,TUOI,DIACHI,LUONG) VALUES (2, 'Loan', 26, 'Hanoi', 1500.00 ); INSERT INTO NHANVIEN (ID,TEN,TUOI,DIACHI,LUONG) VALUES (3, 'Nga', 24, 'Hanam', 2000.00 ); INSERT INTO NHANVIEN (ID,TEN,TUOI,DIACHI,LUONG) VALUES (4, 'Manh', 29, 'Hue', 6500.00 ); INSERT INTO NHANVIEN (ID,TEN,TUOI,DIACHI,LUONG) VALUES (5, 'Huy', 28, 'Hatinh', 8500.00 ); INSERT INTO NHANVIEN (ID,TEN,TUOI,DIACHI,LUONG) VALUES (6, 'Cao', 23, 'HCM, 4500.00 );
Thêm dữ liệu sử dụng cu pháp chỉ chứa giá trị.
INSERT INTO NHANVIEN VALUES (7, 'LAM', 29, 'Hanoi, 15000.00 );
Kết quả cuối cùng, chúng ta sẽ có bảng NHANVIEN chứa 7 dòng dữ liệu sau
+----+----------+-----+-----------+---------+ | ID | TEN | TUOI| DIACHI | LUONG | +----+----------+-----+-----------+---------+ | 1 | Thanh | 24 | Haiphong | 2000.00 | | 2 | Loan | 26 | Hanoi | 1500.00 | | 3 | Nga | 24 | Hanam | 2000.00 | | 4 | Mạnh | 29 | Hue | 6500.00 | | 5 | Huy | 28 | Hatinh | 8500.00 | | 6 | Cao | 23 | HCM | 4500.00 | | 7 | Lam | 29 | Hanoi | 15000.00| +----+----------+-----+-----------+---------+
Sử dụng Insert Into với Select
Chúng ta có thể sử dụng câu lệnh SELECT với câu lệnh INSERT INTO để sao chép các dòng từ một bảng và chèn chúng vào một bảng khác. Việc sử dụng câu lệnh này tương tự như câu lệnh INSERT INTO. Sự khác biệt là câu lệnh SELECT được sử dụng ở đây để chọn dữ liệu từ một bảng khác.
Ví dụ chúng ta có bảng Student
Sao chép toàn bộ dữ liệu
Chúng ta có thể sao chép toàn bộ dữ liệu từ một bảng sang một bảng khác với Insert Into kết hợp với Select.
INSERT INTO first_table SELECT * FROM second_table; first_table: Table được thêm dữ liệu second_table: Table bị sao chép dữ liệu
Nếu mình có một bảng LateralStudent mô tả như sau
ROLL_NO | NAME | ADDRESS | PHONE | Age |
7 | SOUVIK | DUMDUM | XXXXXXXXXX | 18 |
8 | NIRAJ | NOIDA | XXXXXXXXXX | 19 |
9 | SOMESH | ROHTAK | XXXXXXXXXX | 20 |
Khi chạy lệnh mã lệnh dưới đây sẽ sao chép toàn bộ dữ liệu từ LateralStudent sang bảng Student
INSERT INTO Student SELECT * FROM LateralStudent;
Kết quả sẽ là
ROLL_NO | NAME | ADDRESS | PHONE | Age |
1 | Ram | Delhi | XXXXXXXXXX | 18 |
2 | RAMESH | GURGAON | XXXXXXXXXX | 18 |
3 | SUJIT | ROHTAK | XXXXXXXXXX | 20 |
4 | SURESH | Delhi | XXXXXXXXXX | 18 |
3 | SUJIT | ROHTAK | XXXXXXXXXX | 20 |
2 | RAMESH | GURGAON | XXXXXXXXXX | 18 |
7 | SOUVIK | DUMDUM | XXXXXXXXXX | 18 |
8 | NIRAJ | NOIDA | XXXXXXXXXX | 19 |
9 | SOMESH | ROHTAK | XXXXXXXXXX | 20 |
Sao chép một số cột được chỉ định
Chúng ta có thể sao chép toàn bộ dữ liệu từ một bảng với các cột được chỉ định sang một bảng khác với Insert Into kết hợp với Select.
INSERT INTO Student(ROLL_NO,NAME,Age) SELECT ROLL_NO, NAME, Age FROM LateralStudent;
Câu truy vấn trên sẽ sao chép toàn bộ dữ liệu từ LateralStudent sang Student nhưng chỉ sao chép dữ liệu trong các cột ROLL_NO,NAME,Age). Các cột còn lại sẽ bị NULL.
ROLL_NO | NAME | ADDRESS | PHONE | Age |
1 | Ram | Delhi | XXXXXXXXXX | 18 |
2 | RAMESH | GURGAON | XXXXXXXXXX | 18 |
3 | SUJIT | ROHTAK | XXXXXXXXXX | 20 |
4 | SURESH | Delhi | XXXXXXXXXX | 18 |
3 | SUJIT | ROHTAK | XXXXXXXXXX | 20 |
2 | RAMESH | GURGAON | XXXXXXXXXX | 18 |
7 | SOUVIK | null | null | 18 |
8 | NIRAJ | null | null | 19 |
9 | SOMESH | null | null | 20 |
Sao chép có điều kiện
Nếu không muốn sao chép toàn bộ dữ liệu, chúng ta chỉ cần thêm các điều kiện vào mệnh đề WHERE để lọc ra các dữ liệu mong muốn.
INSERT INTO Student SELECT * FROM LateralStudent WHERE Age = 18;
Câu truy vấn trên sẽ chỉ sao chép các dữ liệu từ LateralStudent sang Student chỉ khi nó có tuổi từ 18 trở lên.
ROLL_NO | NAME | ADDRESS | PHONE | Age |
1 | Ram | Delhi | XXXXXXXXXX | 18 |
2 | RAMESH | GURGAON | XXXXXXXXXX | 18 |
3 | SUJIT | ROHTAK | XXXXXXXXXX | 20 |
4 | SURESH | Delhi | XXXXXXXXXX | 18 |
3 | SUJIT | ROHTAK | XXXXXXXXXX | 20 |
2 | RAMESH | GURGAON | XXXXXXXXXX | 18 |
SOUVIK | DUMDUM | XXXXXXXXXX | 18 |
Insert nhiều dòng trong SQL
Nếu muốn thêm dữ liệu nhiều dòng trong SQL thì bạn chỉ cần cung cấp danh sách các giá trị tương ứng cho mỗi dòng cách nhau bởi dấu phẩy.
INSERT INTO table_name(Column1,Column2,Column3,.......) VALUES (Value1, Value2,Value3,.....), (Value1, Value2,Value3,.....), (Value1, Value2,Value3,.....), ............................. ; table_name: Tên table Column1: tên cột thứ 1, thứ 2, thứ n … Value1, Value2, Value3 : giá trị cột thứ 1, thứ 2, thứ n
Ví dụ thêm dữ liệu vào bảng Student
INSERT INTO STUDENT(ID, NAME,AGE,GRADE,CITY) VALUES(1,"AMIT KUMAR",15,10,"DELHI"), (2,"GAURI RAO",18,12,"BANGALORE"), (3,"MANAV BHATT",17,11,"NEW DELHI"), (4,"RIYA KAPOOR",10,5,"UDAIPUR");
Kết quả khi SELECT bảng Student
ID | NAME | AGE | GRADE | CITY |
1 | AMIT KUMAR | 15 | 10 | DELHI |
2 | GAURI RAO | 16 | 12 | BANGALORE |
3 | MANAV BHATT | 17 | 11 | NEW DELHI |
4 | RIYA KAPOOR | 10 | 5 | UDAIPUR |
Nguồn tham khảo
https://www.geeksforgeeks.org/sql-insert-statement/
https://quantrimang.com/lenh-insert-trong-sql-143753