Câu lệnh UPDATE trong MySQL

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ệ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.

  1. Trình sửa đổi 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, MERGEMEMORY.
  2. Công cụ sửa đổi 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.

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.

Ví dụ về câu lệnh UPDATE trong MySQL

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:

Ví dụ về câu lệnh UPDATE trong MySQL

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ộ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:

Ví dụ về câu lệnh UPDATE trong MySQL

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:

Ví dụ về câu lệnh UPDATE trong MySQL

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 saleRepEmployeeNumberNULL như sau:

SELECT 
    customername, 
    salesRepEmployeeNumber
FROM
    customers
WHERE
    salesRepEmployeeNumber IS NULL;

Đầu ra:

Ví dụ về câu lệnh UPDATE trong MySQL

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.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *