Bài MySQL 34: Lệnh REPLACE trong MySQL

0
112

Xin chào các bạn, trong bài học ngày hôm nay mình sẽ hướng dẫn các bạn sử dụng lệnh REPLACE trong MySQL để chèn hoặc cập nhật dữ liệu trong các bảng cơ sở dữ liệu.

Giới thiệu

Câu lệnh REPLACE là một phần mở rộng của MySQL theo chuẩn SQL. Câu lệnh REPLACE hoạt động như sau:

  • Nếu hàng mới không tồn tại, câu lệnh REPLACE sẽ chèn một hàng mới.
  • Nếu hàng mới đã tồn tại, câu lệnh REPLACE sẽ xóa hàng cũ trước rồi chèn một hàng mới. Trong một số trường hợp, câu lệnh REPLACE chỉ cập nhật hàng hiện tại.

Để xác định xem hàng mới đã tồn tại trong bảng chưa, các bạn có thể sử dụng PRIMARY KEY hoặc UNIQUE KEY. Nếu bảng không có một trong các chỉ mục này, câu lệnh REPLACE  sẽ tương đương với câu lệnh INSERT.

Lưu ý: các bạn cần phân biệt rõ hàm string REPLACE() với câu lệnh REPLACE trong MySQL.

Ví dụ về câu lệnh REPLACE

Chúng ta hãy xem một ví dụ về việc sử dụng câu lệnh REPLACE để hiểu rõ hơn về cách hoạt động của nó.

Đầu tiên, tạo một bảng mới có tên là cities như sau:

Tiếp theo insert một vài hàng vào bảng cities:

Chúng ta truy vấn dữ liệu từ bảng cities để xác định việc chèn đã thành công hay chưa.

Sau đó, giả sử chúng ta muốn cập nhật dân số của thành phố New York thành 1008256. Chúng ta có thể sử dụng câu lệnh UPDATE như sau:

Chúng ta truy vấn dữ liệu từ bảng cities một lần nữa để xác minh việc cập nhật.

Sau đó, sử dụng câu lệnh REPLACE để cập nhật dân số của thành phố Los Angeles thành 3696820.

Cuối cùng, truy vấn lại dữ liệu của bảng cities để kiểm tra:

kết quả:

Bây giờ cột name có giá trị là NULL, như vậy câu lệnh REPLACE đã hoạt động như sau:

  • Câu lệnh REPLACE đầu tiên chèn hàng mới vào bảng cities với thông tin được cung cấp bởi danh sách cột. Việc chèn không thành công vì hàng có id 2 đã tồn tại trong bảng cities, do đó MySQL làm báo lỗi khóa trùng lặp.
  • Câu lệnh REPLACE sau đó cập nhật hàng có khóa được chỉ định trong giá trị của cột id. Trong quá trình bình thường, nó sẽ xóa hàng cũ với id xung đột đầu tiên và sau đó chèn một hàng mới.

Các bạn có thể thấy rằng câu lệnh REPLACE đã không xóa hàng cũ và chèn hàng mới vì giá trị của cột id là 2 thay vì 4.

Kết luận

Như vậy trong bài học ngày hôm nay mình đã hướng dẫn các bạn sử dụng câu lệnh UPDATE để chèn hoặc cập nhật dữ liệu trong các bảng cơ sở dữ liệu. Trong bài học tiếp theo chúng ta sẽ tìm hiểu về khóa chính(primary key) trong MySQL.

Chúc các bạn học tập tốt!

BÌNH LUẬN

Vui lòng nhập bình luận của bạn
Vui lòng nhập tên của bạn ở đây