1. Giới thiệu

Câu lệnh UPDATE trong SQL được sử dụng để sửa đổi dữ liệu hiện có trong bảng. Thay vì thêm dữ liệu mới như với câu lệnh INSERT, UPDATE cho phép bạn thay đổi thông tin của các bản ghi đã tồn tại dựa trên các điều kiện cụ thể. Đây là một trong những câu lệnh quan trọng giúp bạn duy trì và quản lý cơ sở dữ liệu một cách hiệu quả.

Trong bài viết này, chúng ta sẽ tìm hiểu cú pháp chi tiết, cách sử dụng UPDATE trong các trường hợp thực tế và cách áp dụng để cập nhật dữ liệu trong MySQL.

2. SQL UPDATE là gì?

Câu lệnh UPDATE trong SQL được sử dụng để cập nhật các bản ghi trong bảng. Bạn có thể sửa đổi giá trị của một hoặc nhiều cột trong bảng bằng cách sử dụng câu lệnh UPDATE, kèm theo đó là các điều kiện lọc bản ghi bằng WHERE.

Cú pháp tổng quát của SQL UPDATE:

shell
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
  • table_name: Tên bảng chứa các bản ghi mà bạn muốn cập nhật.
  • column1, column2, ...: Các cột mà bạn muốn thay đổi giá trị.
  • value1, value2, ...: Các giá trị mới mà bạn muốn cập nhật cho các cột tương ứng.
  • condition: Điều kiện giúp xác định các bản ghi cần cập nhật. Nếu không có điều kiện, tất cả các bản ghi trong bảng sẽ được cập nhật.

3. Cách sử dụng SQL UPDATE

a. Cập nhật một cột

Bạn có thể sử dụng UPDATE để cập nhật giá trị của một cột duy nhất trong các bản ghi thỏa mãn điều kiện.

Ví dụ 1: Cập nhật lương của tất cả nhân viên trong phòng ban "Sales"

shell
UPDATE employees
SET salary = salary * 1.10
WHERE department = 'Sales';

Trong ví dụ này, tất cả các nhân viên trong bộ phận "Sales" sẽ được tăng lương lên 10%. Điều kiện WHERE department = 'Sales' giúp giới hạn chỉ các nhân viên thuộc phòng ban này được cập nhật.

b. Cập nhật nhiều cột

Bạn cũng có thể cập nhật giá trị cho nhiều cột trong cùng một câu lệnh UPDATE.

Ví dụ 2: Cập nhật tên và tuổi của một nhân viên

shell
UPDATE employees
SET first_name = 'John', age = 35
WHERE employee_id = 101;

Trong ví dụ này, nhân viên có employee_id là 101 sẽ được thay đổi tên thành "John" và tuổi thành 35.

c. Cập nhật tất cả các bản ghi trong bảng

Nếu bạn không sử dụng điều kiện WHERE, tất cả các bản ghi trong bảng sẽ được cập nhật với giá trị mới.

Ví dụ 3: Tăng lương cho tất cả nhân viên

shell
UPDATE employees
SET salary = salary * 1.05;

Câu lệnh này sẽ tăng lương thêm 5% cho tất cả nhân viên trong bảng employees.

4. Các ví dụ nâng cao về SQL UPDATE

a. Cập nhật với toán tử so sánh

Bạn có thể sử dụng toán tử so sánh trong điều kiện WHERE để cập nhật các bản ghi thỏa mãn một điều kiện cụ thể.

Ví dụ 4: Tăng lương cho những nhân viên có lương nhỏ hơn 20 triệu

shell
UPDATE employees
SET salary = salary + 2000000
WHERE salary < 20000000;

Câu lệnh này sẽ tăng thêm 2 triệu cho những nhân viên có lương hiện tại nhỏ hơn 20 triệu.

b. Cập nhật với toán tử IN

Sử dụng toán tử IN trong điều kiện WHERE giúp bạn cập nhật các bản ghi mà giá trị của một cột nằm trong danh sách cụ thể.

Ví dụ 5: Cập nhật phòng ban cho các nhân viên có employee_id thuộc danh sách

shell
UPDATE employees
SET department = 'IT'
WHERE employee_id IN (102, 104, 106);

Câu lệnh này sẽ thay đổi phòng ban của các nhân viên có employee_id là 102, 104, và 106 thành "IT".

c. Cập nhật với toán tử BETWEEN

Bạn có thể sử dụng toán tử BETWEEN để cập nhật các bản ghi có giá trị nằm trong một khoảng nhất định.

Ví dụ 6: Cập nhật lương cho nhân viên có tuổi từ 30 đến 40

shell
UPDATE employees
SET salary = salary * 1.08
WHERE age BETWEEN 30 AND 40;

Câu lệnh này sẽ tăng lương thêm 8% cho những nhân viên có tuổi từ 30 đến 40.

d. Cập nhật với toán tử LIKE

Sử dụng toán tử LIKE trong WHERE để tìm kiếm và cập nhật các bản ghi có giá trị chuỗi phù hợp với một mẫu nhất định.

Ví dụ 7: Cập nhật thành phố cho các khách hàng có tên bắt đầu bằng chữ "A"

shell
UPDATE customers
SET city = 'Hà Nội'
WHERE first_name LIKE 'A%';

Câu lệnh này sẽ thay đổi thành phố thành "Hà Nội" cho tất cả các khách hàng có tên bắt đầu bằng chữ "A".

e. Cập nhật với giá trị NULL

Bạn có thể sử dụng UPDATE để thay đổi các giá trị NULL trong bảng. Điều này rất hữu ích khi bạn muốn cập nhật các trường dữ liệu còn thiếu.

Ví dụ 8: Cập nhật địa chỉ email cho những khách hàng chưa có thông tin

shell
UPDATE customers
SET email = 'unknown@example.com'
WHERE email IS NULL;

Câu lệnh này sẽ đặt địa chỉ email mặc định là "unknown@example.com" cho những khách hàng chưa có email (có giá trị NULL).

5. Một số lưu ý khi sử dụng SQL UPDATE

a. Cẩn thận khi không sử dụng WHERE

Nếu bạn không chỉ định điều kiện WHERE trong câu lệnh UPDATE, tất cả các bản ghi trong bảng sẽ được cập nhật. Điều này có thể gây ra hậu quả nghiêm trọng, vì toàn bộ dữ liệu trong bảng sẽ bị thay đổi.

Ví dụ:

shell
UPDATE employees
SET salary = 0;  -- Mọi nhân viên sẽ có mức lương bằng 0 nếu không có WHERE

b. Sử dụng LIMIT để giới hạn số bản ghi được cập nhật

Nếu bạn muốn giới hạn số lượng bản ghi được cập nhật, bạn có thể sử dụng từ khóa LIMIT. Tuy nhiên, không phải hệ quản trị cơ sở dữ liệu nào cũng hỗ trợ LIMIT trong câu lệnh UPDATE.

Ví dụ:

shell
UPDATE employees
SET salary = salary * 1.10
WHERE department = 'HR'
LIMIT 5;  -- Chỉ tăng lương cho 5 nhân viên đầu tiên trong bộ phận HR

c. Sử dụng ORDER BY để xác định thứ tự cập nhật

Bạn có thể sử dụng ORDER BY để chỉ định thứ tự cập nhật các bản ghi, thường kết hợp với LIMIT.

Ví dụ:

shell
UPDATE employees
SET salary = salary * 1.05
ORDER BY hire_date ASC
LIMIT 1;  -- Chỉ tăng lương cho nhân viên lâu năm nhất

d. Kiểm tra kết quả trước khi cập nhật

Trước khi chạy lệnh UPDATE, bạn nên kiểm tra kết quả của các bản ghi sẽ được cập nhật bằng cách chạy lệnh SELECT với cùng điều kiện WHERE.

Ví dụ:

shell
-- Kiểm tra trước khi cập nhật
SELECT * FROM employees
WHERE department = 'Sales';

6. Các ví dụ về SQL UPDATE

Ví dụ 1: Tăng lương 5% cho tất cả nhân viên trong phòng ban "Marketing"

shell
UPDATE employees
SET salary = salary * 1.05
WHERE department = 'Marketing';

Ví dụ 2: Thay đổi tên sản phẩm và giá cho một sản phẩm cụ thể

shell
UPDATE products
SET product_name = 'Smartphone', price = 15000000
WHERE product_id = 101;

Ví dụ 3: Cập nhật trạng thái đơn hàng cho các đơn hàng được đặt trước ngày 01/09/2023

shell
UPDATE orders
SET status = 'Delivered'
WHERE order_date < '2023-09-01';

7. Kết luận

Câu lệnh UPDATE trong SQL là một công cụ quan trọng giúp bạn sửa đổi và duy trì dữ liệu trong cơ sở dữ liệu. Với khả năng cập nhật một hoặc nhiều bản ghi, cũng như hỗ trợ nhiều loại điều kiện khác nhau, UPDATE là công cụ không thể thiếu khi làm việc với dữ liệu.

Để sử dụng hiệu quả câu lệnh UPDATE, bạn nên luôn cẩn trọng khi áp dụng, đặc biệt khi không sử dụng điều kiện WHERE, và nên kiểm tra kết quả trước khi cập nhật để tránh các sai sót không đáng có.

Hãy áp dụng các ví dụ trong bài viết này vào các bài tập và dự án thực tế của bạn trên CodeTutHub để nắm vững hơn về cách thao tác dữ liệu với SQL!