Читайте также: |
|
DELETE удаляет строки, которые удовлетворяют условию, заданному в where_definition из таблицы table_name и возвращает число удаленных записей.
Если Вы выдаете DELETE без предложения WHERE, все строки будут удалены. Если Вы делаете это в режиме AUTOCOMMIT, это сработает аналогично TRUNCATE. Подробности в разделе "8.7 Синтаксис TRUNCATE". В MySQL 3.23 DELETE без предложения WHERE возвратит ноль как число обработанных записей.
Если Вы действительно хотите знать, сколько записей удалены, когда Вы удаляете все строки из таблицы, Вы можете использовать инструкцию DELETE этой формы:
mysql> DELETE FROM table_name WHERE 1>0;Обратите внимание, что это НАМНОГО медленнее, чем DELETE FROM table_name без предложения WHERE потому, что эта команда удаляет строки по одной.
Если Вы определяете ключевое слово LOW_PRIORITY, выполнение DELETE будет отсрочено до наступления момента, когда никакие клиенты не читают из таблицы.
Если Вы определяете слово QUICK, то драйвер таблицы не будет объединять индексные листья в течение процесса удаления, что может ускорять некоторые виды удаления.
В MyISAM-таблицах удаленные записи поддерживаются в связанном списке, и старые позиции записей повторно используются вызовом INSERT. Чтобы освободить неиспользуемое место и уменьшить размеры файла, используйте команду OPTIMIZE TABLE или утилиту myisamchk, чтобы реорганизовать таблицы. OPTIMIZE TABLE проще, но myisamchk быстрее. Подробности в разделе "4.6 Синтаксис OPTIMIZE TABLE".
Вы можете удалять строки из многих таблиц в то же самое время, а также иметь дополнительные таблицы, которые используются для поиска.
Символ.* после имени таблицы появился для совместимости с Access:
DELETE t1,t2 FROM t1,t2,t3 WHERE t1.id=t2.id AND t2.id=t3.idВ вышеупомянутом случае мы удаляем строки соответствий только из таблиц t1 и t2.
ORDER BY и использование нескольких таблиц в DELETE реализовано, начиная с MySQL 4.0.
Если предложение ORDER BY используется, строки будут удалены в заданном порядке. Это удобно в сочетании с LIMIT. Например:
DELETE FROM somelog WHERE user='jcole' ORDER BY timestamp LIMIT 1Это удалит самую старую запись (по timestamp), где строка соответствует предложению WHERE.
MySQL-специфичная опция LIMIT rows функции DELETE сообщает серверу максимальное число строк, которые будут удалены прежде, чем управление будет возвращено пользователю. Это может использоваться, чтобы гарантировать, что специфическая команда DELETE не займет слишком много времени. Вы можете просто повторять команду DELETE, пока число обрабатываемых строк не меньше, чем значение LIMIT.
Дата добавления: 2015-08-18; просмотров: 60 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Работа с БД MySQL через расширение mysql | | | Что такое cookies и как с ними работать |