Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cập nhật dữ liệu trong cơ sở dữ liệu MySQL

Trang này giải thích cách cập nhật dữ liệu hiện có trong cơ sở dữ liệu MySQL.

Vì vậy, chúng tôi đã thêm dữ liệu vào cơ sở dữ liệu của mình. Nhưng bây giờ chúng tôi nhận ra rằng dữ liệu của chúng tôi có sai sót. Táo đã được chỉ định một UnitId trong tổng số 1 - nhưng đây phải là 2 .

Bạn có thể xem điều này tại đây:

Không vấn đề gì. Chúng tôi sẽ chỉ cập nhật hồ sơ đó.

UPDATE Tuyên bố

UPDATE của SQL cho phép chúng tôi cập nhật dữ liệu trong cơ sở dữ liệu của chúng tôi. Chúng tôi có thể sử dụng câu lệnh này để thay đổi ID đơn vị từ 1 thành 2 . Để thực hiện việc này, chúng tôi sử dụng WHERE để chỉ định bản ghi chính xác mà chúng tôi cần cập nhật. Như thế này:

UPDATE Fruit
SET UnitId = 2
WHERE FruitId = 1;

Nói chung, bạn nên thực hiện UPDATE , để chỉ định trường ID của bản ghi mà bạn đang cố cập nhật (hoặc bất kỳ khóa chính của nó là gì). Điều này giúp bảo vệ khỏi việc vô tình cập nhật / các bản ghi sai. Trong ví dụ này, chúng tôi biết rằng táo có FruitId trong tổng số 1 . Nhưng không phải lúc nào bạn cũng có thể biết ID của bản ghi mà bạn đang cố gắng cập nhật. Trong trường hợp đó, bạn có thể làm như sau:

UPDATE Fruit
SET UnitId = 2
WHERE FruitName = 'Apple' AND UnitId = 1;

Chúng ta có thể theo dõi một trong hai điều đó bằng SELECT tuyên bố và đây là kết quả:

Lưu ý rằng DateUpdated cột cũng đã được cập nhật, mặc dù chúng tôi không chỉ định bản cập nhật cho cột đó. Điều này là do, khi chúng tôi tạo bảng, chúng tôi đặt cột đó được cập nhật với ngày / giờ hiện tại mỗi khi có bản cập nhật cho bản ghi.

Đây là mã chúng tôi đã sử dụng khi tạo cột đó:

DateUpdated TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

Cụ thể hơn, đó là ON UPDATE CURRENT_TIMESTAMP dẫn đến cột vừa được cập nhật khi chúng tôi chạy UPDATE tuyên bố.

Cập nhật An toàn

Chúng tôi có thể dễ dàng xây dựng UPDATE của chúng tôi lệnh như thế này (không có AND UnitId = 1 ):

UPDATE Fruit
SET UnitId = 2
WHERE FruitName = 'Apple';

Tuy nhiên, bạn có thể gặp phải lỗi sau nếu cố gắng thực hiện điều đó:

Chế độ cập nhật an toàn

Nếu bạn gặp phải lỗi trên, đó là do kết nối MySQL của bạn đang chạy ở chế độ Cập nhật An toàn. Điều này giúp ngăn chúng tôi vô tình ghi đè một lượng lớn dữ liệu. Trên thực tế, nếu chúng ta đã quên bao gồm WHERE mệnh đề chúng tôi sẽ cập nhật từng bản ghi trong bảng!

Có, việc chạy mã sau sẽ dẫn đến mọi bản ghi trong bảng của chúng tôi sẽ được cập nhật thành Banana :

UPDATE Fruit
SET FruitName = 'Banana'

Vì vậy, có lợi ích thực sự khi chạy ở chế độ Cập nhật An toàn.

Tuy nhiên, nếu bạn thực sự cần thực hiện truy vấn đó (hoặc nếu tất cả trái cây của bạn thực sự đã biến thành chuối), bạn có thể thực hiện một trong những cách sau:

  • Sửa đổi truy vấn của bạn để bao gồm KEY cột. Chúng tôi đã làm điều này trong các ví dụ ở đầu trang này.
  • Tắt chế độ Cập nhật An toàn.

Tắt chế độ cập nhật an toàn

Nếu bạn thấy rằng bạn cần thực hiện UPDATE hoạt động mà không sử dụng KEY , bạn luôn có thể tắt chế độ Cập nhật An toàn.

Để tắt chế độ Cập nhật An toàn, hãy chạy lệnh sau trước khi chạy UPDATE của bạn tuyên bố:

set sql_safe_updates = 0;

Bạn nên khôi phục cài đặt về trạng thái trước đó sau khi hoàn tất - đặc biệt là với các cài đặt có thể có tác động rộng rãi như cài đặt này.

Để bật chế độ Cập nhật An toàn, hãy chạy như sau:

set sql_safe_updates = 1;

Trên thực tế, bạn có thể chạy mọi thứ cùng một lúc, như sau:

set sql_safe_updates = 0;

UPDATE Fruit
SET UnitId = 2
WHERE FruitName = 'Apple';

select * from Fruit;

set sql_safe_updates = 1;

Cập nhật nhiều trường

Bạn có thể cập nhật nhiều trường bằng cách sử dụng dấu phẩy để phân tách từng phép gán trường. Như thế này:

UPDATE Fruit
SET FruitName = 'Red Grapes', Inventory = '11'
WHERE FruitId = 5;

Kết quả:


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chuỗi thoát thực và PDO

  2. Liên kết dự án không hoạt động trên Máy chủ Wamp

  3. Chuỗi thoát Python cho MySQL

  4. Cách thay thế khóa chính của Django bằng một số nguyên khác duy nhất cho bảng đó

  5. JSON_CONTAINS_PATH () Ví dụ trong MySQL