SQL Server: Thao tác chèn dữ liệu cơ bản

Thao tác chèn dữ liệu (INSERT) vào bảng là một trong những nghiệp vụ cơ bản nhất trong SQL. Để có thể xử lý dữ liệu, trước tiên chúng ta cần có dữ liệu trong cơ sở dữ liệu. Trong SQL Server, có nhiều cách để chèn dữ liệu vào bảng. Bài viết này sẽ giới thiệu ba phương pháp chính:

1. Chèn dữ liệu theo cú pháp chuẩn

Cú pháp cơ bản để chèn một bản ghi vào bảng:

INSERT INTO TênBảng(Cột1, Cột2, ...)
VALUES (Giá trị1, Giá trị2, ...);

Trong đó:

  • TênBảng là tên của bảng bạn muốn chèn dữ liệu vào.
  • Cột1, Cột2, ... là tên các cột trong bảng.
  • Giá trị1, Giá trị2, ... là các giá trị tương ứng sẽ được chèn vào các cột.

Lưu ý: Số lượng và thứ tự của các giá trị trong mệnh đề VALUES phải khớp với số lượng và thứ tự của các cột được liệt kê trong mệnh đề INSERT INTO.

Ví dụ minh họa:


INSERT INTO dbo.Student(STUdentID, UserName, PassWord, StuName, StuSex, Stuaddress, StuPhone1, StuPhone2)
VALUES ('STU12021A0000006', '201740450106', '666666', 'Lý Hoa', 'Nam', 'Việt Nam', '017723131220', '017123213060');

2. Chèn dữ liệu sử dụng câu lệnh SELECT

Phương pháp này cho phép bạn chèn dữ liệu từ một bảng khác hoặc từ kết quả của một truy vấn SELECT.

a. Chèn một bản ghi:


INSERT INTO dbo.Student(STUdentID, UserName, PassWord, StuName, StuSex, Stuaddress, StuPhone1, StuPhone2)
SELECT 'STU12021A0000006', '201740450106', '666666', 'Lý Hoa', 'Nam', 'Việt Nam', '017723131220', '017123213060';

b. Chèn nhiều bản ghi:

Để chèn nhiều bản ghi, bạn có thể sử dụng toán tử UNION ALL để kết hợp kết quả từ nhiều câu lệnh SELECT.


INSERT INTO dbo.Student(STUdentID, UserName, PassWord, StuName, StuSex, Stuaddress, StuPhone1, StuPhone2)
SELECT 'STU12021A0000006', '201740450106', '666666', 'Lý Hoa', 'Nam', 'Việt Nam', '017723131220', '017123213060'
UNION ALL
SELECT 'STU12021A0000007', '201740450107', '666666', 'Lý Hoa 2', 'Nam', 'Việt Nam 2', '017723131220', '017123213060'
UNION ALL
SELECT 'STU12021A0000008', '201740450108', '666666', 'Lý Hoa 3', 'Nam', 'Việt Nam 3', '017723131220', '017123213060';

Lưu ý: Khi sử dụng UNION ALL, cấu trúc của các tập kết quả từ mỗi câu lệnh SELECT (bao gồm số lượng cột và kiểu dữ liệu của từng cột) phải hoàn toàn tương thích với nhau. Nếu không, bạn sẽ gặp lỗi về kiểu dữ liệu không khớp.

c. Chèn dữ liệu từ một tập hợp giá trị:

Bạn có thể định nghĩa một bảng tạm (temporary table) hoặc một biến bảng (table variable) và chèn dữ liệu vào đó.


DECLARE @temp TABLE (
    LotId INT NULL,
    LotSN NVARCHAR(50) NULL,
    MacAddress NVARCHAR(50) NULL
);

INSERT INTO @temp (LotId, LotSN, MacAddress)
VALUES
(1, N'H90X6231205C00671', N'2825364439CC'),
(1, N'H90X6231205C00672', N'28253645BF3F'),
(1, N'H90X6231205C00673', N'2825364439E8'),
(1, N'H90X6231205C00674', N'2825364439D4'),
(1, N'H90X6231205C00675', N'2825364439D5'),
(1, N'H90X6231205C00676', N'2825364439D6');

3. Chèn dữ liệu vào bảng đích từ bảng nguồn

Cú pháp này cho phép bạn sao chép dữ liệu từ một bảng khác (table2) vào bảng hiện tại (table1), có thể kèm theo điều kiện lọc.

INSERT INTO table1(Cột1, Cột2, ...)
SELECT CộtNguồn1, CộtNguồn2, ...
FROM table2
WHERE điều kiện;

Ví dụ minh họa: Chèn tên sinh viên từ bảng Student vào bảng test2, chỉ lấy những sinh viên có tên là 'Lý Hoa'.


INSERT INTO dbo.test2(name)
SELECT StuName
FROM dbo.Student
WHERE StuName = 'Lý Hoa';

Thẻ: SQL Server INSERT Tạo dữ liệu truy vấn dữ liệu

Đăng vào ngày 17 tháng 8 lúc 15:02