Trong PostgreSQL, lệnh UPDATE
được sử dụng để sửa đổi dữ liệu hiện có trong các hàng của bảng. Cú pháp cơ bản của lệnh UPDATE
như sau:
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
Cách hoạt động của UPDATE
- Chọn bảng để cập nhật:
- Lệnh
UPDATE
bắt đầu với việc chỉ định tên bảng (table_name
) mà bạn muốn sửa đổi dữ liệu.
- Xác định cột và giá trị mới:
- Mệnh đề
SET
được dùng để chỉ định cột nào cần thay đổi và giá trị mới của nó. Bạn có thể cập nhật một hoặc nhiều cột cùng lúc.
- Áp dụng điều kiện (WHERE):
WHERE
là mệnh đề tùy chọn để chỉ định các hàng sẽ được cập nhật. Nếu bạn bỏ qua WHERE
, tất cả các hàng trong bảng sẽ bị thay đổi. Điều này có thể gây ra các thay đổi không mong muốn nếu không cẩn thận.
- Trả về giá trị đã cập nhật:
- PostgreSQL có thể trả về số lượng hàng đã bị ảnh hưởng. Bạn có thể sử dụng mệnh đề
RETURNING
để trả về giá trị sau khi cập nhật.
Ví dụ cụ thể
1. Cập nhật một cột với điều kiện:
Giả sử bạn có bảng employees
với các cột name
, salary
. Bạn muốn tăng lương của nhân viên có tên là ‘John’ lên 1000:
UPDATE employees
SET salary = salary + 1000
WHERE name = 'John';
2. Cập nhật nhiều cột:
Bạn có thể cập nhật nhiều cột cùng lúc. Ví dụ, cập nhật lương và chức vụ của nhân viên ‘Sarah’:
UPDATE employees
SET salary = 2000, position = 'Manager'
WHERE name = 'Sarah';
3. Cập nhật tất cả các hàng:
Nếu không dùng điều kiện WHERE
, mọi hàng trong bảng sẽ bị cập nhật. Ví dụ, tăng lương của tất cả các nhân viên thêm 500:
UPDATE employees
SET salary = salary + 500;
4. Sử dụng mệnh đề RETURNING
:
Nếu bạn muốn kiểm tra kết quả cập nhật, bạn có thể sử dụng mệnh đề RETURNING
để trả về dữ liệu mới sau khi cập nhật. Ví dụ:
UPDATE employees
SET salary = salary + 500
WHERE name = 'John'
RETURNING name, salary;
Lưu ý quan trọng
- Chốt giao dịch: Nếu bạn sử dụng lệnh
UPDATE
trong một giao dịch lớn, hãy nhớ dùng COMMIT
để xác nhận thay đổi, hoặc ROLLBACK
nếu muốn hủy bỏ cập nhật.
- Khóa hàng: Khi bạn cập nhật một hàng, PostgreSQL sẽ khóa hàng đó để ngăn chặn xung đột với các giao dịch khác.
Hiệu suất và tối ưu hóa
Khi sử dụng UPDATE
với các bảng lớn, việc tối ưu hóa qua chỉ số (indexes) và giới hạn phạm vi qua WHERE
rất quan trọng để giảm thiểu thời gian xử lý.
Lệnh UPDATE
trong PostgreSQL linh hoạt và mạnh mẽ, cho phép bạn thực hiện nhiều loại cập nhật dữ liệu khác nhau từ đơn giản đến phức tạp.