PostgreSQL - Truy vấn UPDATE: Hướng dẫn thân thiện cho người mới bắt đầu

Xin chào các bạn yêu thích cơ sở dữ liệu! Hôm nay, chúng ta sẽ cùng lặn vào thế giới tuyệt vời của PostgreSQL và học tất tần tật về truy vấn UPDATE. Đừng lo lắng nếu bạn mới bắt đầu học lập trình - tôi sẽ dẫn dắt bạn từng bước một, giống như tôi đã làm cho hàng trăm sinh viên trong những năm dạy học của mình. Vậy, hãy lấy một tách cà phê (hoặc trà, nếu đó là sở thích của bạn), và chúng ta cùng bắt đầu nhé!

PostgreSQL - Update Query

Truy vấn UPDATE là gì?

Trước khi chúng ta đi vào chi tiết, hãy hiểu rõ truy vấn UPDATE là gì. Hãy tưởng tượng bạn có một sổ địa chỉ số (đó chính là bản chất của bảng cơ sở dữ liệu). Bây giờ, bạn bè của bạn chuyển đến một ngôi nhà mới. Bạn sẽ không tạo một mục nhập mới cho họ, phải không? Bạn sẽ chỉ cập nhật địa chỉ hiện tại của họ. Đó chính xác là điều mà truy vấn UPDATE làm trong PostgreSQL - nó sửa đổi dữ liệu hiện có trong bảng.

Cú pháp của truy vấn UPDATE

Bây giờ, hãy nhìn vào cú pháp cơ bản của truy vấn UPDATE trong PostgreSQL:

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

Hãy phân tích này:

  1. UPDATE table_name: Đây chỉ định bảng bạn muốn cập nhật.
  2. SET column1 = value1, column2 = value2, ...: Đây là nơi bạn chỉ định các cột bạn muốn thay đổi và giá trị mới bạn muốn thiết lập.
  3. WHERE condition: Điều này rất quan trọng! Nó xác định哪些行 sẽ được cập nhật. Nếu bạn bỏ qua điều này, tất cả các hàng trong bảng sẽ được cập nhật!

Ví dụ về truy vấn UPDATE

Ví dụ 1: Cập nhật cơ bản

Giả sử chúng ta có một bảng叫做 employees với các cột id, name, và salary. Chúng ta muốn tăng lương cho tất cả mọi người 10%. Đây là cách chúng ta làm:

UPDATE employees
SET salary = salary * 1.1;

Truy vấn này sẽ tăng lương của mọi người 10%. Lưu ý rằng chúng ta không sử dụng mệnh đề WHERE, vì vậy nó ảnh hưởng đến tất cả các hàng.

Ví dụ 2: Cập nhật với điều kiện

Bây giờ, giả sử chúng ta chỉ muốn tăng lương cho nhân viên có ID nhỏ hơn 1000:

UPDATE employees
SET salary = salary * 1.1
WHERE id < 1000;

Truy vấn này sẽ chỉ cập nhật lương của nhân viên có ID nhỏ hơn 1000.

Ví dụ 3: Cập nhật nhiều cột

Đôi khi, bạn có thể muốn cập nhật hơn một cột cùng một lúc. Giả sử chúng ta muốn cập nhật cả lương và chức danh cho một nhân viên cụ thể:

UPDATE employees
SET salary = 75000, job_title = 'Senior Developer'
WHERE id = 1234;

Truy vấn này cập nhật cả lương và chức danh cho nhân viên có ID 1234.

Practices và Lời khuyên

  1. Always use WHERE: Trừ khi bạn thực sự muốn cập nhật mỗi hàng, hãy luôn bao gồm mệnh đề WHERE. Tôi từng có một sinh viên vô tình tăng lương CEO cho tất cả mọi người trong công ty!

  2. Use transactions: Đối với các cập nhật quan trọng, hãy bao bọc truy vấn của bạn trong một giao dịch. Điều này cho phép bạn rollback nếu có điều gì đó xảy ra sai:

BEGIN;
UPDATE employees SET salary = salary * 2;
-- Ồ! Chúng ta không có ý định gấp đôi lương của mọi người!
ROLLBACK;
  1. Test with SELECT first: Trước khi chạy một truy vấn UPDATE, hãy kiểm tra mệnh đề WHERE của bạn với một truy vấn SELECT để chắc chắn rằng bạn đang nhắm đến đúng hàng:
SELECT * FROM employees WHERE id < 1000;
-- Nếu điều này trông tốt, sau đó chạy:
UPDATE employees SET salary = salary * 1.1 WHERE id < 1000;
  1. Use RETURNING: PostgreSQL có một tính năng hay là cho phép bạn thấy những gì đã được cập nhật:
UPDATE employees
SET salary = salary * 1.1
WHERE id = 1234
RETURNING id, name, salary;

Điều này sẽ hiển thị cho bạn các hàng đã được cập nhật, điều này rất hữu ích cho việc xác minh.

Phương pháp UPDATE phổ biến

Dưới đây là bảng các phương pháp UPDATE phổ biến trong PostgreSQL, được trình bày theo định dạng Markdown:

Phương pháp Mô tả Ví dụ
Basic UPDATE Cập nhật các cột cho tất cả các hàng hoặc những hàng thỏa mãn điều kiện UPDATE employees SET salary = 50000 WHERE department = 'IT'
UPDATE với tính toán Cập nhật một cột dựa trên giá trị hiện tại của nó UPDATE products SET price = price * 1.1
UPDATE với truy vấn con Sử dụng một truy vấn con để xác định哪些 hàng sẽ được cập nhật hoặc giá trị nào sẽ được thiết lập UPDATE orders SET status = 'shipped' WHERE id IN (SELECT order_id FROM shipments WHERE ship_date = CURRENT_DATE)
UPDATE với JOIN Cập nhật dựa trên dữ liệu trong bảng khác UPDATE employees e SET salary = e.salary * 1.1 FROM departments d WHERE e.dept_id = d.id AND d.name = 'Sales'
UPDATE với CASE Cho phép logic điều kiện trong cập nhật UPDATE employees SET bonus = CASE WHEN sales > 10000 THEN 1000 ELSE 500 END

Nhớ rằng, mỗi phương pháp có trường hợp sử dụng riêng, và khi bạn trở nên thoải mái hơn với PostgreSQL, bạn sẽ phát triển trực giác để biết khi nào nên sử dụng phương pháp nào.

Kết luận

Và thế là bạn đã có nó, các bạn! Bạn vừa bước ra thế giới của truy vấn UPDATE trong PostgreSQL. Nhớ rằng, với quyền lực lớn đi kèm với trách nhiệm lớn - hãy luôn kiểm tra mệnh đề WHERE trước khi nhấn nút thực thi!

Thực hành là chìa khóa của thành công, vì vậy đừng ngần ngại thiết lập một cơ sở dữ liệu thử nghiệm và thử các truy vấn này cho chính bạn. Trước khi bạn biết điều đó, bạn sẽ cập nhật dữ liệu như một chuyên gia!

Chúc các bạn thành công và may mắn trong việc quản lý cơ sở dữ liệu của bạn!

Credits: Image by storyset