Lệnh Update Trong Sql Server

     

Trong khuyên bảo này, bạn sẽ tìm đọc cách áp dụng câu lệnh UPDATE trong SQL hệ thống để đổi khác dữ liệu hiện gồm trong một bảng.

Bạn đang xem: Lệnh update trong sql server

Để sửa đổi tài liệu hiện bao gồm trong một bảng, bạn thực hiện cú pháp câu lệnh UPDATE như sau:

UPDATE table_nameSET c1 = v1, c2 = v2, ... Công nhân = vnTrong cú pháp này:

Đầu tiên, chỉ định tên của bảng mà dữ liệu sẽ tiến hành cập nhật.Thứ hai, chỉ định list cột c1, c2, ... Cn và những giá trị v1, v2, ... Vn sẽ tiến hành cập nhật.

Ví dụ về UPDATE vào SQL Server

Đầu tiên, công ty chúng tôi sẽ tạo một bảng mới mang tên taxes nhằm minh họa câu lệnh UPDATE vào SQL Server.

CREATE TABLE sales.taxes ( tax_id INT PRIMARY KEY IDENTITY (1, 1), state VARCHAR (50) NOT NULL UNIQUE, state_tax_rate DEC (3, 2), avg_local_tax_rate DEC (3, 2), combined_rate AS state_tax_rate + avg_local_tax_rate, max_local_tax_rate DEC (3, 2), updated_at datetime);Thứ hai, thực hiện các câu lệnh sau để INSERT dữ liệu vào bảng taxes:

INSERT INTO sales.taxes( state, state_tax_rate, avg_local_tax_rate, max_local_tax_rate) VALUES("Alabama",0.04,0.05,0.07),VALUES("Alaska",0,0.01,0.07),VALUES("Arizona",0.05,0.02,0.05),VALUES("Arkansas",0.06,0.02,0.05),VALUES("California",0.07,0.01,0.02),VALUES("Colorado",0.02,0.04,0.08),VALUES("Connecticut",0.06,0,0),VALUES("Delaware",0,0,0),VALUES("Florida",0.06,0,0.02),VALUES("Georgia",0.04,0.03,0.04),VALUES("Hawaii",0.04,0,0),VALUES("Idaho",0.06,0,0.03),VALUES("Illinois",0.06,0.02,0.04),VALUES("Indiana",0.07,0,0),VALUES("Iowa",0.06,0,0.01),VALUES("Kansas",0.06,0.02,0.04),VALUES("Kentucky",0.06,0,0),VALUES("Louisiana",0.05,0.04,0.07),VALUES("Maine",0.05,0,0),VALUES("Maryland",0.06,0,0),VALUES("Massachusetts",0.06,0,0),VALUES("Michigan",0.06,0,0),VALUES("Minnesota",0.06,0,0.01),VALUES("Mississippi",0.07,0,0.01),VALUES("Missouri",0.04,0.03,0.05),VALUES("Montana",0,0,0),VALUES("Nebraska",0.05,0.01,0.02),VALUES("Nevada",0.06,0.01,0.01),VALUES("New Hampshire",0,0,0),VALUES("New Jersey",0.06,0,0),VALUES("New Mexico",0.05,0.02,0.03),VALUES("New York",0.04,0.04,0.04),VALUES("North Carolina",0.04,0.02,0.02),VALUES("North Dakota",0.05,0.01,0.03),VALUES("Ohio",0.05,0.01,0.02),VALUES("Oklahoma",0.04,0.04,0.06),VALUES("Oregon",0,0,0),VALUES("Pennsylvania",0.06,0,0.02),VALUES("Rhode Island",0.07,0,0),VALUES("South Carolina",0.06,0.01,0.02),VALUES("South Dakota",0.04,0.01,0.04),VALUES("Tennessee",0.07,0.02,0.02),VALUES("Texas",0.06,0.01,0.02),VALUES("Utah",0.05,0,0.02),VALUES("Vermont",0.06,0,0.01),VALUES("Virginia",0.05,0,0),VALUES("Washington",0.06,0.02,0.03),VALUES("West Virginia",0.06,0,0.01),VALUES("Wisconsin",0.05,0,0.01),VALUES("Wyoming",0.04,0.01,0.02),VALUES("D.C.",0.05,0,0);

Cập nhật một cột trong tất cả các bản ghi

Câu lệnh sau đây update một cột tốt nhất cho toàn bộ các bản ghi vào bảng taxes:

UPDATE sales.taxesSET updated_at = GETDATE();Trong ví dụ này, câu lệnh đã chuyển đổi các cực hiếm trong cột updated_at thành thời gian ngày khối hệ thống được trả về bởi hàm GETDATE().

SQL vps đã đưa ra thông tin sau:

(51 rows affected)Nó tức là 51 phiên bản ghi đã được update thành công.

Hãy xác minh cập nhật trên như sau:

SELECT *FROM sales.taxes;Đây là cổng đầu ra một phần:

*

Như bạn có thể thấy kết quả đầu ra, cột updated_at đang được cập nhật với giá trị ngày hiện tại.

Cập nhật các cột

Câu lệnh sau đây làm tăng nút thuế suất địa phương tối đa thêm 2% và mức thuế suất địa phương mức độ vừa phải thêm 1% so với các tiểu bang bao gồm mức thuế suất địa phương tối đa 1%.

UPDATE sales.taxesSET max_local_tax_rate += 0.02, avg_local_tax_rate += 0.01WHERE max_local_tax_rate = 0.01;Đây là thông tin được trả về vị SQL Server:

(7 rows affected)Nó có nghĩa là thuế của 7 đái bang đã được cập nhật.

