Tôi sử dụng wampserver 2.2. Khi tôi muốn xóa tất cả các bản ghi của một bảng trong phpMyAdmin (chọn tất cả), nó chỉ xóa một bản ghi không phải tất cả các bản ghi. Tại sao nó không xóa tất cả các bản ghi?
SHIFT-DEL
Tôi sử dụng wampserver 2.2. Khi tôi muốn xóa tất cả các bản ghi của một bảng trong phpMyAdmin (chọn tất cả), nó chỉ xóa một bản ghi không phải tất cả các bản ghi. Tại sao nó không xóa tất cả các bản ghi?
SHIFT-DEL
Câu trả lời:
Bạn có 2 lựa chọn delete
và truncate
:
delete from mytable
Thao tác này sẽ xóa tất cả nội dung của bảng, không gửi lại id autoincremental, quá trình này diễn ra rất chậm. Nếu bạn muốn xóa các bản ghi cụ thể, hãy thêm một mệnh đề where ở cuối.
truncate myTable
Điều này sẽ đặt lại bảng tức là tất cả các trường tăng dần tự động sẽ được đặt lại. Nó là một DDL và rất nhanh. Bạn không thể xóa bất kỳ bản ghi cụ thể nào thông qua truncate
.
Chuyển đến tab Sql, chạy một trong các truy vấn dưới đây:
delete from tableName;
Xóa : sẽ xóa tất cả các hàng khỏi bảng của bạn. Lần chèn tiếp theo sẽ lấy id gia tăng tự động tiếp theo.
hoặc là
truncate tableName;
Cắt ngắn : cũng sẽ xóa các hàng khỏi bảng của bạn nhưng nó sẽ bắt đầu từ hàng mới với 1.
Một blog chi tiết với ví dụ: http://sforsuresh.in/phpmyadmin-deleting-rows-mysql-table/
Sử dụng truy vấn này:
DELETE FROM tableName;
Lưu ý: Để xóa một số bản ghi cụ thể, bạn cũng có thể đưa ra điều kiện trong mệnh đề where trong truy vấn.
HOẶC bạn cũng có thể sử dụng truy vấn này:
truncate tableName;
Cũng nên nhớ rằng bạn không nên có bất kỳ mối quan hệ nào với bảng khác. Nếu có bất kỳ ràng buộc khóa ngoại nào trong bảng thì bản ghi đó sẽ không bị xóa và sẽ gây ra lỗi.
'Xén bớt tableName' sẽ không thành công trên một bảng đã xác định ràng buộc khóa. Nó cũng sẽ không lập chỉ mục lại AUTO_INCREMENT
giá trị bảng . Thay vào đó, hãy Xóa tất cả các mục nhập trong bảng và đặt lại lập chỉ mục về 1 bằng cách sử dụng cú pháp sql sau:
DELETE FROM tableName;
ALTER TABLE tableName AUTO_INCREMENT = 1
Một thực tế thú vị.
Tôi chắc chắn TRUNCATE sẽ luôn hoạt động tốt hơn, nhưng trong trường hợp của tôi, đối với một db có khoảng 30 bảng có khóa ngoại, được điền chỉ với một vài hàng, mất khoảng 12 giây để TRUNCATE tất cả các bảng, trái ngược với chỉ vài trăm mili giây để XÓA các hàng. Đặt mức tăng tự động tổng cộng khoảng một giây, nhưng nó vẫn tốt hơn rất nhiều.
Vì vậy, tôi khuyên bạn nên thử cả hai, xem cái nào hoạt động nhanh hơn cho trường hợp của bạn.
viết câu truy vấn: truncate 'Your_table_name';
DELETE FROM tableName