Trong lý giải này, các bạn sẽ tìm phát âm cách thực hiện câu lệnh INSERT vào SQL Server để thêm một hoặc nhiều bản ghi bắt đầu vào bảng.

Bạn đang xem: Câu lệnh insert into trong sql

Giới thiệu về câu lệnh INSERT trong SQL Server

Để thêm 1 hoặc nhiều bạn dạng ghi vào bảng, bạn sử dụng câu lệnh INSERT. Tiếp sau đây minh họa cú pháp cơ bản nhất của câu lệnh INSERT:

INSERT INTO table_name (column_list)VALUES (value_list);Hãy chăm chú cú pháp này cụ thể hơn.

Đầu tiên, bạn chỉ định tên của bảng mà bạn muốn chèn dữ liệu. Thông thường, các bạn tham chiếu thương hiệu bảng theo thương hiệu lược đồ, ví dụ: production.products thì production là tên lược đồvà products là tên bảng.

Thứ hai, chúng ta chỉ định một danh sách các cột mà bạn muốn chèn dữ liệu. Bạn phải đặt danh sách các cột trong cặp vệt ngoặc solo và phân bóc các cột bởi dấu phẩy.

Nếu một cột của bảng không mở ra trong danh sách cột, SQL hệ thống phải có công dụng cung cấp một quý hiếm để chèn, còn nếu không thì bản ghi sẽ không được chèn vào bảng.

SQL Server auto sử dụng giá trị sau mang lại cột tất cả sẵn vào bảng tuy thế không lộ diện trong danh sách cột của câu lệnh INSERT:

Giá trị tự tăng tiếp sau nếu cột tất cả thuộc tính IDENTITY.Giá trị khoác định nếu cột có giá trị mặc định được chỉ định.Giá trị timestamp hiện tại nếu kiểu dữ liệu của cột là kiểu dữ liệu timestamp.Giá trị NULL giả dụ cột là NULL.Giá trị tính toán nếu cột là cột được tính toán.

Thứ ba, bạn cung cấp một danh sách các giá trị những cột sẽ được chèn vào mệnh đề VALUES. Từng cột trong danh sách cột phải có một giá bán trị khớp ứng trong danh sách giá trị. Kế bên ra, bạn phải đặt danh sách giá trị trong cặp vệt ngoặc đơn.

Ví dụ câu lệnh INSERT trong SQL Server

Hãy sản xuất một bảng mới có tên là promotions nhằm minh họa đến câu lệnh INSERT trong SQL Server:

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); vào câu lệnh này, cửa hàng chúng tôi đã chế tác một bảng mới mang tên là promotions vào lược đồ gia dụng sales. Bảng promotions gồm năm cột bao gồm cột id, tên, sút giá, ngày ban đầu và ngày không còn hạn.

Cột id là 1 trong những cột định danh (identity) trường đoản cú tăng, giá chỉ trị của chính nó được SQL Server auto điền khi chúng ta thêm một phiên bản ghi mới vào bảng.

Ví dụ câu lệnh INSERT cơ bạn dạng trong SQL Server

Câu lệnh sau đây chèn một phiên bản ghi new vào bảng promotions:

INSERT INTO sales.promotions ( promotion_name, discount, start_date, expired_date)VALUES( "2018 Summer Promotion", 0.15, "20180601", "20180901");Trong lấy một ví dụ này, shop chúng tôi đã chỉ định các giá trị cho tư cột vào bảng promotions. Chúng tôi không chỉ định giá trị mang đến cột promotion_id do SQL Server tự động cung cấp giá trị đến cột này.

Nếu câu lệnh INSERT triển khai thành công, các bạn sẽ nhận được thông báo số lượng bản ghi được chèn vào. Trong trường hợp này, SQL server đã gửi ra thông báo sau:

(1 row affected)Để xác minh làm việc chèn, bạn áp dụng truy vấn sau:

SELECT *FROM sales.promotions;Đây là tác dụng như bạn ước ao đợi.

