Đây là các lệnh DML (Data Manipulation Language) thay đổi dữ liệu: INSERT thêm dòng, sửa các dòng hiện có, xóa dòng. Khác với (chỉ đọc), các lệnh này thay đổi database — nên cần cẩn thận, đặc biệt là mệnh đề .
Đây là các lệnh DML (Data Manipulation Language) thay đổi dữ liệu: INSERT thêm dòng, sửa các dòng hiện có, xóa dòng. Khác với (chỉ đọc), các lệnh này thay đổi database — nên cần cẩn thận, đặc biệt là mệnh đề .
UPDATEDELETESELECTWHERE-- chèn một dòng
INSERT INTO users (name, email, age)
VALUES ('Ann', '[email protected]', 30);
-- chèn nhiều dòng cùng lúc (hiệu quả)
INSERT INTO users (name, email)
VALUES ('Bob', '[email protected]'), ('Carol', '[email protected]');
-- chèn từ một truy vấn
INSERT INTO archived_users SELECT * FROM users WHERE inactive = true;
Bạn chỉ định các cột và giá trị. Chèn nhiều dòng trong một câu lệnh hiệu quả hơn nhiều câu chèn riêng lẻ.
UPDATE users
SET age = 31, updated_at = NOW() -- đặt một hoặc nhiều cột
WHERE id = 5; -- ❗ những dòng NÀO sẽ được cập nhật
-- ❌ NGUY HIỂM — không có mệnh đề WHERE sẽ cập nhật MỌI dòng trong bảng!
UPDATE users SET active = false; -- đặt TẤT CẢ user thành inactive 😱
Quan trọng: một câu UPDATE (hoặc DELETE) không có mệnh đề WHERE sẽ ảnh hưởng đến mọi dòng trong bảng. Quên WHERE là một sai lầm thảm họa, phổ biến — luôn kiểm tra lại.
DELETE FROM users WHERE id = 5; -- xóa một dòng cụ thể
DELETE FROM users WHERE inactive = true; -- xóa các dòng khớp
-- ❌ NGUY HIỂM — không có WHERE sẽ xóa TOÀN BỘ nội dung bảng!
DELETE FROM users;
✓ LUÔN có mệnh đề WHERE (trừ khi bạn thực sự muốn ảnh hưởng tới mọi dòng)
✓ Kiểm tra WHERE trước bằng SELECT (SELECT * WHERE ... → xem bạn sẽ ảnh hưởng gì)
✓ Dùng TRANSACTION (BEGIN ... COMMIT/ROLLBACK) để có thể hoàn tác lỗi
✓ DELETE vs TRUNCATE: TRUNCATE nhanh chóng làm rỗng cả bảng (nhanh hơn, nhưng không từng dòng,
ở một số DB không thể rollback, đặt lại auto-increment)
INSERT, UPDATE và DELETE là cách ứng dụng thay đổi dữ liệu — nền tảng cho mọi ứng dụng lưu trữ và sửa đổi thông tin (tạo record, chỉnh sửa, xóa), nên hiểu chúng là kiến thức thiết yếu hằng ngày bên cạnh SELECT.
Biết cách chèn (một dòng, nhiều dòng, hoặc từ một truy vấn), cập nhật (đặt giá trị cột) và xóa dòng là cần thiết cho mọi thao tác thay đổi dữ liệu. Điểm quan trọng nhất là sự nguy hiểm của việc thiếu mệnh đề WHERE: một câu UPDATE hay DELETE không có WHERE ảnh hưởng đến mọi dòng trong bảng — một sai lầm thảm họa, phổ biến đến bất ngờ, có thể xóa sạch hoặc làm hỏng toàn bộ dữ liệu.
Hiểu mối nguy này và các thực hành an toàn (luôn có WHERE, kiểm tra điều kiện bằng SELECT trước, dùng transaction để có thể rollback lỗi) là kiến thức sống còn ngăn các sự cố mất dữ liệu nghiêm trọng.
Biết các chi tiết liên quan (chèn nhiều dòng hiệu quả, DELETE vs TRUNCATE để làm rỗng bảng) hoàn thiện kiến thức thực tế.
Vì sửa đổi dữ liệu là nền tảng của ứng dụng, và vì lỗi thiếu WHERE vừa thảm họa vừa phổ biến (một nguyên nhân thường gặp của các thảm họa mất dữ liệu production thực tế), thành thạo các lệnh DML này — và đặc biệt là kỷ luật quanh mệnh đề WHERE và an toàn giao dịch — là kiến thức cốt lõi, bắt buộc phải biết cho bất kỳ ai viết SQL thay đổi dữ liệu, nơi mức rủi ro (mất dữ liệu không thể phục hồi) khiến các thực hành an toàn quan trọng ngang với cú pháp.