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.
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:
UPDATE
.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.WHERE
. Mệnh đề WHERE
là tùy chọn. Nếu bạn bỏ qua nó, câu lệnh UPDATE
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
.
LOW_PRIORITY
hướng dẫn câu lệnh UPDATE
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
.IGNORE
cho phép câu lệnh UPDATE
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.Hãy thực hành câu lệnh UPDATE
.
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 mary.patterso@classicmodelcars.com
.
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 mary.patterson@classicmodelcars.com
:
UPDATE employees
SET
email = 'mary.patterson@classicmodelcars.com'
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:
WHERE
chỉ định hàng có mã nhân viên là 1056
sẽ được cập nhật.SET
đặt giá trị của cột email
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:
Để 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 = 'mary.hill@classicmodelcars.com'
WHERE
employeeNumber = 1056;
Hãy xác minh các thay đổi:
SELECT
firstname,
lastname,
email
FROM
employees
WHERE
employeeNumber = 1056;
Đầu ra:
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
.
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.
Bạn có thể vui lòng tắt trình chặn quảng cáo ❤️ để hỗ trợ chúng tôi duy trì hoạt động của trang web.
Trong hướng dẫn này, bạn sẽ học cách sử dụng toán tử MySQL IS NULLđể kiểm tra xem một giá trị có NULL hay không.
Trong hướng dẫn này, bạn sẽ học cách sử dụng câu lệnh UPDATE JOIN trong MySQL để thực hiện cập nhật bảng chéo.
Trong hướng dẫn này, bạn sẽ học cách sử dụng mệnh đề LIMIT trong MySQL để hạn chế số hàng được trả về bởi một truy vấn.
Trong hướng dẫn này, bạn sẽ học cách sử dụng toán tử LIKE trong MySQL để truy vấn dữ liệu dựa trên một mẫu được chỉ định.