*

Ví dụ câu lệnh INSERT trả về quý hiếm được chèn

Để lấy những giá trị được chèn, bạn sử dụng mệnh đề OUTPUT. Ví dụ: câu lệnh sau chèn một bản ghi new vào bảng promotions cùng trả về cực hiếm được chèn của cột promotion_id:

INSERT INTO sales.promotions ( promotion_name, discount, start_date, expired_date) đầu ra inserted.promotion_idVALUES( "2018 Fall Promotion", 0.15, "20181001", "20181101");

*
Ngoài thực hiện mệnh để output để trả về giá chỉ trị mang đến cột định danh, chúng ta có thể sử dụng 1 trong những hai câu lệnh tiếp sau đây ngay sau câu lệnh INSERT để đặt được điều tương tự:

-- insert statement hereSELECT
IDENTITY as LastID-- orSELECT SCOPE_IDENTITY() as LastIDĐể lấy những giá trị được chèn từ không ít cột, chúng ta chỉ định các cột trong cổng đầu ra như vào câu lệnh sau:

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_dateVALUES( "2018 Winter Promotion", 0.2, "20181201", "20190101");Sau đấy là đầu ra:

*

Chỉ định giá trị cho cột định danh trong câu lệnh INSERT

Thông thường, các bạn không đề nghị chỉ định vị trị mang đến cột định danh vày SQL hệ thống sẽ tự động cung cấp giá trị.

Tuy nhiên, trong một vài trường hợp, bạn có thể muốn chèn một quý giá vào cột dìm dạng, chẳng hạn như di chuyển dữ liệu.

Xem câu lệnh INSERT sau :

INSERT INTO sales.promotions ( promotion_id, promotion_name, discount, start_date, expired_date) đầu ra inserted.promotion_idVALUES( 4, "2019 Spring Promotion", 0.25, "20190201", "20190301");SQL server sẽ thông tin lỗi sau:

Cannot insert explicit value for identity column in table "promotions" when IDENTITY_INSERT is set khổng lồ OFF.Để hướng dẫn và chỉ định giá trị cho cột định danh lúc INSERT, trước tiên chúng ta phải tiến hành câu lệnh sau:

SET IDENTITY_INSERT table_name ON;Để loại bỏ hóa chỉ định và hướng dẫn giá trị đến cột định danh khi INSERT bạn áp dụng câu lệnh giống như với cực hiếm OFF:

SET IDENTITY_INSERT table_name OFF;Hãy tiến hành các câu lệnh sau để chèn một giá chỉ trị mang lại cột định danh trong bảng promotions:

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 lấy một ví dụ này, đầu tiên, cửa hàng chúng tôi đã bật công dụng chèn giá chỉ trị mang đến cột định danh, kế tiếp chèn một bạn dạng ghi có mức giá trị đến cột định danh và sau cùng đã tắt công dụng chèn giá trị đến cột định danh.

Câu lệnh sau đây cho thấy dữ liệu của bảng promotions sau khi chèn:

SELECT *FROM sales.promotions;

*

INSERT nhiều bạn dạng ghi vào SQL Server

Trong phần này, các bạn sẽ tìm hiểu giải pháp chèn nhiều bản ghi vào một trong những bảng bởi một câu lệnh INSERT tuyệt nhất trong SQL Server.

Để thêm nhiều bạn dạng ghi vào một trong những bảng cùng một lúc, bạn áp dụng cú pháp sau của câu lệnh INSERT:

INSERT INTO table_name (column_list)VALUES (value_list_1), (value_list_2), ... (value_list_n);Trong cú pháp này, nạm vì sử dụng một danh sách các giá trị, bạn thực hiện nhiều list giá trị được phân bóc bằng lốt phẩy nhằm chèn.

Xem thêm: Cách Sửa Màn Hình Máy Tính Bị Đen Win 7 Thành Công 100%, Cách Sửa Lỗi Màn Hình Đen Windows 7 Tận Gốc

