Những gì đang bị xóa trong mysql?

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. ]

Giới hạn trên DELETE là gì?

Mệnh đề BẬT XÓA nói rằng nếu một giá trị ID khóa chính cụ thể trong bảng KHÁCH HÀNG bị xóa, hành động này sẽ bị ngăn chặn (đây là phần "hạn chế") nếu có bất kỳ hàng nào trong bảng ĐẶT HÀNG có khóa ngoại phù hợp

Trên XÓA và cập nhật trong SQL là gì?

1) BẬT XÓA CASCADE có nghĩa là nếu bản ghi gốc bị xóa, thì mọi bản ghi con tham chiếu cũng bị xóa. BẬT CẬP NHẬT mặc định là HẠN CHẾ, có nghĩa là CẬP NHẬT trên bản ghi gốc sẽ không thành công. 2) Hành động BẬT XÓA mặc định là HẠN CHẾ, có nghĩa là XÓA trên bản ghi gốc sẽ không thành công

Điều gì xảy ra trên tầng DELETE và tầng cập nhật?

Ràng buộc ON DELETE CASCADE được sử dụng trong MySQL để tự động xóa các hàng khỏi bảng con, khi các hàng từ bảng cha bị xóa . Ví dụ: khi một sinh viên đăng ký trên một nền tảng học tập trực tuyến, thì tất cả thông tin chi tiết về sinh viên đó sẽ được ghi lại bằng số/id duy nhất của họ.

Tầng cập nhật trong MySQL là gì?

Mệnh đề ON UPDATE CASCADE trong MySQL được được sử dụng để tự động cập nhật các bản ghi phù hợp từ bảng con khi chúng ta cập nhật các hàng trong bảng cha .