Lệnh INSERT trong SQL

Câu lệnh INSERT trong SQL không quá khó dùng. Bài viết sẽ cung cấp cho bạn thông tin chi tiết về lệnh insert into trong SQL.

Trong các bài học SQL trước bạn đã được tìm hiểu về lệnh liên quan đến cơ sở dữ liệu, bảng dữ liệu trong SQL, như lệnh tạo bảng, lệnh xóa bảng. Bắt đầu từ bài này chúng ta sẽ đi vào phần truy vấn trong SQL, mở màn bằng lệnh truy vấn INSERT INTO.

Lệnh INSERT INTO trong SQL được dùng để thêm một hàng dữ liệu mới vào bảng trong cơ sở dữ liệu.

Cú pháp của lệnh INSERT INTO:

Lệnh INSERT INTO có 2 cú pháp cơ bản, chúng ta sẽ cùng tìm hiểu cả 2 cú pháp trong bài này.

Lệnh INSERT INTO, cú pháp 1: Chỉ định cả tên cột và giá trị được chèn

INSERT INTO TEN_BANG (cot1, cot2, cot3,...cotN)
VALUES (gia_tri1, gia_tri2, gia_tri3,...gia_triN);

Ở đây, cot1, cot2, cot3,... cotN là tên các cột trong bảng mà bạn muốn chèn thêm dữ liệu. gia_tri1, gia_tri2, gia_tri3,...gia_triN là giá trị cần thêm vào tương ứng với các cột.

Lệnh INSERT INTO, cú pháp 2: Nếu bạn muốn thêm giá trị vào tất cả các cột trong bảng thì có thể sử dụng lệnh INSERT INTO dưới đây:

INSERT INTO TEN_BANG
VALUES (gia_tri1, gia_tri2, gia_tri3,...gia_triN);

Bạn nhấn thấy sự khác biệt không? Ở cú pháp 2, bạn không cần liệt kê tên các cột trong bảng, chỉ cần đảm bảo rằng thứ tự các giá trị bạn muốn thêm vào đúng với thứ tự của các cột trong bảng là được.

Ví dụ về lệnh INSERT INTO:

Lệnh dưới đây sẽ tạo 6 bản ghi cho bảng NHANVIEN

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 );

Có thể sử dụng cú pháp 2 để thêm bản ghi thứ 7 cho bảng NHANVIEN như sau:

INSERT INTO NHANVIEN
VALUES (7, 'LAM', 29, 'Hanoi', 15000.00 );

Sau khi thực hiện tất cả các lệnh trên, ta sẽ có bảng NHANVIEN như 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|
+----+----------+-----+-----------+---------+

Thêm dữ liệu từ một bảng dữ liệu khác

Trong SQL, bạn có thể thêm dữ liệu từ bảng B vào bảng A bằng cách sử dụng lệnh SELECT trên bảng B, cụ thể như sau:

INSERT INTO TEN_BANG_A [(cot1, cot2, ... cot)]
SELECT cot1, cot2, ...cotN
FROM TEN_BANG_B
[WHERE DIEU_KIEN];

Trong lệnh trên bạn sẽ thêm các cột từ bảng B để thêm vào bảng A, những phần để trong dấu [] là có thể có hoặc không. Lệnh SELECT thay vì liệt kê các cột, nếu lấy khớp nhau toàn bộ các cột thì bạn có thể dùng * để thay thế cho danh sách cột.

Ví dụ: Bạn có 2 bảng dữ liệu cùng cấu trúc là: NHANVIEN (đã có dữ liệu như ví dụ trên) và NHANVIEN2 (chưa có dữ liệu). Bạn cần điền dữ liệu cho bảng NHANVIEN2 tương tự như bảng NHANVIEN nhưng chỉ chọn người có tuổi lớn hơn 25.

Cú pháp sẽ như sau:

INSERT INTO NHANVIEN2
   SELECT *
   FROM NHANVIEN
   WHERE TUOI > 25;