Số lượng bản ghi mà chúng ta cũng có thể chèn cùng một lúc là 1.000 bản ghi bằng cách sử dụng cú pháp câu lệnh INSERT này. Nếu bạn muốn chèn nhiều bản ghi hơn thế, chúng ta nên xem xét thực hiện nhiều câu lệnh INSERT, câu lệnh BULK INSERT hoặc bảng dẫn xuất.

Lưu ý: cú pháp INSERTnhiều bản ghi này chỉ được cung ứng từ SQL hệ thống 2008 trở lên.

Ví dụ INSERT nhiều bản ghi vào SQL Server

Chúng tôi sẽ thực hiện bảng sales.promotions được tạo nên trong phần đầu của lí giải này để minh họa.

Nếu bạn chưa tạo ra bảng sales.promotions, bạn cũng có thể sử dụng câu lệnh CREATE TABLE sau:

CREATE TABLE sales.promotions ( promotion_id INT PRIMARY KEY IDENTITY (1, 1), promotion_name VARCHAR (255) NOT NULL, discount NUMERIC (3, 2) mặc định 0, start_date DATE NOT NULL, expired_date DATE NOT NULL); Ví dụ INSERT nhiều phiên bản ghi

Câu lệnh sau chèn nhiều phiên bản ghi vào bảng sales.promotions:

INSERT INTO sales.promotions ( promotion_name, discount, start_date, expired_date)VALUES( "2019 Summer Promotion", 0.15, "20190601", "20190901"),( "2019 Fall Promotion", 0.20, "20191001", "20191101"),( "2019 Winter Promotion", 0.25, "20191201", "20200101");SQL Server gửi ra thông tin sau cho thấy ba phiên bản ghi đã được chèn thành công.

(3 rows affected)Hãy xác minh chèn bằng phương pháp thực hiện tại truy vấn sau:

SELECT *FROM sales.promotions;Đây là đầu ra:

*

Ví dụ INSERT nhiều bản ghi và trả về danh sách id sẽ chèn

Ví dụ này chèn ba phiên bản ghi vào bảng sales.promotions cùng trả về danh sách id:

INSERT INTO sales.promotions ( promotion_name, discount, start_date, expired_date )OUTPUT inserted.promotion_idVALUES ("2020 Summer Promotion",0.25,"20200601","20200901"), ("2020 Fall Promotion",0.10,"20201001","20201101"), ("2020 Winter Promotion", 0.25,"20201201","20210101");

*
Trong lấy ví dụ này, cửa hàng chúng tôi đã thêm mệnh đề output với cột mà chúng tôi muốn trả về bởi cú pháp inserted.column_name. Nếu bạn có nhu cầu trả về những giá trị từ rất nhiều cột, bạn cũng có thể sử dụng cú pháp sau:

OUTPUT inserted.column1, inserted.column2...

INSERT INTO SELECT trong SQL Server

Trong phần này, các bạn sẽ tìm gọi cách thực hiện câu lệnh INSERT INTO SELECT vào SQL Server để thêm tài liệu từ những bảng khác vào một trong những bảng.

Giới thiệu về câu lệnh INSERT INTO SELECT trong SQL Server

Để chèn dữ liệu từ những bảng khác vào trong 1 bảng, bạn thực hiện câu lệnh INSERT INTO SELECT trong SQL server như sau:

INSERT < vị trí cao nhất ( expression ) < PERCENT > > INTO target_table (column_list)queryTrong cú pháp này, câu lệnh chèn các bản ghi được trả về từ truy nã vấn query vào bảng target_table.

query là bất kỳ câu lệnh SELECT phù hợp lệ nào lấy dữ liệu từ các bảng khác. Nó đề nghị trả về những giá trị tương ứng với những cột được chỉ định và hướng dẫn trong column_list.

Mệnh đề đứng top là tùy chọn. Nó được cho phép bạn chỉ định số lượng bạn dạng ghi được trả về bởi vì truy vấn sẽ tiến hành chèn vào bảng đích.

Nếu bạn sử dụng tùy chọn PERCENT, câu lệnh vẫn chèn xác suất số phiên bản ghi. để ý rằng bí quyết thực hành tốt nhất là luôn sử dụng mệnh đề vị trí cao nhất với mệnh đề ORDER BY.

Ví dụ về câu lệnh INSERT INTO SELECT vào SQL Server

Hãy chế tạo ra một bảng mang tên sales.addresses để minh họa đến câu lệnh INSERT INTO SELECT vào SQL Server:

CREATE TABLE sales.addresses ( address_id INT IDENTITY PRIMARY KEY, street VARCHAR (255) NOT NULL, city VARCHAR (50), state VARCHAR (25), zip_code VARCHAR (5));Chèn toàn bộ các bản ghi từ bảng khác

Câu lệnh tiếp sau đây chèn tất cả các showroom từ bảng customers vào bảng addresses:

INSERT INTO sales.addresses (street, city, state, zip_code) SELECT street, city, state, zip_codeFROM sales.customersORDER BY first_name, last_name; Để xác minh bạn thực hiện truy vấn sau:

SELECT *FROM sales.addresses;Đây là kết quả:

*

Chèn một số bạn dạng ghi theo đk từ bảng khác

Đôi khi, bạn chỉ việc chèn một số bản ghi theo một điều kiện nào đó xuất phát từ 1 bảng khác vào một trong những bảng. Vào trường phù hợp này, bạn giới hạn số lượng bạn dạng ghi được trả về từ truy nã vấn bằng cách sử dụng các điều khiếu nại trong mệnh đề WHERE.

Câu lệnh tiếp sau đây thêm địa chỉ cửa hàng của các siêu thị ở thành phố Santa Cruz với Baldwin vào bảng addresses:

INSERT INTO sales.addresses (street, city, state, zip_code) SELECT street, city, state, zip_codeFROM sales.storesWHERE đô thị IN ("Santa Cruz", "Baldwin")SQL vps trả về thông báo sau cho thấy hai bạn dạng ghi đã được chèn thành công.

(2 rows affected)Chèn N bạn dạng ghi đầu tiên từ bảng khác

Đầu tiên, bạn thực hiện câu lệnh sau nhằm xóa toàn bộ các bạn dạng ghi khỏi bảng addresses:

TRUNCATE TABLE sales.addresses;Thứ hai, nhằm chèn 10 khách hàng hàng số 1 tiên được thu xếp theo tên và họ của họ, bạn áp dụng câu lệnh INSERT đứng đầu INTO SELECT như sau:

INSERT đứng top (10) INTO sales.addresses (street, city, state, zip_code) SELECT street, city, state, zip_codeFROM sales.customersORDER BY first_name, last_name;SQL vps trả về thông tin sau cho biết thêm mười bản ghi đã được chèn thành công.

(10 rows affected)Chèn phần trăm phiên bản ghi đầu tiên từ bảng khác

Thay vì sử dụng đúng chuẩn số lượng bạn dạng ghi, bạn cũng có thể chèn một số trong những lượng bạn dạng ghi theo phần trăm tổng số bản ghi.

Đầu tiên, xóa toàn bộ các bản ghi từ bỏ bảng addresses:

TRUNCATE TABLE sales.addresses;Sau kia chèn 10 phần trăm phiên bản ghi trước tiên từ bảng customers được thu xếp theo tên cùng họ vào bảng addresses:

INSERT đứng đầu (10) PERCENT INTO sales.addresses (street, city, state, zip_code) SELECT street, city, state, zip_codeFROM sales.customersORDER BY first_name, last_name;SQL vps đã chuyển ra thông tin sau cho biết 145 bản ghi đã có chèn thành công.

(145 rows affected)Trong giải đáp này, bạn đã học cách sử dụng câu lệnh INSERT trong SQL Server nhằm thêm một hoặc nhiều phiên bản ghi mới vào bảng.