Lệnh INSERT trong SQL Server

Lệnh INSERT trong SQL Server (Transact-SQL) được dùng để chèn một hoặc nhiều bản ghi vào một bảng.

Cú pháp lệnh INSERT

Chèn một bản ghi

Ở dạng đơn giản nhất, cú pháp lệnh INSERT chèn một bản ghi bằng từ khóa VALUES

INSERT INTO bang
 (cot1, cot2, …)
 VALUES
 (bieuthuc1, bieuthuc2, …),
 (bieuthuc1, bieuthuc2, …),
 ... ;

Cú pháp đầy đủ của lệnh INSERT chèn một bản ghi dùng từ khóa VALUES

INSERT INTO bang
 (cot1, cot2, …)
 VALUES
 ( DEFAULT | NULL | bieuthuc1,
 DEFAULT | NULL | bieuthuc2,
 
 );

Hoặc cú pháp chèn một bản ghi dùng từ khóa DEFAULT VALUES

INSERT INTO bang
 (cot1, cot2, …)
 DEFAULT VALUES;

Chèn nhiều bản ghi

Ở dạng đơn giản nhất, cú pháp chèn nhiều bản ghi bằng sub-select

INSERT INTO bang (cot1, cot2, …) SELECT bieuthuc1, bieuthuc2,  FROM bang_nguon [WHERE dieukien];

Cú pháp đầy đủ để chèn nhiều bàn ghi bằng sub-select

INSERT [ TOP (giatri_dau) [PERCENT] ] INTO bang  (cot1, cot2, …) SELECT bieuthuc1, bieuthuc2,  FROM bang_nguon [WHERE dieukien];

Tên biến hoặc giá trị biến

bang

Bảng để chèn bản ghi vào.

cot1, cot2

Các cột trong bảng để chèn giá trị

bieuthuc1, bieuthuc2

Giá trị để chỉ định vào cột trong bảng. cot1 sẽ được chỉ định giá trị của bieuthuc1, cot2 sẽ được chỉ định giá trị của bieuthuc2…

TOP (giatri_dau)

Tùy chọn. Nếu được nêu ra cụ thể sẽ chèn giá trị đầu của hàng dựa trên giatri_dau. Ví dụ TOP(10) sẽ chèn 10 hàng đầu tiên từ bộ kết quả.

PERCENT

Tùy chọn. Nếu được nêu ra cụ thể thì các hàng đầu tiên dựa trên số phần trăm giatri_dau của bộ kết quả. Ví dụ như TOP(10) PERCENT sẽ chèn 10% giá trị đầu trong bộ kết quả.

bang_nguon

Bảng nguồn (bảng gốc) để chèn dữ liệu vào từ bảng khác.

WHERE dieukien

Tùy chọn. Các điều kiện phái được đáp ứng để bản ghi được chèn vào.

Lưu ý

  • Khi chèn bản ghi vào bảng bằng lệnh INSERT, bạn phải cung cấp giá trị cho các cột NOT NULL.
  • Bạn có thể bỏ cột từ lệnh INSERT nếu cột cho phép giá trị NULL.

Ví dụ – dùng từ khóa VALUES

INSERT INTO nhanvien (nhanvien_id, ten, ho)  VALUE  (10, Anderson’, Sarah’);

Lệnh INSERT này sẽ cho kết quả là 1 bản ghi được chèn vào bảng nhanvien. Bản ghi này phải có nhanvien_id là 10, họ là Anderson và tên là Sarah.

Cú pháp này có thể được dùng để chèn nhiều hơn 1 bản ghi 1 lúc. Ví dụ như:

INSERT INTO nhanvien (nhanvien_id, ho, ten) VALUES  (19, Anderson’, Sarah’), (11, Johnson’, Dale’);

Ví dụ lệnh INSERT nói trên cho thấy có thể chèn nhiều hơn 1 bản ghi bằng từ khóa VALUES. Ở ví dụ này, 2 bản ghi được chèn vào bảng nhanvien. Bản ghi đầu tiên có nhanvien_id là 10, họ là Anderson và tên là Sarah. Bản ghi thứ 2 có nhanvien_id là 11, họ là Johnson và tên là Dale.

Lệnh trên tương đương với các lệnh INSERT dưới đây.

INSERT INTO nhanvien (nhanvien_id, ho, ten) VALUES (10, Anderson’, Sarah’);
INSERT INTO nhanvien (nhanvien_id, ho, ten) VALUES  (11, Johnson’, Dale’);

Ví dụ – dùng từ khóa DEFAULT VALUES

INSERT INTO nhanvien (nhanvien_id, ho, ten) DEFAULT VALUES;

Lệnh INSERT này sẽ chèn 1 bản ghi vào bảng nhanvien. Bản ghi mới được tạo bằng giá trị mặc định cho các trường thông tin ID, họ và tên của nhân viên.

Ví dụ – dùng lệnh SELECT

Có thể tạo lệnh INSERT phức tạp hơn bằng lệnh SELECT như dưới đây.

INSERT INTO danhba (danhba_id, ho, ten) SELECT nhanvien_id, ho, ten FROM nhanvien WHERE nhanvien_id <= 100;

Bằng cách đặt lệnh SELECT vào trong lệnh INSERT, bạn có thể thực hiện nhiều lần chèn nhanh hơn.

Với kiểu chèn này, bạn có thể sẽ muốn kiểm tra số hàng được chèn, xác định số hàng được chèn bằng cách chạy lệnh SELECT trước khi chèn.

SELECT count (*) FROM nhanvien WHERE nhanvien_id <= 100;