Và kết quả sau khi chèn dữ liệu ta sẽ có bảng NHANVIEN2 như sau:

+----+----------+-----+-----------+---------+ 
| ID |   TEN    | TUOI|  DIACHI   |  LUONG  |
+----+----------+-----+-----------+---------+
| 2  |  Loan    | 26  | Hanoi     | 1500.00 |
| 4  |  Mạnh    | 29  | Hue       | 6500.00 |
| 5  |  Huy     | 28  | Hatinh    | 8500.00 |
| 7  |  Lam     | 29  | Hanoi     | 15000.00|
+----+----------+-----+-----------+---------+

Tạo bảng dữ liệu từ bảng dữ liệu sẵn có

Ngoài 2 cách chèn dữ liệu trên, bạn có thể tạo một bảng dữ liệu với cấu trúc tương tự như bảng gốc + có chèn sẵn luôn dữ liệu theo một điều kiện nhất định.

Ví dụ: Tạo và thêm 1 bảng dữ liệu NHANVIEN3 có cấu trúc như bảng NHANVIEN và liệt kê vào đó những nhân viên có số tuổi nhỏ hơn 25. Câu lệnh sẽ như sau:

CREATE TABLE NHANVIEN3 AS
SELECT *
FROM NHANVIEN
WHERE TUOI < 25

Và kết quả bạn sẽ tạo ra được bảng NHANVIEN2 với nội dung:

+----+----------+-----+-----------+---------+ 
| ID |   TEN    | TUOI|  DIACHI   |  LUONG  |
+----+----------+-----+-----------+---------+
| 1  |  Thanh   | 24  | Haiphong  | 2000.00 |
| 3  |  Nga     | 24  | Hanam     | 2000.00 |
| 6  |  Cao     | 23  | HCM       | 4500.00 |
+----+----------+-----+-----------+---------+

Câu hỏi thường gặp khi dùng câu lệnh INSERT trong SQL

Câu hỏi: Khi thiết lập một cơ sở dữ liệu với các client, phải dùng lệnh SQL INSERT để chèn thông tin vào database nhưng làm thế nào chắc chắn rằng không nhập lại cùng một thông tin client?

Trả lời: Bạn có thể đảm bảo không chèn thông tin trùng lặp bằng cách dùng điều kiện EXISTS của SQL.

Ví dụ, nếu có một bảng mang tên clients với nhân tố chính là client_id, bạn có thể dùng lệnh SQL INSERT sau:

INSERT INTO clients
(client_id, client_name, client_type)
SELECT supplier_id AS client_id, supplier_name AS client_name, 'advertising' AS client_type
FROM suppliers
WHERE NOT EXISTS (SELECT *
                  FROM clients
                  WHERE clients.client_id = suppliers.supplier_id);

Lệnh SQL INSERT chèn nhiều bản ghi bằng một subselect. Nếu muốn chèn một bản ghi, bạn có thể dùng lệnh SQL INSERT:

INSERT INTO clients
(client_id, client_name, client_type)
SELECT 10345, 'IBM', 'advertising'
FROM dual
WHERE NOT EXISTS (SELECT *
                  FROM clients
                  WHERE clients.client_id = 10345);

Cách dùng bảng dual cho phép bạn nhập các giá trị trong lệnh SELECT, dù cho các giá trị đó hiện không được lưu trữ trong bảng.

Bài luyện tập dùng lệnh Insert SQL

Sau khi học xong kiến thức mới, cách tốt nhất để ghi nhớ lâu là thực hành. Những bài tập dưới đây sẽ giúp bạn kiểm tra kiến thức về câu lệnh Insert SQL. Bạn cũng nhận được đáp án gợi ý sau mỗi câu trả lời.

Câu hỏi:

Dựa trên bảng employees, chèn một bảng ghi nhân viên có employee_number là 1005, employee_name là Sally Johnson, salary là $58,000, và dept_id là 500.

