Câu lệnh UPDATE trong MySQL
Cập nhật dữ liệu là một trong những nhiệm vụ quan trọng nhất khi bạn làm việc với cơ sở dữ liệu. Trong hướng dẫn này, bạn sẽ học cách sử dụng câu lệnh UPDATE
trong MySQL để cập nhật dữ liệu trong bảng.
Giới thiệu về câu lệnh UPDATE trong MySQL
Câu lệnh UPDATE
cập nhật dữ liệu trong một bảng. Nó cho phép bạn thay đổi các giá trị trong một hoặc nhiều cột của một hàng hoặc nhiều hàng.
Phần sau minh họa cú pháp cơ bản của câu lệnh UPDATE
:
UPDATE [LOW_PRIORITY] [IGNORE] table_name
SET
column_name1 = expr1,
column_name2 = expr2,
...
[WHERE
condition];
Trong cú pháp này:
- Đầu tiên, chỉ định tên của bảng mà bạn muốn cập nhật dữ liệu sau từ khóa
UPDATE
. - Thứ hai, chỉ định cột bạn muốn cập nhật và giá trị mới trong mệnh đề
SET
. Để cập nhật giá trị trong nhiều cột, bạn sử dụng danh sách các phép gán được phân tách bằng dấu phẩy bằng cách cung cấp một giá trị trong phép gán của mỗi cột dưới dạng giá trị thường, biểu thức hoặc truy vấn con. - Thứ ba, chỉ định các hàng sẽ được cập nhật bằng cách sử dụng một điều kiện trong mệnh đề
WHERE
. Mệnh đềWHERE
là tùy chọn. Nếu bạn bỏ qua nó, câu lệnhUPDATE
sẽ sửa đổi tất cả các hàng trong bảng.
Chú ý rằng mệnh đề
WHERE
rất quan trọng mà bạn không được quên. Đôi khi, bạn có thể chỉ muốn cập nhật một hàng; Tuy nhiên, bạn có thể quên mệnh đềWHERE
và vô tình cập nhật tất cả các hàng của bảng.
MySQL hỗ trợ hai bổ ngữ trong câu lệnh UPDATE
.
- Trình sửa đổi
LOW_PRIORITY
hướng dẫn câu lệnhUPDATE
trì hoãn cập nhật cho đến khi không có kết nối đọc dữ liệu từ bảng.LOW_PRIORITY
có hiệu lực đối với các công cụ lưu trữ chỉ sử dụng khóa cấp bảng, chẳng hạn nhưMyISAM
,MERGE
vàMEMORY
. - Công cụ sửa đổi
IGNORE
cho phép câu lệnhUPDATE
tiếp tục cập nhật các hàng ngay cả khi đã xảy ra lỗi. Các hàng gây ra lỗi như xung đột khóa trùng lặp không được cập nhật.
Ví dụ về câu lệnh UPDATE trong MySQL
Hãy thực hành câu lệnh UPDATE
.
Sử dụng UPDATE trong MySQL để sửa đổi các giá trị trong một cột đơn
Xem bảng employees
sau từ cơ sở dữ liệu mẫu.

Trong ví dụ này, chúng ta sẽ cập nhật email của Mary Patterson
thành email mới [email protected]
.
Trước tiên, hãy tìm email của Mary từ bảng employees
bằng cách sử dụng câu lệnh SELECT
sau:
SELECT
firstname,
lastname,
email
FROM
employees
WHERE
employeeNumber = 1056;
Đầu ra:

Thứ hai, cập nhật địa chỉ email của Mary
thành email mới [email protected]
:
UPDATE employees
SET
email = 'mary.[email protected]'
WHERE
employeeNumber = 1056;
MySQL đã đưa ra số hàng bị ảnh hưởng:
1 row(s) affected
Trong câu lệnh UPDATE
này:
- Mệnh đề
WHERE
chỉ định hàng có mã nhân viên là1056
sẽ được cập nhật. - Mệnh đề
SET
đặt giá trị của cộtemail
thành email mới.
Thứ ba, thực hiện lại câu lệnh SELECT
để xác minh thay đổi:
SELECT
firstname,
lastname,
email
FROM
employees
WHERE
employeeNumber = 1056;
Đầu ra:

Sử dụng UPDATE trong MySQL để sửa đổi các giá trị trong nhiều cột
Để cập nhật các giá trị trong nhiều cột, bạn cần chỉ định các thành phần trong mệnh đề SET
. Ví dụ: câu lệnh sau cập nhật cả cột họ và email của nhân viên mã 1056:
UPDATE employees
SET
lastname = 'Hill',
email = '[email protected]'
WHERE
employeeNumber = 1056;
Hãy xác minh các thay đổi:
SELECT
firstname,
lastname,
email
FROM
employees
WHERE
employeeNumber = 1056;
Đầu ra:

Sử dụng UPDATE trong MySQL để thay thế chuỗi
Ví dụ sau cập nhật các phần miền của tất cả các email cả tất cả Sales Reps
có mã văn phòng là 6
:
UPDATE employees
SET email = REPLACE(email,'@classicmodelcars.com','@mysqltutorial.org')
WHERE
jobTitle = 'Sales Rep' AND
officeCode = 6;
Trong ví dụ này, hàm REPLACE()
thay thế @classicmodelcars.com
trong cột email bằng @mysqltutorial.org
.
Sử dụng UPDATE trong MySQL để cập nhật các hàng được trả về bởi một câu lệnh SELECT
Bạn có thể cung cấp các giá trị cho mệnh đề SET
từ một câu lệnh SELECT
truy vấn dữ liệu từ các bảng khác.
Ví dụ, trong bảng customers
một số khách hàng không có bất kỳ đại diện bán hàng nào. Giá trị của cột saleRepEmployeeNumber
là NULL
như sau:
SELECT
customername,
salesRepEmployeeNumber
FROM
customers
WHERE
salesRepEmployeeNumber IS NULL;
Đầu ra:

Chúng ta có thể lấy đại diện bán hàng và cập nhật cho những khách hàng đó.
Để thực hiện việc này, chúng ta có thể chọn ngẫu nhiên một nhân viên có chức danh Sales Rep
từ bảng employees
và cập nhật cho bảng employees
.
Truy vấn này chọn một nhân viên ngẫu nhiên từ bảng employees
có chức danh Sales Rep
.
SELECT
employeeNumber
FROM
employees
WHERE
jobtitle = 'Sales Rep'
ORDER BY RAND()
LIMIT 1;
Để cập nhật cột số nhân viên đại diện bán hàng trong bảng customers
, chúng ta đặt truy vấn ở trên trong mệnh đề SET
của câu lệnh UPDATE
như sau:
UPDATE customers
SET
salesRepEmployeeNumber = (SELECT
employeeNumber
FROM
employees
WHERE
jobtitle = 'Sales Rep'
ORDER BY RAND()
LIMIT 1)
WHERE
salesRepEmployeeNumber IS NULL;
Nếu bạn truy vấn dữ liệu từ bảng employees
, bạn sẽ thấy rằng mọi khách hàng đều có một đại diện bán hàng. Nói cách khác, truy vấn sau không trả về hàng nào.
SELECT
salesRepEmployeeNumber
FROM
customers
WHERE
salesRepEmployeeNumber IS NULL;
Trong hướng dẫn này, bạn đã học cách sử dụng câu lệnh UPDATE
trong MySQL để cập nhật dữ liệu trong bảng cơ sở dữ liệu.