Lệnh Xóa MySQL được sử dụng để xóa các hàng không còn cần thiết khỏi các bảng cơ sở dữ liệu. Nó xóa toàn bộ hàng khỏi bảng và trả về số lượng hàng đã xóa. Lệnh xóa có ích để xóa dữ liệu tạm thời hoặc lỗi thời khỏi cơ sở dữ liệu của bạn
Truy vấn Xóa trong MySQL có thể xóa nhiều hàng khỏi một bảng trong một truy vấn. Điều này chứng tỏ là lợi thế khi xóa số lượng lớn hàng khỏi bảng cơ sở dữ liệu
Khi một hàng Xóa trong hàng MySQL đã bị xóa, nó không thể khôi phục được. Do đó, chúng tôi khuyên bạn nên sao lưu cơ sở dữ liệu trước khi xóa bất kỳ dữ liệu nào khỏi cơ sở dữ liệu. Điều này có thể cho phép bạn khôi phục cơ sở dữ liệu và xem dữ liệu sau này nếu cần
Cách xóa một hàng trong MySQL
Để xóa một hàng trong MySQL, câu lệnh DELETE FROM được sử dụng
DELETE FROM `table_name` [WHERE condition];
ĐÂY
- XÓA TỪ `tên_bảng` yêu cầu máy chủ MySQL xóa các hàng khỏi bảng
- [Điều kiện WHERE] là tùy chọn và được sử dụng để đặt bộ lọc hạn chế số lượng hàng bị ảnh hưởng bởi cú pháp DELETE truy vấn hàng MySQL
Nếu mệnh đề WHERE không được sử dụng trong truy vấn DELETE của MySQL, thì tất cả các hàng trong một bảng nhất định sẽ bị xóa
Ví dụ về truy vấn xóa MySQL
Trước khi thảo luận chi tiết hơn về câu lệnh SQL DELETE, hãy chèn một số dữ liệu mẫu vào bảng phim để làm việc với
INSERT INTO `movies` [`title`, `director`, `year_released`, `category_id`] VALUES ['The Great Dictator', 'Chalie Chaplie', 1920, 7]; INSERT INTO `movies` [`title`, `director`, `category_id`] VALUES ['sample movie', 'Anonymous', 8]; INSERT INTO movies [`title`, `director`, `year_released`, `category_id`] VALUES ['movie 3', 'John Brown', 1920, 8];
Thực thi đoạn mã trên sẽ thêm ba [3] phim vào bảng phim. Trước khi chúng ta đi sâu hơn vào bài học của mình, hãy lấy tất cả các bộ phim trong bảng của chúng ta. Kịch bản hiển thị bên dưới thực hiện điều đó
SELECT * FROM `movies`;
Thực thi đoạn script trên cho chúng ta kết quả như sau
movie_id title director year_released category_id 1 Pirates of the Caribean 4 Rob Marshall 2011 1 2 Forgetting Sarah Marshal Nicholas Stoller 2008 2 3 X-Men NULL 2008 NULL 4 Code Name Black Edgar Jimz 2010 NULL 5 Daddy's Little Girls NULL 2007 8 6 Angels and Demons NULL 2007 6 7 Davinci Code NULL 2007 6 9 Honey mooners John Schultz 2005 8 16 67% Guilty NULL 2012 NULL 18 The Great Dictator Chalie Chaplie 1920 7 19 sample movie Anonymous NULL 8 20 movie 3 John Brown 1920 8
Giả sử rằng thư viện video Myflix không còn muốn cho các thành viên thuê “The Great Dictator” nữa và họ muốn xóa nó khỏi cơ sở dữ liệu. Id phim của nó là 18, chúng ta có thể sử dụng tập lệnh hiển thị bên dưới để xóa hàng khỏi bảng Ví dụ về MySQL
DELETE FROM `movies` WHERE `movie_id` = 18;
Thực thi tập lệnh trên trong MySQL WorkBench đối với Myflix sẽ xóa phim có id 18 khỏi bảng cơ sở dữ liệu
những gì dòng này nói là on_delete của Cha mẹ [điều này vô tình được đề cập trong câu lệnh], vui lòng chuyển việc xóa lên con. Đó là lý do tại sao câu lệnh CASCADE được định nghĩa ở cấp độ con, nó đánh dấu những phần tử con cần xóa
Ví dụ nếu bạn có một lớp khác
class GrownUpChild[self]:
# define grown up child's fields
parent_pk_is_childs_foreign_key = models.ForeignKey[Parent, on_delete=models.DO_NOTHING]
cấu trúc này sẽ chỉ ra rõ ràng đứa trẻ nào cần được loại bỏ [Trẻ em] và đứa trẻ nào sẽ ở lại [GrownUpChild] mặc dù mồ côi
[Chỉnh sửa. Với bối cảnh của cuộc thảo luận, cụ thể là trong trường hợp on_delete=models. CASCADE, v.v.] trên thực tế, hành vi thường được mong muốn là để lại các phần tử con của cha mẹ đã bị xóa, vì lý do kiểm tra và báo cáo, cũng như khôi phục các thao tác xóa vô tình. [ tất nhiên, phần mềm cấp doanh nghiệp sẽ được xây dựng xung quanh hành vi đó và sẽ gắn cờ các bản ghi đã xóa là đã xóa=1 thay vì thực sự xóa chúng và cũng sẽ không đưa chúng vào bất kỳ truy vấn nào cho giao diện người dùng, trừ một số báo cáo được thiết kế đặc biệt. Ngoài ra, nó sẽ có chức năng xóa các bản ghi ==1 đã xóa khỏi cơ sở dữ liệu, thường sẽ được thực thi bởi quản trị viên giao diện người dùng, thường tránh mọi sự tham gia từ phía quản trị viên cơ sở dữ liệu. ]