GETTING STARTED
DATA DEFINITION
DATA QUERIES
CONDITION & OPERATORS
EXPLORED
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
Dự án mới của mình là gamehow.net, mời anh em ghé thăm và góp ý ạ.

lệnh INSERT trong SQL Server

Ở bài trước bạn đã biết cách sử dụng lệnh SELECT rồi, vậy trong trong bài này mình sẽ nói đến lệnh INSERT, đây là lệnh dùng để thêm một dòng dữ liệu vào bảng.

1. INSERT trong SQL Server

Trước tiên bạn hãy xem cú pháp của lệnh này như sau:

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

INSERT INTO table_name (column_list)
VALUES (value_list);

Trong đó:

  • table_name là tên của table muốn thêm dữ liệu
  • column_list là danh sách các column
  • value_list là danh sách các giá trị tương ứng với column

Các cặp giá trị của column và value tương ứng với nhau. Ví dụ value đứng thứ 3 sẽ thuộc về column đứng thứ 3.

Ví dụ: Thêm một sinh viên mới.

INSERT INTO SINHVIEN (ID, NAME, AGE)
VALUES (1, "Nguyen Van Cuong", 29);

Giá trị của các column tương ứng như sau:

  • ID => 1
  • NAME  => Nguyen Van Cuong
  • AGE => 29

2. Các ví dụ với lệnh INSERT

Sau đây là các ví dụ minh họa cho các trường hợp thường gặp khi thêm dữ liệu vào table với lệnh INSERT.

Trước tiên bạn hãy tạo một bảng như sau:

CREATE TABLE sales.promotions (
    promotion_id INT PRIMARY KEY IDENTITY (1, 1),
    promotion_name VARCHAR (255) NOT NULL,
    discount NUMERIC (3, 2) DEFAULT 0,
    start_date DATE NOT NULL,
    expired_date DATE NOT NULL
); 

Hãy để ý đến các ràng buộc nhé, nó rất quan trọng trong việc xử lý dữ liệu trước khi chạy lệnh SQL.

INSERT không trả về giá trị

Trường hợp này thì chạy bình thường.

INSERT INTO sales.promotions (
    promotion_name,
    discount,
    start_date,
    expired_date
)
VALUES
    (
        '2018 Summer Promotion',
        0.15,
        '20180601',
        '20180901'
    );

Các bạn thấy mình không truyền dữ liệu cho khóa chính promotion_id, lý do là cột này được thiết lập tăng tự động nên giá trị sẽ tự tăng lên 1 cho mỗi record.

Chạy câu SQL này bạn sẽ nhận được kết thành công quả như sau:

(1 row affected)

Để xem dữ liệu đã được thêm chưa thì ta chạy lệnh.

SELECT
    *
FROM
    sales.promotions;

Kết quả:

SQL Server INSERT example png

INSERT lấy thông tin trả về

Tất cả dữ liệu vừa được insert sẽ được lưu trong biến inserted, và để lấy dữ liệu của inserted thì ta dùng lệnh OUTPUT.

Ví dụ dưới đây lấy ID vừa insert.

INSERT INTO sales.promotions (
    promotion_name,
    discount,
    start_date,
    expired_date
) OUTPUT inserted.promotion_id
VALUES
    (
        '2018 Fall Promotion',
        0.15,
        '20181001',
        '20181101'
    );

Nếu muốn lấy nhiều column hơn thì hãy tách chúng bởi dấy phẩy.

INSERT INTO sales.promotions (
    promotion_name,
    discount,
    start_date,
    expired_date
) OUTPUT inserted.promotion_id,
 inserted.promotion_name,
 inserted.discount,
 inserted.start_date,
 inserted.expired_date
VALUES
    (
        '2018 Winter Promotion',
        0.2,
        '20181201',
        '20190101'
    );

Gán dữ liệu cho khóa chính tăng tự động

Khác với MySQL, SQL Server không cho phép bạn gán dữ liệu cho khóa chính tăng tự động (identity), vì vậy khi bạn cố tình gán thì sẽ bị và không thêm được.

Hãy xem câu truy vấn dưới đây:

INSERT INTO sales.promotions (
    promotion_id,
    promotion_name,
    discount,
    start_date,
    expired_date
) OUTPUT inserted.promotion_id
VALUES
    (
        4,
        '2019 Spring Promotion',
        0.25,
        '20190201',
        '20190301'
    );

Mình đã cố gắng gán giá trị cho ID là 4 nên khi chạy câu SQL này sẽ bị lỗi như sau:

Cannot insert explicit value for identity column in 
table 'promotions' when IDENTITY_INSERT is set to OFF.

Ý nó muốn bạn hãy tắt Identity trước rồi mới gán được data cho ID.

Để tắt / mở Identity cho thao tác Insert thì bạn chạy câu SQL sau:

ON
SET IDENTITY_INSERT table_name ON;

OFF
SET IDENTITY_INSERT table_name OFF;

Như vậy tổng câu lệnh SQL cho phần này như sau:

SET IDENTITY_INSERT sales.promotions ON;
 
INSERT INTO sales.promotions (
    promotion_id,
    promotion_name,
    discount,
    start_date,
    expired_date
)
VALUES
    (
        4,
        '2019 Spring Promotion',
        0.25,
        '20190201',
        '20190301'
    );
 
 
SET IDENTITY_INSERT sales.promotions OFF;

Trong bài học này bạn đã được học cách sử dụng lệnh INSERT trong SQL Server để thêm mới một dòng dữ liệu vào table.

Cùng chuyên mục:

Hàm CHAR trong SQL Server

Hàm CHAR trong SQL Server

Cách sử dụng hàm CHAR trong SQL Server

Hàm CHARINDEX trong SQL Server

Hàm CHARINDEX trong SQL Server

Cách sử dụng hàm CHARINDEX trong SQL Server

Hàm CONCAT trong SQL Server

Hàm CONCAT trong SQL Server

Cách sử dụng hàm CONCAT trong SQL Server

Hàm + trong SQL Server

Hàm + trong SQL Server

Cách sử dụng hàm + trong SQL Server

Hàm DATALENGTH trong SQL Server

Hàm DATALENGTH trong SQL Server

Cách sử dụng hàm DATALENGTH trong SQL Server

Hàm LEFT trong SQL Server

Hàm LEFT trong SQL Server

Cách sử dụng hàm LEFT trong SQL Server

Hàm LEN trong SQL Server

Hàm LEN trong SQL Server

Cách sử dụng hàm LEN trong SQL Server

Hàm LOWER trong SQL Server

Hàm LOWER trong SQL Server

Cách sử dụng hàm LOWER trong SQL Server

Hàm LTRIM trong SQL Server

Hàm LTRIM trong SQL Server

Cách sử dụng hàm LTRIM trong SQL Server

Hàm NCHAR trong SQL Server

Hàm NCHAR trong SQL Server

Cách sử dụng hàm NCHAR trong SQL Server

Hàm PATINDEX trong SQL Server

Hàm PATINDEX trong SQL Server

Cách sử dụng hàm PATINDEX trong SQL Server

Hàm REPLACE trong SQL Server

Hàm REPLACE trong SQL Server

Cách sử dụng hàm REPLACE trong SQL Server

Hàm RIGHT trong SQL Server

Hàm RIGHT trong SQL Server

Cách sử dụng hàm RIGHT trong SQL Server

Hàm RTRIM trong SQL Server

Hàm RTRIM trong SQL Server

Cách sử dụng hàm RTRIM trong SQL Server

Hàm SPACE trong SQL Server

Hàm SPACE trong SQL Server

Cách sử dụng hàm SPACE trong SQL Server

Hàm STR trong SQL Server

Hàm STR trong SQL Server

Cách sử dụng hàm STR trong SQL Server

Hàm UPPER trong SQL Server

Hàm UPPER trong SQL Server

Cách sử dụng hàm UPPER trong SQL Server

Hàm SUBSTRING trong SQL Server

Hàm SUBSTRING trong SQL Server

Cách sử dụng hàm SUBSTRING trong SQL Server

Hàm STUFF trong SQL Server

Hàm STUFF trong SQL Server

Cách sử dụng hàm STUFF trong SQL Server

Hàm ABS trong SQL Server

Hàm ABS trong SQL Server

Cách sử dụng hàm ABS trong SQL Server

Top