Xóa dữ liệu bảng với mệnh đề delete from trong SQL
Với câu lệnh delete from bạn có thể xóa đi các dòng trong một bảng dữ liệu, cú pháp cơ bản như sau:
delete from TABLE_NAME where CONDITION;
Mệnh delete from xóa dữ liệu trong bảng sql chứ không xóa cấu trúc bảng.
- TABLE_NAME là tên bảng cần xóa dòng dữ liệu
- CONDITION điều kiện xóa, dòng nào có dữ liệu thỏa mãn CONDITION (trả về true) sẽ bị xóa
Các dòng dữ liệu khi xóa là không thể phục hồi, nên viết và thi hành câu lệnh delete
thật cẩn trọng.
Nếu thiếu mệnh đề WHERE tất cả các dòng trong bảng bị xóa. Tham khảo thêm về viết Mệnh đề Where trong SQL
Ví dụ, xóa dòng có HoTen là 'Hoàng Đức Anh'
delete from Khachhang where HoTen='Hoàng Đức Anh';
Nhớ lưu lại dữ liệu trước khi thực hành
Ở đây có một file CSDL mẫu dạng SQLite, bạn có thể tải về nghiên cứu, thực hành: CSDL SQLite mẫu. Hoặc sử dụng trực tiếp công cụ Online: Chạy SQL
Xóa toàn bộ dữ liệu trong bảng SQL
Thiếu mệnh đề WHERE sẽ xóa toàn bộ dữ liệu của bảng (xóa dữ liệu, còn bảng vẫn tồn tại, nếu xóa bảng khỏi DB thực hiện lệnh drop table)
delete from table_name;
delete * from table_name;
Một số SQL Engine
như MS SQLSERVER, MYSQL còn có mệnh đề TRUNCATE TABLE_NAME
để xóa tất cả các dòng của bảng, nó cũng tương đương DELETE
nhưng đồng thời khởi tạo lại
transaction log
(khi thêm dòng mới chỉ số tự động tăng bắt đầu từ 1)
Mệnh đề DELETE TABLE trong MySQL
Trong MySQL lệnh DELETE TABLE còn có thêm một số mở rộng, hãy xét vài trường hợp sau
Có thể chỉ định số dòng sẽ xóa bằng cách thêm mệnh đề LIMIT, trường hợp này cũng có thể thêm mệnh đề ORDER BY để xếp các dòng trước khi xóa
# xóa number_row dòng đầu tiên delete from table_name [where condition] limit number_row; # xóa number_row dòng có sắp xếp đầu tiên delete from table_name [where condition] order by col1, col2 ... limit number_row;
Mệnh đề DELETE TABLE trong SQL Server
Trong SQL Server bạn cũng có thể xóa một số dòng đầu tiên:
# xóa number_row dòng đầu tiên delete top(number_row) from table_name [where condition];