Пользуюсь wampserver 2.2. Когда я хочу удалить все записи таблицы в phpMyAdmin (выбрать все), он удаляет только одну запись, а не все записи. Почему он не удаляет все записи?
SHIFT-DEL
Пользуюсь wampserver 2.2. Когда я хочу удалить все записи таблицы в phpMyAdmin (выбрать все), он удаляет только одну запись, а не все записи. Почему он не удаляет все записи?
SHIFT-DEL
Ответы:
У вас есть 2 варианта delete
и truncate
:
delete from mytable
Это удалит все содержимое таблицы, не сбрасывая автоинкрементный идентификатор, этот процесс очень медленный. Если вы хотите удалить определенные записи, добавьте в конце предложение where.
truncate myTable
Это сбросит таблицу, т.е. все поля с автоматическим приращением будут сброшены. Это DDL и очень быстро. Вы не можете удалить какую-либо конкретную запись через truncate
.
Перейдите на вкладку Sql и выполните один из следующих запросов:
delete from tableName;
Удалить : удалит все строки из вашей таблицы. Следующая вставка примет следующий идентификатор автоматического увеличения.
или
truncate tableName;
Truncate : также удалит строки из вашей таблицы, но начнется с новой строки с 1.
Подробный блог с примером: http://sforsuresh.in/phpmyadmin-deleting-rows-mysql-table/
Используйте этот запрос:
DELETE FROM tableName;
Примечание. Чтобы удалить определенную запись, вы также можете указать условие в предложении where в запросе.
ИЛИ вы также можете использовать этот запрос:
truncate tableName;
Также помните, что у вас не должно быть никаких отношений с другой таблицей. Если в таблице будет какое-либо ограничение внешнего ключа, эта запись не будет удалена и выдаст ошибку.
'Truncate tableName' завершится ошибкой для таблицы с определенным ограничением ключа. Он также не будет переиндексировать табличное AUTO_INCREMENT
значение. Вместо этого удалите все записи таблицы и сбросьте индексирование до 1, используя этот синтаксис sql:
DELETE FROM tableName;
ALTER TABLE tableName AUTO_INCREMENT = 1
Интересный факт.
Я был уверен, что TRUNCATE всегда будет работать лучше, но в моем случае для базы данных с примерно 30 таблицами с внешними ключами, заполненными всего несколькими строками, для TRUNCATE всех таблиц потребовалось около 12 секунд, а не всего несколько сотен миллисекунд. УДАЛИТЬ строки. Установка автоматического приращения добавляет в общей сложности около секунды, но все равно намного лучше.
Поэтому я предлагаю попробовать оба варианта, чтобы посмотреть, какой из них работает быстрее в вашем случае.
напишите запрос: усечь 'Your_table_name';
Или вы можете сделать то же самое с помощью sql-запроса:
Нажмите на SQL, присутствующий рядом со структурой
TRUNCATE tablename; //offers better performance, but used only when all entries need to be cleared
or
DELETE FROM tablename; //returns the number of rows deleted
Обратитесь к DELETE и TRUNCATE для получения подробной документации.
DELETE FROM tableName