UPDATE JOIN vào 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 UPDATE JOIN trong SQL Server để thực hiện update một bảng dựa trên các giá trị xuất phát điểm từ một bảng khác bằng mệnh đề JOIN.

Xem thêm: Con Đường Thành Công Của Các Tỷ Phú Giàu Có Nhất Thế Giới Bill Gates

Cú pháp UPDATE JOIN trong SQL Server

Để tầm nã vấn dữ liệu từ các bảng gồm liên quan, các bạn thường sử dụng các mệnh đề JOIN, INNER JOIN hoặc LEFT JOIN. Trong SQL Server, bạn có thể sử dụng những mệnh đề JOIN vào câu lệnh UPDATE nhằm thực hiện update một bảng dựa trên các giá trị từ một bảng khác.

Sau phía trên minh họa cú pháp của mệnh đề UPDATE JOIN:

UPDATE t1SET t1.c1 = t2.c2, t1.c2 = expression, ... FROM t1 JOIN t2 ON join_predicateWHERE where_predicate;Trong cú pháp này:

Đầu tiên, chỉ định tên của bảng (t1) mà bạn có nhu cầu cập nhật trong mệnh đề UPDATE.Thứ hai, chỉ định giá trị mới cho từng cột của bảng được cập nhật.Thứ ba, một lần tiếp nữa chỉ định bảng mà bạn muốn cập nhật vào mệnh đề FROM.

Ví dụ về UPDATE JOIN vào SQL Server

Chúng ta hãy xem một số ví dụ về việc áp dụng câu lệnh UPDATE JOIN.

Tạo bảng dữ liệu mẫu

Đầu tiên, tạo thành một bảng mới có tên là sales.targets để lưu trữ các kim chỉ nam bán hàng:

DROP TABLE IF EXISTS sales.targets;CREATE TABLE sales.targets( target_id INTPRIMARY KEY, percentage DECIMAL(4, 2) NOT NULL mặc định 0);INSERT INTO sales.targets(target_id, percentage)VALUES (1,0.2), (2,0.3), (3,0.5), (4,0.6), (5,0.8);Nếu nhân viên bán hàng đạt được kim chỉ nam 1, họ vẫn nhận được phần trăm hoa hồng bán hàng 0,2 hoặc 20%, v.v.

Thứ hai, chế tạo một bảng khác có tên là sales.commissions để lưu trữ hoa hồng bán hàng:

CREATE TABLE sales.commissions( staff_id INT PRIMARY KEY, target_id INT, base_amount DECIMAL(10, 2) NOT NULL mặc định 0, commission DECIMAL(10, 2) NOT NULL default 0, FOREIGN KEY(target_id) REFERENCES sales.targets(target_id), FOREIGN KEY(staff_id) REFERENCES sales.staffs(staff_id),);INSERT INTO sales.commissions(staff_id, base_amount, target_id)VALUES (1,100000,2), (2,120000,1), (3,80000,3), (4,900000,4), (5,950000,5);Bảng sales.commissions lưu lại trữ thông tin định danh nhân viên cấp dưới bán hàng, target_id, base_amount và commission. Bảng này links với bảng sales.targets trải qua cột target_id.

Mục tiêu của công ty chúng tôi là tính toán hoa hồng của tất cả nhân viên bán sản phẩm dựa trên mục tiêu bán sản phẩm của họ.

Ví dụ về UPDATE INNER JOIN vào SQL Server

Câu lệnh dưới đây sử dụng UPDATE INNER JOIN nhằm tính hoa hồng bán sản phẩm cho toàn bộ nhân viên chào bán hàng:

UPDATE sales.commissionsSET sales.commissions.commission = c.base_amount * t.percentageFROM sales.commissions cINNER JOIN sales.targets t ON c.target_id = t.target_id;Đây là đầu ra:

(5 rows affected)Nếu chúng ta truy vấn lại bảng sales.commissions, các bạn sẽ thấy các giá trị trong cột hoa hồng được cập nhật:

SELECT *FROM sales.commissions;

*

Ví dụ về UPDATE LEFT JOIN vào SQL Server

Giả sử chúng tôi có thêm nhị nhân viên bán hàng mới tham gia cùng họ chưa tồn tại mục tiêu nào:

INSERT INTO sales.commissions(staff_id, base_amount, target_id)VALUES (6,100000,NULL), (7,120000,NULL);Chúng tôi giả định rằng hoa hồng đến nhân viên bán sản phẩm mới là 0,1 hoặc 10%, công ty chúng tôi có thể cập nhật hoa hồng của toàn bộ nhân viên bán sản phẩm bằng cách sử dụng UPDATE LEFT JOIN như sau:

UPDATE sales.commissionsSET sales.commissions.commission = c.base_amount * COALESCE(t.percentage,0.1)FROM sales.commissions cLEFT JOIN sales.targets t ON c.target_id = t.target_id;Trong lấy ví dụ này, công ty chúng tôi đã sử dụng COALESCE() nhằm trả về 0,1 ví như tỷ lệ xác suất là NULL.

Lưu ý: nếu bạn sử dụng mệnh đề UPDATE INNER JOIN, chỉ năm mặt hàng của bảng có kim chỉ nam không đề xuất là NULL sẽ tiến hành cập nhật.

Xem thêm: Thành Đạt: Nhà Máy Sản Xuất Kệ Siêu Thị, Nhà Máy Sản Xuất Giá Kệ Siêu Thị Châu Phát

Hãy xem tài liệu trong bảng sales.commissions:

SELECT * FROM sales.commissions;Tập công dụng như sau:

*

Trong gợi ý này, chúng ta đã học tập cách thực hiện câu lệnh UPDATE trong SQL Server nhằm sửa đổi dữ liệu hiện gồm trong một bảng.