Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Cách cập nhật toàn bộ một hàng (row) trong MySQL

Để cập nhật toàn bộ các cột của một hàng trong MySQL, bạn dùng lệnh UPDATE liệt kê tất cả cột cần thay đổi, kết hợp mệnh đề WHERE với khóa chính để xác định chính xác hàng.

Cú pháp

UPDATE ten_bang 
SET cot1 = 'gia_tri_1', 
    cot2 = 'gia_tri_2', 
    cot3 = 'gia_tri_3',
    ...
WHERE cot_khoa_chinh = gia_tri_khoa;

Ví dụ minh họa

1. Tạo bảng

CREATE TABLE UpdateEntireRowDemo (
    Id INT NOT NULL AUTO_INCREMENT,
    Name VARCHAR(20),
    Age INT,
    Marks INT,
    PRIMARY KEY(Id)
);

2. Chèn dữ liệu

INSERT INTO UpdateEntireRowDemo(Name, Age, Marks) VALUES
('Sam', 23, 78),
('Mike', 21, 99),
('Carol', 26, 80),
('John', 22, 71),
('Bob', 29, 89),
('David', 25, 68),
('Larry', 31, 91);

3. Xem dữ liệu trước cập nhật

SELECT * FROM UpdateEntireRowDemo;

Kết quả:

+----+-------+------+-------+
| Id | Name  | Age  | Marks |
+----+-------+------+-------+
| 1  | Sam   | 23   | 78    |
| 2  | Mike  | 21   | 99    |
| 3  | Carol | 26   | 80    |
| 4  | John  | 22   | 71    |
| 5  | Bob   | 29   | 89    |
| 6  | David | 25   | 68    |
| 7  | Larry | 31   | 91    |
+----+-------+------+-------+

4. Cập nhật toàn bộ hàng có Id = 5

UPDATE UpdateEntireRowDemo 
SET Name = 'James', Age = 19, Marks = 78 
WHERE Id = 5;

Kết quả: Query OK, 1 row affected (0.12 sec) Rows matched: 1 Changed: 1 Warnings: 0

5. Kiểm tra hàng vừa cập nhật

SELECT * FROM UpdateEntireRowDemo WHERE Id = 5;

Kết quả:

+----+-------+------+-------+
| Id | Name  | Age  | Marks |
+----+-------+------+-------+
| 5  | James | 19   | 78    |
+----+-------+------+-------+

6. Xem toàn bộ bảng sau cập nhật

SELECT * FROM UpdateEntireRowDemo;

Kết quả: Hàng Id=5 đã thay đổi từ Bob/29/89 thành James/19/78.

Các lưu ý quan trọng

  • Luôn có WHERE với khóa chính - Nếu thiếu WHERE, toàn bộ bảng sẽ bị cập nhật!
  • Chỉ cập nhật các cột cần thay đổi - Cột không liệt kê trong SET giữ nguyên giá trị
  • Có thể dùng subquery trong SET: SET cot = (SELECT ... WHERE ...)
  • Kết hợp LIMIT 1 cho an toàn: WHERE Id = 5 LIMIT 1

Cập nhật từ bảng khác (JOIN)

UPDATE bang_chinh a
JOIN bang_nguon b ON a.id = b.id
SET a.cot1 = b.cot1, a.cot2 = b.cot2
WHERE a.id = 5;

Kiểm tra trước khi UPDATE (Best Practice)

-- 1. SELECT trước để xác nhận
SELECT * FROM UpdateEntireRowDemo WHERE Id = 5;

-- 2. Chạy UPDATE
UPDATE UpdateEntireRowDemo SET Name='James', Age=19, Marks=78 WHERE Id = 5;

-- 3. SELECT lại để verify
SELECT * FROM UpdateEntireRowDemo WHERE Id = 5;