CREATE TABLE employees
( employee_number int NOT NULL,
  last_name char(50) NOT NULL,
  first_name char(50) NOT NULL,
  salary int,
  dept_id int,
  CONSTRAINT employees_pk PRIMARY KEY (employee_number)
);

INSERT INTO employees
(employee_number, last_name, first_name, salary, dept_id)
VALUES
(1001, 'Smith', 'John', 62000, 500);

INSERT INTO employees
(employee_number, last_name, first_name, salary, dept_id)
VALUES
(1002, 'Anderson', 'Jane', 57500, 500);

INSERT INTO employees
(employee_number, last_name, first_name, salary, dept_id)
VALUES
(1003, 'Everest', 'Brad', 71000, 501);

INSERT INTO employees
(employee_number, last_name, first_name, salary, dept_id)
VALUES
(1004, 'Horvath', 'Jack', 42000, 501);

Đáp án gợi ý:

Lệnh INSERT sau sẽ chèn bản ghi này vào bảng employees:

INSERT INTO employees 
(employee_number, last_name, first_name, salary, dept_id)
VALUES
(1005, 'Johnson', 'Sally', 58000, 500);

Bảng nhân viên giờ sẽ trông như thế này:

Bài luyện tập dùng Insert trong SQL

Câu hỏi:

Dựa trên bảng suppliers với dữ liệu được cung cấp bên dưới, chèn một bản ghi nhà cung cấp có supplier_id là 1000 và supplier_name là Apple:

CREATE TABLE suppliers
( supplier_id int NOT NULL,
  supplier_name char(50) NOT NULL,
  city char(50),
  state char(50),
  CONSTRAINT suppliers_pk PRIMARY KEY (supplier_id)
);

INSERT INTO suppliers
(supplier_id, supplier_name, city, state)
VALUES
(100, 'Microsoft', 'Redmond', 'Washington');

INSERT INTO suppliers
(supplier_id, supplier_name, city, state)
VALUES
(200, 'Google', 'Mountain View', 'California');

INSERT INTO suppliers
(supplier_id, supplier_name, city, state)
VALUES
(300, 'Oracle', 'Redwood City', 'California');

INSERT INTO suppliers
(supplier_id, supplier_name, city, state)
VALUES
(400, 'Kimberly-Clark', 'Irving', 'Texas');

INSERT INTO suppliers
(supplier_id, supplier_name, city, state)
VALUES
(500, 'Tyson Foods', 'Springdale', 'Arkansas');

INSERT INTO suppliers
(supplier_id, supplier_name, city, state)
VALUES
(600, 'SC Johnson', 'Racine', 'Wisconsin');

INSERT INTO suppliers
(supplier_id, supplier_name, city, state)
VALUES
(700, 'Dole Food Company', 'Westlake Village', 'California');

INSERT INTO suppliers
(supplier_id, supplier_name, city, state)
VALUES
(800, 'Flowers Foods', 'Thomasville', 'Georgia');

INSERT INTO suppliers
(supplier_id, supplier_name, city, state)
VALUES
(900, 'Electronic Arts', 'Redwood City', 'California');

Đáp án gợi ý:

Lệnh SQL INSERT sau sẽ chèn bản ghi này vào bảng suppliers:

INSERT INTO suppliers
(supplier_id, supplier_name)
VALUES
(1000, 'Apple');

Kết quả bảng nhà cung cấp trông sẽ như sau:

Ví dụ về lệnh Insert trong SQL

Vậy là sau bài viết này, chúng ta đã có thể tạo ra khá nhiều bảng dữ liệu có sẵn các bản ghi rồi. Bạn hãy thử thực hành thêm và theo dõi tiếp loạt bài sau nhé!

Thứ Ba, 05/09/2023 16:53
3,110 👨 159.942
0 Bình luận
Sắp xếp theo
    ❖ Học SQL