Quan trọng. Chú ý tuyên bố.
UPDATE employees SET email = “oliver.bailey@gmail.com” WHERE empNum = 1008 AND email = “ob@gmail.com” ;3. Cần phải thực hiện các thay đổi, nếu không thì không có thay đổi nào được thực hiện đối với bảng
Lưu ý mệnh đề WHERE trong cú pháp UPDATE. Mệnh đề WHERE chỉ định bản ghi hoặc bản ghi nào sẽ được cập nhật. Nếu bạn bỏ qua mệnh đề WHERE, tất cả các bản ghi sẽ được cập nhật
Ngăn chặn SQL injection
Nó được coi là một cách thực hành tốt để thoát khỏi các giá trị của bất kỳ truy vấn nào, kể cả trong các câu lệnh cập nhật
Điều này là để ngăn chặn việc tiêm SQL, đây là một kỹ thuật hack web phổ biến để phá hủy hoặc sử dụng sai cơ sở dữ liệu của bạn
Hướng dẫn này giải thích câu lệnh UPDATE của MySQL cùng với cú pháp truy vấn và các ví dụ. Bạn cũng sẽ tìm hiểu các biến thể khác nhau của lệnh bảng cập nhật MySQL
Như với bất kỳ cơ sở dữ liệu nào khác, chúng ta luôn có nhu cầu cập nhật hoặc sửa đổi hoặc thay đổi dữ liệu hiện có trong các bảng. Trong MySQL, chúng tôi có câu lệnh CẬP NHẬT có thể được sử dụng để cập nhật hoặc sửa đổi dữ liệu trong bảng
Sử dụng lệnh này, chúng ta có thể cập nhật một hoặc nhiều trường. Chúng tôi có thể cập nhật các giá trị của một bảng cụ thể tại một thời điểm. Bằng cách sử dụng mệnh đề WHERE, chúng ta có thể chỉ định các điều kiện được sử dụng đặc biệt khi có nhu cầu cập nhật các hàng cụ thể từ một bảng
=> Nhấp vào đây để xem toàn bộ loạt bài hướng dẫn về MySQL
Trước khi tiếp tục, xin lưu ý rằng chúng tôi đang sử dụng MySQL phiên bản 8. 0. Bạn có thể tải về từ đây
Bạn sẽ học được gì
- Cú pháp bảng CẬP NHẬT MySQL
- Công cụ sửa đổi trong câu lệnh bảng CẬP NHẬT
- Ví dụ CẬP NHẬT MySQL
- Lệnh bảng CẬP NHẬT MySQL
- #1] MySQL Cập nhật cột đơn
- #2] MySQL Cập nhật nhiều cột
- #3] Cập nhật MySQL với chức năng REPLACE
- #4] CẬP NHẬT MySQL Sử dụng Câu lệnh SELECT
- #5] CẬP NHẬT MySQL Nhiều hàng
- #6] CẬP NHẬT MySQL Sử dụng Từ khóa INNER JOIN
- #7] CẬP NHẬT MySQL Sử dụng Từ khóa LEFT JOIN
- Câu hỏi thường gặp và câu trả lời
- Sự kết luận
- đề xuất đọc
Cú pháp bảng CẬP NHẬT MySQL
UPDATE table_name SET column1 = new_value1, column2 = new_value2, ... WHERE condition;
Giải thích cú pháp
- Cú pháp bắt đầu bằng từ khóa “UPDATE”, do đó thông báo cho MySQL Server về loại hoạt động sẽ được thực hiện. Đây là từ khóa bắt buộc và không thể bỏ qua
- Tiếp theo là tên của bảng mà hành động cập nhật phải được thực hiện. Điều này là bắt buộc và không thể bỏ qua
- Thứ ba, lại là một từ khóa – SET. Từ khóa này thông báo cho Máy chủ MySQL về các giá trị sẽ được cập nhật cho tên cột. Đây là từ khóa bắt buộc và không thể bỏ qua
- Tiếp theo, sẽ là các tên cột sẽ được cập nhật cùng với các giá trị tương ứng của chúng. Đây cũng là điều bắt buộc và không thể bỏ qua
- Sau đó, đến điều kiện WHERE, hạn chế hoặc lọc số lượng hàng mục tiêu mà hành động CẬP NHẬT phải được áp dụng trên đó. WHERE cũng là một từ khóa, nhưng là một tùy chọn
Tuy nhiên, mệnh đề WHERE có ý nghĩa. Nếu không được đề cập hoặc nếu điều kiện không được đặt chính xác thì cả bảng và các hàng không bắt buộc sẽ không được cập nhật
Công cụ sửa đổi trong câu lệnh bảng CẬP NHẬT
Được liệt kê dưới đây là các công cụ sửa đổi trong một câu lệnh CẬP NHẬT
ƯU TIÊN THẤP. Công cụ sửa đổi này thông báo cho Công cụ MySQL trì hoãn cập nhật cho đến khi không có kết nối nào được đọc từ bảng
PHỚT LỜ. Công cụ sửa đổi này thông báo cho MySQL Engine để tiếp tục hoạt động CẬP NHẬT ngay cả khi có bất kỳ lỗi nào. Không có hành động cập nhật nào được thực hiện trên các hàng gây ra lỗi
Ví dụ CẬP NHẬT MySQL
Đưa ra dưới đây là một bảng mẫu được tạo trong MySQL
Tên giản đồ. thái bình dương
Tên bảng. nhân viên
Tên cột.
- empNum – Giữ giá trị số nguyên cho mã số nhân viên
- lastName – Giữ các giá trị varchar cho họ của nhân viên
- firstName – Giữ các giá trị varchar cho tên của nhân viên
- email – Giữ các giá trị varchar cho ID email của nhân viên
- deptNum – Giữ varchar cho ID bộ phận mà một nhân viên thuộc về
- lương – Giữ giá trị thập phân của tiền lương cho mỗi nhân viên
Tên giản đồ. thái bình dương
Tên bảng. phòng ban
Tên cột.
- deptNum – Giữ varchar cho ID bộ phận trong một tổ chức
- thành phố – Giữ tên của thành phố nơi các phòng ban làm việc từ đó
- country – Giữ tên quốc gia tương ứng với thành phố
- tiền thưởng – Giữ giá trị phần trăm của tiền thưởng
Lệnh bảng CẬP NHẬT MySQL
#1] MySQL Cập nhật cột đơn
Bây giờ, hãy tìm hiểu một bản ghi mà chúng tôi muốn cập nhật. Đầu tiên, chúng ta sẽ xem xét một kịch bản trong đó chúng ta phải cập nhật một cột bằng cách sử dụng từ khóa CẬP NHẬT
Đây là một nhân viên với mã số nhân viên là 1008
Truy vấn và kết quả tương ứng của nó như sau
Hãy cập nhật ID email của nhân viên này từ ob@gmail. com đến oliver. bailey@gmail. com, sử dụng từ khóa CẬP NHẬT
CẬP NHẬT. Từ khóa thông báo cho công cụ MySQL rằng câu lệnh nói về Cập nhật bảng.
ĐẶT. Mệnh đề này đặt giá trị của tên cột được đề cập sau từ khóa này thành một giá trị mới.
Ở ĐÂU. Mệnh đề này chỉ định hàng cụ thể phải được cập nhật.
Sau khi thực thi câu lệnh CẬP NHẬT, đầu ra sẽ hiển thị các số liệu thống kê liên quan đến việc thực thi câu lệnh
Sau đây là các chi tiết được hiển thị
- Một tuyên bố đã được thực hiện
- Thông báo hiển thị số hàng đã được cập nhật và nếu có bất kỳ cảnh báo nào
Để xác minh đầu ra của câu lệnh UPDATE, hãy thực hiện lại câu lệnh SELECT để xem sự thay đổi trong ID email
Ảnh chụp bảng trước
empNumfirstNamelastNameemaildeptNum1008OliverBaileyob@gmail. com3
Truy vấn
UPDATE employees SET email = “oliver.bailey@gmail.com” WHERE empNum = 1008 AND email = “ob@gmail.com” ;
Ảnh chụp bảng sau
empNumfirstNamelastNameemaildeptNum1008OliverBaileyoliver. bailey@gmail. com3
#2] MySQL Cập nhật nhiều cột
Cú pháp cập nhật nhiều cột bằng câu lệnh UPDATE cũng giống như cú pháp cập nhật một cột. Một câu lệnh SET sẽ có nhiều tên cột cùng với giá trị mới của nó phải được đặt, được phân tách bằng dấu phẩy
Hãy xem hàng mà chúng ta cần cập nhật. Hàng có mã số nhân viên là 1003
Tại đây, chúng tôi sẽ thử và cập nhật họ từ “Mary” thành “Margaret” và sau đó là ID email từ ml@gmail. com đến margaret. langaley@gmail. com
Sau đây là truy vấn CẬP NHẬT. Hãy quan sát các tên cột được phân tách bằng dấu phẩy
Đầu ra của việc thực hiện trên hiển thị số liệu thống kê giống như trong trường hợp trước
Sau đây là đầu ra cho cùng một bản ghi sau khi thực hiện câu lệnh CẬP NHẬT
Ảnh chụp bảng trước
empNumfirstNamelastNameemaildeptNum1003MaryLangleyml@gmail. com2
Truy vấn
UPDATE employees SET firstName = “Margaret”, email = “margaret.lagaley@gmail.com” WHERE empNum = 1003 AND firstName = “Mary” AND email = “ml@gmail.com” ;
Ảnh chụp bảng sau
empNumfirstNamelastNameemaildeptNum1003MargaretLangleymargaret. langley@gmail. com3
#3] Cập nhật MySQL với chức năng REPLACE
Hãy xem thêm về cách sử dụng hàm REPLACE để CẬP NHẬT một hàng trong bảng. Đây là hồ sơ mục tiêu của chúng tôi mà chúng tôi muốn cập nhật
Bản ghi dưới đây dành cho nhân viên mã số 1010. Chúng tôi sẽ nhắm mục tiêu cập nhật ID email từ ja@gmail. đến với jacob. armstrong@gmail. com
Hãy sử dụng truy vấn CẬP NHẬT sau đây với hàm REPLACE sẽ cập nhật ID email
Sau đây là các tham số được truyền trong hàm REPLACE. Cả 3 tham số đều có tính chất vị trí i. e. thứ tự của các tham số không thể thay đổi
Tham số thứ nhất – Chứa tên của ID email.
Tham số thứ 2 – Chứa ID email TỪ sẽ được thay đổi.
Tham số thứ 3 – Chứa ID email ĐẾN là giá trị mới.
Sau đây là ảnh chụp nhanh của bảng sau khi thực thi câu lệnh CẬP NHẬT
Ảnh chụp bảng trước
empNumfirstNamelastNameemaildeptNum1010JacobArmstrongja@gmail. com4
Truy vấn
UPDATE employees SET email = REPLACE[email, “ja@gmail.com”, jacob.armstrong@gmail.com] WHERE empNum = 1010 ;
Ảnh chụp bảng sau
empNumfirstNamelastNameemaildeptNum1010JacobArmstrongjacob. armstrong@gmail. com4
#4] CẬP NHẬT MySQL Sử dụng Câu lệnh SELECT
Trong loại CẬP NHẬT này, giá trị mới cho cột được cập nhật được tìm nạp bằng câu lệnh CHỌN trong truy vấn con. Vì vậy, hãy lấy một ví dụ ở đây từ bảng "nhân viên" của chúng tôi. Đây là hồ sơ mục tiêu của chúng tôi mà chúng tôi muốn cập nhật
Trong trường hợp này, chúng tôi sẽ cập nhật số bộ phận i. e. cột deptNum, sử dụng các bảng phòng ban. Nếu chúng ta nhìn vào bảng các phòng ban, deptNum = 5 tương ứng với Berlin. Hãy di chuyển nhân viên này đến Charlotte tại deptNum = 2
Để đạt được nhiệm vụ này, câu lệnh CẬP NHẬT sau đây được sử dụng
Để xác minh đầu ra của câu lệnh CẬP NHẬT của chúng tôi, hãy thực hiện câu lệnh CHỌN
Như hình trên, giá trị cho cột deptNum đã được cập nhật thành “2”
Ảnh chụp bảng trước
empNumfirstNamelastNameemaildeptNum1005PeterLeepl@gmail. com5
deptNumThành phốQuốc gia1New YorkHoa Kỳ2CharlotteHoa Kỳ3ChicagoHoa Kỳ4LondonAnh5BerlinĐức6MumbaiẤn Độ7RomeÝ
Truy vấn
<UPDATE employees SET deptNum = [SELECT deptNum FROM departments WHERE city = "Charlotte" ] WHERE empNum = 1005 ;
Ảnh chụp bảng sau
empNumfirstNamelastNameemaildeptNum1005PeterLeepl@gmail. com2
#5] CẬP NHẬT MySQL Nhiều hàng
Đôi khi, chúng tôi có thể gặp phải yêu cầu phải cập nhật một hoặc nhiều cột cho nhiều hàng có giá trị khác nhau
Ví dụ: chúng tôi muốn tặng một số tiền thưởng cụ thể cho bộ phận khôn ngoan. e. tất cả nhân viên trong một bộ phận sẽ nhận được một số tiền thưởng cụ thể
Cú pháp chung như sau
UPDATE TAB1 SET COL2 = CASE WHEN condition1 THEN value1 WHEN condition2 THEN value2 …. ELSE result1 END;
Để giải thích điều này bằng một ví dụ, hãy thêm một cột nữa vào bảng bộ phận. Chúng tôi sẽ thêm cột “tiền thưởng” vào bảng bộ phận. Ý tưởng là ấn định tỷ lệ thưởng cho từng bộ phận và tăng lương cho nhân viên theo tỷ lệ phần trăm đó tương ứng với từng bộ phận
Để đạt được điều này, chúng tôi sẽ thực hiện các câu lệnh ALTER sau để thêm một cột
ALTER TABLE departments ADD COLUMN bonus decimal[5,2];
Sau đây sẽ là cấu trúc bảng đăng những thay đổi trên. Các cột mới sẽ được thêm vào với giá trị NULL
Tiếp theo, hãy viết truy vấn CẬP NHẬT sẽ cập nhật phần trăm tiền thưởng cho từng bộ phận
Sau khi thực hiện câu lệnh trên, sau đây là ảnh chụp nhanh với các giá trị được cập nhật cho cột Tiền thưởng
Ảnh chụp bảng trước
deptNumCityCountryBonus1New YorkHoa KỳNULL2CharlotteHoa KỳNULL3ChicagoHoa KỳNULL4LondonAnhNULL5BerlinĐứcNULL6MumbaiẤn ĐộNULL7RomeÝNULL
Truy vấn
UPDATE departments SET bonus = CASE WHEN deptNum = 1 THEN 3.00 WHEN deptNum= 2 THEN 5.00 WHEN deptNum= 3 THEN 8.00 WHEN deptNum= 4 THEN 10.00 WHEN deptNum= 5 THEN 13.00 WHEN deptNum= 6 THEN 15.00 WHEN deptNum= 7 THEN 18.00 END;
Ảnh chụp bảng sau
deptNumThành phốQuốc giaBonus1New YorkHoa Kỳ32CharlotteHoa Kỳ53ChicagoHoa Kỳ84LondonAnh105BerlinĐức136MumbaiẤn Độ157RomeÝ18
#6] CẬP NHẬT MySQL Sử dụng Từ khóa INNER JOIN
THAM GIA là một trong những từ khóa quan trọng nhất trong các câu lệnh SQL. Thông thường, bạn có thể đã sử dụng nó trong câu lệnh SELECT
Về cơ bản có bốn loại câu lệnh THAM GIA
- THAM GIA BÊN TRONG. Tìm nạp các bản ghi phổ biến trong cả hai bảng
- CHỖ NỐI BÊN TRÁI. Tìm nạp tất cả các bản ghi từ bảng ở phía bên trái của từ khóa và các bản ghi phù hợp từ bảng ở phía bên phải của từ khóa
- QUYỀN THAM GIA. Tìm nạp tất cả các bản ghi từ bảng ở phía bên phải của từ khóa và các bản ghi phù hợp từ bảng ở phía bên trái của từ khóa
- THAM GIA BÊN NGOÀI. Tìm nạp tất cả các bản ghi từ cả hai bảng, với các bản ghi không khớp tương ứng được biểu thị dưới dạng NULL
MySQL mang đến cơ hội duy nhất để sử dụng THAM GIA ngay cả trong các câu lệnh CẬP NHẬT để thực hiện cập nhật giữa các bảng. Tuy nhiên, nó chỉ giới hạn ở INNER JOIN và LEFT JOIN
Cú pháp chung của câu lệnh CẬP NHẬT sử dụng từ khóa THAM GIA như sau
________số 8- Ở đây, câu lệnh CẬP NHẬT mong đợi ba mục dữ liệu
- Tên bảng, TAB1 và TAB2, trên đó phép nối đang được thực hiện
- Loại THAM GIA mà chúng tôi dự định thực hiện, INNER hoặc LEFT
- Sau đó, làm theo lệnh SET bằng cách sử dụng lệnh này, chúng tôi có thể cập nhật các giá trị cột trong/hoặc TAB1 và TAB2
- Cuối cùng, một mệnh đề WHERE để chỉ cập nhật những hàng phù hợp với tiêu chí của chúng tôi
Để giải thích điều này bằng một ví dụ, hãy thêm một cột nữa vào bảng Nhân viên. Chúng ta sẽ thêm cột “lương” vào bảng Nhân viên. Ý tưởng là tăng lương của nhân viên theo giá trị phần trăm tiền thưởng có trong cột tiền thưởng của bảng bộ phận
Để đạt được điều này, chúng tôi sẽ thực hiện các câu lệnh ALTER sau để thêm một cột
ALTER TABLE employees ADD COLUMN salarydecimal[7,2];
Tiếp theo, chúng tôi sẽ điền vào hai trường mới mà chúng tôi đã thêm. Đăng điền các giá trị, sau đây là nội dung của bảng
bảng nhân viên
empNumfirstNamelastNameemaildeptNumSalary1001AndrewsJackja@gmail. com130001002SchwatzMikems@gmail. com150001003LangleyMargaretmargaret. langley@gmail. com280001004HareraSandrash@gmail. com1100001005LeePeterpl@gmail. com2130001006KeithJennyjk@gmail. com2150001007SchmittJamesjs@gmail. com4180001008BaileyOliveroliver. bailey@gmail. com3210001009BekerHarryhb@gmail. com5240001010ArmstrongJacobjacob. armstrong@gmail. com427000
Bây giờ, hãy sử dụng từ khóa THAM GIA và cập nhật lương của tất cả nhân viên với phần trăm thưởng trong bảng của các phòng ban. Ở đây, deptNum là khóa mà hai bảng sẽ được so khớp
Sau đây là ảnh chụp nhanh về lương của nhân viên tính đến thời điểm hiện tại
Ảnh chụp nhanh từ bảng Departments như sau
Sau đây là truy vấn CẬP NHẬT sẽ cập nhật lương của nhân viên dựa trên phần trăm thưởng trong bảng của các phòng ban dựa trên cột khóa deptNum
Bây giờ, hãy xác minh mức lương của từng nhân viên sau khi tăng
Nếu bạn so sánh nó với ảnh chụp trước đó, thì bạn có thể dễ dàng hiểu phần trăm thưởng được thêm vào lương
Tất cả nhân viên phải cổ vũ
Ảnh chụp bảng trước
empNumfirstNamelastNameemaildeptNumSalary1001AndrewsJackja@gmail. com130001002SchwatzMikems@gmail. com150001003LangleyMargaretmargaret. langley@gmail. com280001004HareraSandrash@gmail. com1100001005LeePeterpl@gmail. com2130001006KeithJennyjk@gmail. com2150001007SchmittJamesjs@gmail. com4180001008BaileyOliveroliver. bailey@gmail. com3210001009BekerHarryhb@gmail. com5240001010ArmstrongJacobjacob. armstrong@gmail. com427000
deptNumThành phốQuốc giaBonus1New YorkHoa Kỳ32CharlotteHoa Kỳ53ChicagoHoa Kỳ84LondonAnh105BerlinĐức136MumbaiẤn Độ157RomeÝ18
Truy vấn
UPDATE employees SET email = “oliver.bailey@gmail.com” WHERE empNum = 1008 AND email = “ob@gmail.com” ;0
Ảnh chụp bảng sau
empNumfirstNamelastNameemaildeptNumSalary1001AndrewsJackja@gmail. com13182. 71002SchwatzMikems@gmail. com15304. 51003LangleyMargaretmargaret. langley@gmail. com288201004HareraSandrash@gmail. com1106091005LeePeterpl@gmail. com214332. 51006KeithJennyjk@gmail. com216537. 51007SchmittJamesjs@gmail. com4217801008BaileyOliveroliver. bailey@gmail. com324494. 41009BekerHarryhb@gmail. com530645. 61010ArmstrongJacobjacob. armstrong@gmail. com432670
#7] CẬP NHẬT MySQL Sử dụng Từ khóa LEFT JOIN
Như đã giải thích trong phần trước, có hai loại THAM GIA được cho phép trong CẬP NHẬT MySQL. Chúng ta đã thấy UPDATE sử dụng INNER JOIN
Hãy bắt đầu với CẬP NHẬT bằng cách sử dụng LEFT JOIN
Thí dụ
Chúng tôi có một nhân viên mới chưa được phân công vào bất kỳ bộ phận nào. Nhưng chúng tôi phải thưởng cho tất cả những người mới thuê 1%. Bây giờ, vì nhân viên mới không được chỉ định cho bất kỳ bộ phận nào, chúng tôi sẽ không thể nhận được bất kỳ thông tin phần trăm tiền thưởng nào từ bảng đó. Trong trường hợp như vậy, chúng tôi sẽ CẬP NHẬT mức lương cho nhân viên mới bằng cách sử dụng LEFT JOIN
Để đạt được điều này, hãy thêm một nhân viên mới vào cơ sở dữ liệu nhân viên
UPDATE employees SET email = “oliver.bailey@gmail.com” WHERE empNum = 1008 AND email = “ob@gmail.com” ;1
Sau đây là bản ghi mới mà chúng tôi đã thêm
bảng nhân viên
empNumfirstNamelastNameemaildeptNumSalary1001AndrewsJackja@gmail. com131831002SchwatzMikems@gmail. com153051003LangleyMargaretmargaret. langley@gmail. com288201004HareraSandrash@gmail. com1106091005LeePeterpl@gmail. com2143331006KeithJennyjk@gmail. com2165381007SchmittJamesjs@gmail. com4217801008BaileyOliveroliver. bailey@gmail. com3244941009BekerHarryhb@gmail. com5306461010ArmstrongJacobjacob. armstrong@gmail. com4326701011HanksTomth@gmail. comNULL10000
Tiếp theo, chúng tôi sẽ thưởng cho Tom 1% trên số tiền lương của anh ấy bằng cách sử dụng câu lệnh UPDATE với mệnh đề LEFT JOIN
Đưa ra dưới đây là mức lương của TOM sau khi tăng
Nếu so với ảnh chụp trước thì bạn dễ hiểu % thưởng thêm vào lương
Ảnh chụp bảng trước
empNumfirstNamelastNameemaildeptNumSalary1011TomHanksth@gmail. comNULL10000
Truy vấn
UPDATE employees SET email = “oliver.bailey@gmail.com” WHERE empNum = 1008 AND email = “ob@gmail.com” ;2
Ảnh chụp bảng sau
empNumfirstNamelastNameemaildeptNumSalary1011TomHanksth@gmail. comNULL10100
Nên đọc =>> Tham gia MySQL
Câu hỏi thường gặp và câu trả lời
Q #1] Làm cách nào để cập nhật các thuộc tính trong MySQL?
Câu trả lời. Chúng ta có thể cập nhật [các] thuộc tính bằng cách sử dụng câu lệnh CẬP NHẬT của MySQL, với câu lệnh bắt đầu bằng từ khóa CẬP NHẬT theo sau là tên bảng. Tiếp theo là mệnh đề SET theo sau là tên cột và mệnh đề WHERE
Q #2] Làm cách nào để bạn cập nhật nhiều bản ghi trong MySQL?
Câu trả lời. Như mô tả ở trên, trong phần “Cập nhật nhiều hàng”, chúng ta có thể cập nhật nhiều hàng cho một hoặc nhiều cột có giá trị giống nhau hoặc khác nhau bằng cách sử dụng câu lệnh CASE
Q #3] Chúng tôi có thể sử dụng THAM GIA trong truy vấn Cập nhật trong MySQL không?
Câu trả lời. Có, MySQL cho phép sử dụng THAM GIA trong các câu lệnh CẬP NHẬT. Tuy nhiên, nó chỉ giới hạn ở INNER và LEFT JOIN