5.1 Câu lệnh XÓA TỪ
Điều dễ dàng thực hiện trong SQL là xóa dữ liệu. Bạn có thể xóa hoàn toàn mọi thứ rất nhanh chóng và thậm chí không ai yêu cầu bạn xác nhận bất kỳ điều gì.
Hãy bắt đầu với tình huống đơn giản nhất: cách xóa một hàng trong bảng .
Đây là tình huống bạn sẽ thấy thường xuyên nhất, thường là việc xóa một bản ghi cụ thể và truy vấn tiêu chuẩn thường có dạng:
DELETE FROM table
WHERE id = 133;
Đây là truy vấn duy nhất mà bạn không cần chỉ định tên của các cột: xét cho cùng, dữ liệu sẽ bị xóa ngay lập tức trong các hàng.
Kịch bản thứ hai là xóa các hàng được cung cấp bởi danh sách id , mọi thứ ở đây cũng khá đơn giản:
DELETE FROM table
WHERE id IN (1, 2, 3, …);
Kịch bản thứ ba là xóa các hàng khớp với một điều kiện nhất định:
DELETE FROM table
WHERE condition;
Giả sử chúng ta muốn sa thải tất cả các lập trình viên của mình, thì chúng ta cần viết một yêu cầu như sau:
DELETE FROM employee
WHERE occupation = 'Programmer';
Và cuối cùng, nếu bạn muốn xóa tất cả các bản ghi, bạn có thể viết một truy vấn như sau:
DELETE FROM table
Truy vấn đơn giản này đủ để xóa tất cả bản ghi khỏi bảng. Nhân tiện, sẽ không có Ctrl + Z trong trường hợp này. Các bản ghi chỉ bị xóa mà không có khả năng khôi phục và thế là xong. Vì vậy, hãy sao lưu, thường xuyên hơn .
5.2 Xóa mọi thứ
Để loại bỏ nhanh chóng (để thêm đau đầu cho người dùng), SQL có thêm một số lệnh.
Làm cách nào để xóa nhanh tất cả dữ liệu trong một bảng? Sử dụng toán tử TRUNCATE
:
TRUNCATE TABLE table
Một lỗi đánh máy trong tên của bảng - và một vài ngày phục hồi dữ liệu được cung cấp cho bạn. Hãy vui mừng vì bạn không phải là quản trị viên cơ sở dữ liệu.
Nếu bạn cần xóa không chỉ dữ liệu trong bảng mà cả chính bảng đó, thì có một toán tử DROP
cho việc này :
DROP TABLE table
Nhân tiện, có các tùy chọn tương tự với lược đồ cơ sở dữ liệu . Nếu bạn muốn xóa cơ sở dữ liệu, thì:
DROP SCHEME database
hoặc:
DROP DATABASE database
Bạn cũng có thể sử dụng DROP để xóa:
- SỰ KIỆN
- CHỨC NĂNG
- THỦ TỤC
- MỤC LỤC
- XEM
- CÒ SÚNG
Và đây là một vài câu chuyện thú vị liên quan đến việc xóa dữ liệu:
Nghỉ giải lao trong ngày. GitLab đã xóa 300 GB dữ liệu khách hàng do lỗi sysadmin
sudo rm -rf, hoặc Biên niên sử về sự cố cơ sở dữ liệu GitLab.com từ ngày 31/01/2017