Bài viết Learn & More

Bài 5: Thao tác với dữ liệu (DML): INSERT, UPDATE, DELETE

Bài viết này thuộc SQL ServerCơ bản.

Nhóm lệnh tạo bảng (DDL) giống như việc thợ mộc đóng xong một cái tủ. Còn nhóm lệnh DML (Data Manipulation Language) là hành động bạn mở ngăn kéo ra, bỏ hồ sơ vào (INSERT), sửa lỗi sai trên hồ sơ (UPDATE), hoặc vứt hồ sơ cũ đi (DELETE). Đây là 3 câu lệnh thay đổi dữ liệu mà bất kỳ lập trình viên Backend nào cũng gọi hàng chục lần mỗi ngày. Hãy cùng thực hành trên bảng Customers của chúng ta.

1. Thêm dữ liệu (INSERT INTO)
Lệnh này dùng để tạo ra một dòng (Record) mới trong bảng.

1.1 Thêm 1 dòng đầy đủ dữ liệu
Cú pháp cơ bản: INSERT INTO Tên_Bảng (Cột1, Cột2...) VALUES (Giá_trị_1, Giá_trị_2...)

INSERT INTO Customers (FullName, Email, PhoneNumber, City)
VALUES (N'Hoàng Thị E', 'hte@email.com', '0922222222', N'Đà Lạt');

Lưu ý quan trọng: Tại sao trước chữ 'Hoàng Thị E' lại có chữ N (N'...')?
=> Vì cột FullName là kiểu NVARCHAR (Tiếng Việt), chữ N báo cho SQL Server biết chuỗi theo sau chứa ký tự Unicode. Nếu bỏ chữ N, dữ liệu lưu vào sẽ bị lỗi font.

1.2 Thêm nhiều dòng cùng lúc (Bulk Insert)
Thay vì viết lệnh INSERT nhiều lần, bạn có thể gộp lại để tối ưu tốc độ:

INSERT INTO Customers (FullName, Email, PhoneNumber, City)
VALUES 
    (N'Trịnh Văn F', 'tvf@email.com', '0933333333', N'Hà Nội'),
    (N'Đinh Thị G', 'dtg@email.com', '0944444444', N'Hải Phòng');

(Lưu ý: Chúng ta không chèn dữ liệu vào cột CustomerID vì ở Bài 3, ta đã cài đặt nó là IDENTITY - SQL Server sẽ tự động điền số thứ tự vào đó).

2. Cập nhật dữ liệu (UPDATE)

Giả sử Khách hàng tên "Trịnh Văn F" đổi số điện thoại và chuyển nhà vào TP.HCM. Ta sẽ dùng UPDATE.

Cú pháp cơ bản:

UPDATE Customers
SET PhoneNumber = '0999999999',
    City = N'Hồ Chí Minh'
WHERE Email = 'tvf@email.com';

Cạm bẫy cực kỳ nguy hiểm (Cẩn thận mất việc!)
Nếu bạn chạy lệnh UPDATE mà QUÊN MẤT mệnh đề WHERE:

ĐỪNG BAO GIỜ CHẠY DÒNG NÀY NẾU KHÔNG HIỂU RÕ

UPDATE Customers
SET City = N'Hồ Chí Minh';

Hệ quả: SQL Server sẽ sửa thành phố của TOÀN BỘ KHÁCH HÀNG trong bảng thành 'Hồ Chí Minh'. Do đó, luôn luôn phải có điều kiện WHERE khi dùng UPDATE. Thường người ta sẽ WHERE theo Khóa chính (CustomerID) để chính xác 100%.
 

3. Xóa dữ liệu (DELETE)
Khi một khách hàng yêu cầu hủy tài khoản, ta có thể xóa dòng dữ liệu đó đi.

DELETE FROM Customers
WHERE Email = 'hte@email.com';

Khác biệt giữa DELETE và DROP:
- DELETE FROM Customers: Xóa các dòng dữ liệu, nhưng cái bảng (cấu trúc) vẫn còn nguyên đó, trống rỗng.
- DROP TABLE Customers: Xóa luôn cái bảng, giống như đập nát cái ngăn kéo tủ.

(Nhắc lại cạm bẫy cũ: Lệnh DELETE nếu quên mệnh đề WHERE sẽ xóa SẠCH dữ liệu trong bảng).

Thực hành
1. Hãy viết câu lệnh INSERT thêm một sản phẩm mới vào bảng Products (Ví dụ: Tai nghe Airpods, giá 4.000.000).
2. Viết câu lệnh UPDATE để giảm giá sản phẩm đó xuống còn 3.500.000.
3. Viết câu lệnh DELETE xóa sản phẩm đó khỏi hệ thống.

Tổng kết (Key Takeaways)
- INSERT: Thêm dòng mới. Chú ý ký tự N trước chuỗi Unicode tiếng Việt.
- UPDATE: Sửa dữ liệu đã có.
- DELETE: Xóa dòng dữ liệu.
- QUY TẮC SỐNG CÒN: Luôn kiểm tra kỹ mệnh đề WHERE trước khi chạy UPDATE và DELETE.

Điều hướng (Next Steps)
Chúng ta đã biết cách "Nhập" dữ liệu. Sang bài tiếp theo, chúng ta sẽ bắt đầu học cách "Xuất" dữ liệu ra để xem, thống kê và báo cáo. Bắt đầu với [Bài 6: Truy vấn dữ liệu cơ bản với lệnh SELECT, FROM, WHERE].

Đọc tiếp

SQL Server Cơ bản

Bài 6: Truy vấn dữ liệu cơ bản với lệnh SELECT, FROM, WHERE

Nội dung liên quan

Thêm bài viết trong danh mục này