Câu lệnh DELETE của MySQL được sử dụng để xóa các bản ghi khỏi bảng MySQL không còn cần thiết trong cơ sở dữ liệu. Truy vấn này trong MySQL xóa toàn bộ hàng khỏi bảng và tạo ra số lượng hàng đã xóa. Nó cũng cho phép chúng tôi xóa nhiều bản ghi khỏi bảng trong một truy vấn, điều này có lợi khi xóa số lượng lớn bản ghi khỏi bảng. Bằng cách sử dụng câu lệnh xóa, chúng ta cũng có thể xóa dữ liệu dựa trên các điều kiện
Khi chúng tôi xóa bản ghi bằng truy vấn này, chúng tôi không thể khôi phục nó. Do đó, trước khi xóa bất kỳ bản ghi nào khỏi bảng, bạn nên tạo bản sao lưu cơ sở dữ liệu của mình. Các bản sao lưu cơ sở dữ liệu cho phép chúng tôi khôi phục dữ liệu bất cứ khi nào chúng tôi cần trong tương lai
cú pháp
Sau đây là cú pháp minh họa cách sử dụng câu lệnh DELETE
Trong câu lệnh trên, trước tiên chúng ta phải chỉ định tên bảng mà chúng ta muốn xóa dữ liệu. Thứ hai, chúng ta phải chỉ định điều kiện để xóa các bản ghi trong mệnh đề WHERE, đây là tùy chọn. Nếu chúng ta bỏ qua mệnh đề WHERE trong câu lệnh, truy vấn này sẽ xóa toàn bộ bản ghi khỏi bảng cơ sở dữ liệu
Nếu chúng ta muốn xóa các bản ghi khỏi nhiều bảng bằng một truy vấn DELETE, chúng ta phải thêm mệnh đề THAM GIA với câu lệnh DELETE
Nếu chúng ta muốn xóa tất cả các bản ghi khỏi một bảng mà không biết số hàng đã xóa, chúng ta phải sử dụng câu lệnh TRUNCATE TABLE để có hiệu suất tốt hơn
Hãy cho chúng tôi hiểu cách câu lệnh DELETE hoạt động trong MySQL thông qua các ví dụ khác nhau
Các ví dụ về câu lệnh DELETE của MySQL
Ở đây, chúng ta sẽ sử dụng bảng "Nhân viên" và "Thanh toán" để trình diễn câu lệnh DELETE. Giả sử các bảng Nhân viên và Thanh toán chứa dữ liệu sau
Nếu chúng ta muốn xóa một nhân viên có emp_id là 107, chúng ta nên sử dụng câu lệnh DELETE với mệnh đề WHERE. Xem truy vấn bên dưới
Sau khi thực hiện câu truy vấn sẽ trả về kết quả như hình bên dưới. Sau khi bản ghi bị xóa, hãy xác minh bảng bằng cách sử dụng câu lệnh CHỌN
Nếu chúng ta muốn xóa tất cả các bản ghi khỏi bảng thì không cần sử dụng mệnh đề WHERE với câu lệnh DELETE. Xem đoạn mã dưới đây và đầu ra
Ở kết quả trên, chúng ta có thể thấy rằng sau khi xóa tất cả các hàng, bảng Nhân viên sẽ trống. Điều đó có nghĩa là không có bản ghi nào trong bảng đã chọn
Mệnh đề DELETE và GIỚI HẠN của MySQL
Mệnh đề Giới hạn MySQL được sử dụng để hạn chế số lượng hàng trả về từ tập kết quả, thay vì tìm nạp toàn bộ bản ghi trong bảng. Đôi khi chúng ta muốn giới hạn số hàng bị xóa khỏi bảng;
Cần lưu ý rằng thứ tự các hàng trong bảng MySQL không được chỉ định. Do đó, chúng ta nên luôn sử dụng mệnh đề ORDER BY trong khi sử dụng mệnh đề LIMIT
Ví dụ: trước tiên, truy vấn sau sắp xếp nhân viên theo tên của họ theo thứ tự bảng chữ cái và xóa ba nhân viên đầu tiên khỏi bảng
Nó sẽ cho đầu ra dưới đây
Mệnh đề XÓA và THAM GIA của MySQL
Mệnh đề THAM GIA được sử dụng để thêm hai hoặc nhiều bảng trong MySQL. Chúng tôi sẽ thêm mệnh đề THAM GIA với câu lệnh DELETE bất cứ khi nào chúng tôi muốn xóa các bản ghi khỏi nhiều bảng trong một truy vấn. Xem truy vấn bên dưới
Trước hết, bạn phải có một số dữ liệu trong lược đồ cơ sở dữ liệu của mình để thực hiện các truy vấn trên đó. Hãy tạo một bảng có tên 'sinh viên' trong cơ sở dữ liệu 'dữ liệu' bằng cách sử dụng truy vấn CREATE trong MYSQL Workbench hoặc Máy khách dòng lệnh. Bảng 'sinh viên' có sáu cột. 'id', 'firstname', 'lastname', 'email', 'reg_date' và 'class'. Chúng tôi sẽ thêm các giá trị vào các cột của nó bằng cách sử dụng chế độ xem lưới như bên dưới và nhấp vào nút 'Áp dụng' để lưu các thay đổi. Bây giờ bạn có thể thực hiện bất kỳ cập nhật nào trên các bản ghi này
Xóa qua Giao diện Workbench
Một phương pháp rất đơn giản để xóa hàng/các hàng khỏi bảng MySQL là thông qua chế độ xem lưới bàn làm việc vì chúng ta có một bảng 'sinh viên' với mười bản ghi trong đó. Để xóa một hàng khỏi bảng, bạn phải chọn hàng cụ thể và nhấn biểu tượng xóa hàng từ cửa sổ lưới vì chúng tôi đã chọn hàng thứ 10 và nhấn biểu tượng được đánh dấu bên dưới
Sau khi nhấn vào biểu tượng xóa, bạn có thể thấy rằng hàng thứ 10 và bản ghi của nó đã bị xóa khỏi bảng 'sinh viên'. Muốn xóa nhiều hàng phải chọn liên tiếp nhiều hàng
Xóa một hàng qua dòng lệnh
Một phương pháp đơn giản khác để xóa một hàng khỏi lược đồ MySQL là thông qua ứng dụng khách dòng lệnh. Mở ứng dụng khách dòng lệnh MySQL trong 'MySql' mới được cài đặt thông qua nút 'cửa sổ'. Trước hết, kiểm tra và hiển thị tất cả các bản ghi của bảng ‘student’ bằng cách sử dụng lệnh ‘SELECT’ như bên dưới
>> CHỌN * TỪ dữ liệu. sinh viên ĐẶT HÀNG THEO id;
Ví dụ 01. Sử dụng một điều kiện trong mệnh đề WHERE
Hãy xóa một hàng bằng cách sử dụng mệnh đề ‘WHERE’ trong truy vấn ‘DELETE’. Chúng tôi đang xóa hàng có 'lastname = Waleed', là hàng số 10 như trên. Hãy thử nó như.
>> XÓA KHỎI dữ liệu. sinh viên WHERE lastname=’Waleed’;
Nó đã được xóa thành công vì nó hiển thị rằng 'Truy vấn OK, 1 hàng bị ảnh hưởng'
Khi hiển thị tất cả các hàng của bảng 'sinh viên', chúng ta có thể thấy rằng bản ghi của hàng thứ 10 đã bị xóa khỏi bảng
Sử dụng cùng một truy vấn 'XÓA' trong trình điều hướng của bàn làm việc để xóa một bản ghi như được hiển thị
Ví dụ 02. Sử dụng nhiều hơn một điều kiện trong mệnh đề WHERE
Bạn cũng có thể xóa một hàng khỏi bảng, sử dụng nhiều hơn một điều kiện trong truy vấn ‘DELETE’ của MySQL. Chúng tôi đang sử dụng hai điều kiện trong mệnh đề 'WHERE', e. g. , 'họ = khursheed' và 'id > 7'. Truy vấn này sẽ chỉ xóa hàng có id lớn hơn '7' và họ của nó là 'khursheed'. Trong trường hợp của chúng tôi, nó là hàng thứ 9.
>> XÓA KHỎI dữ liệu. sinh viên WHERE lastname=’khursheed’ AND id > 7;
Hàng thứ 9 đã được xóa thành công vì thông báo rằng 'Truy vấn OK, 1 hàng bị ảnh hưởng. ’
Khi kiểm tra, chúng tôi chỉ còn 8 hàng trong bảng. Hàng thứ 9 đã bị xóa khỏi bảng, như hình bên dưới
Ví dụ 03. Sử dụng Điều kiện GIỚI HẠN trong Mệnh đề WHERE
Chúng ta cũng có thể xóa một hàng thông qua mệnh đề ‘GIỚI HẠN’ trong truy vấn ‘DELETE’. Trong truy vấn này, chúng tôi phải xác định giới hạn là '1' để xóa một hàng. Chúng tôi đã xác định giá trị giới hạn là '1' trong mệnh đề 'WHERE' của truy vấn 'DELETE'. Nó sẽ chỉ xóa hàng đầu tiên khỏi tất cả các bản ghi có 'lastname = Awan', là hàng số 2.
>> XÓA KHỎI dữ liệu. sinh viên WHERE lastname = 'Awan' ORDER BY id LIMIT 1;
Sử dụng truy vấn 'CHỌN' để kiểm tra bảng đã cập nhật. Bạn có thể thấy rằng hàng thứ 2 không có trong bảng như hiển thị bên dưới và chúng tôi chỉ còn lại 7 hàng
Xóa nhiều hàng qua dòng lệnh
Trước tiên, hãy cập nhật bảng 'sinh viên' bằng cách thêm một số bản ghi vào bảng để chúng tôi có thể xóa nhiều hàng. Hãy hiển thị các bản ghi của một bảng có họ là 'Awan', sử dụng truy vấn 'CHỌN' với mệnh đề WHERE duy nhất. Truy vấn này sẽ chỉ hiển thị 4 hàng vì chúng tôi chỉ có 4 bản ghi cho cột ‘lastname = Awan’
>> CHỌN * TỪ dữ liệu. sinh viên WHERE họ = 'Awan';
Ví dụ 01. Sử dụng Điều kiện GIỚI HẠN trong Mệnh đề WHERE
Để xóa nhiều hàng khỏi một bảng, chúng ta có thể sử dụng điều kiện ‘GIỚI HẠN’ trong mệnh đề ‘WHERE’ của truy vấn ‘DELETE’. Chúng ta chỉ cần xác định 'GIỚI HẠN' khác với 1 hoặc bất kỳ số âm nào. Vì vậy, chúng tôi đã xác định 'GIỚI HẠN' là '3', để xóa 3 hàng khỏi bảng. Nó sẽ xóa ba hàng đầu tiên của bản ghi có 'họ' là 'Awan'.
>> XÓA KHỎI dữ liệu. sinh viên WHERE lastname = 'Awan' ORDER BY id GIỚI HẠN 3;
Hiển thị các bản ghi còn lại của bảng bằng truy vấn 'CHỌN'. Bạn sẽ thấy, chỉ còn lại 1 bản ghi cho 'lastname' có giá trị 'Awan' và ba hàng đã bị xóa
Ví dụ 02. Sử dụng nhiều hơn một điều kiện trong mệnh đề WHERE
Chúng tôi đang sử dụng cùng một điều kiện ở trên bảng và xác định hai điều kiện trong mệnh đề 'WHERE' để xóa các hàng có 'id' lớn hơn 2 và nhỏ hơn 9 như .
>> XÓA KHỎI dữ liệu. sinh viên WHERE id > 2 AND id < 9;
Chúng tôi chỉ còn 2 hàng trong bảng trong khi kiểm tra các bản ghi
Ví dụ 03. Xóa tất cả các hàng
Bạn có thể xóa tất cả các hàng khỏi bảng 'sinh viên' bằng cách sử dụng truy vấn đơn giản bên dưới trong dòng lệnh như.
>> XÓA KHỎI dữ liệu. sinh viên;
Trong khi cố gắng hiển thị các bản ghi, bạn sẽ nhận được một tập hợp các bảng trống
Phần kết luận
Chúng tôi đã xem qua các cách khác nhau để xóa một hàng và nhiều hàng khỏi một bảng khi làm việc trong MySQL thông qua bàn làm việc và giao diện máy khách dòng lệnh