MySQL DELETE заявление
УДАЛИТЬ заявление
Оператор DELETE используется для удаления строк из таблицы.
Версия: MySQL 5.6
Синтаксис одной таблицы:
УДАЛИТЬ [LOW_PRIORITY] [QUICK] [IGNORE] FROM table_name [PARTITION (имя_раздела, ...)] [ГДЕ где_условие] [СОРТИРОВАТЬ ПО ...] [LIMIT row_count]
Объяснение:
- Оператор DELETE удаляет строки из table_name и возвращает количество удаленных строк. Вы можете использовать функцию ROW_COUNT () для проверки количества удаленных строк.
- Условия в предложении WHERE (необязательно) определяют, какие строки следует удалить.
- Без предложения WHERE все строки удаляются.
- Если вы укажете предложение ORDER BY, строки будут удалены в указанном порядке.
- Предложение LIMIT используется для ограничения количества строк, которые могут быть удалены. Эти пункты применяются к удалению из одной таблицы, но не к удалению из нескольких таблиц.
Синтаксис нескольких таблиц:
УДАЛИТЬ [LOW_PRIORITY] [QUICK] [IGNORE] tbl_name [. *] [, tbl_name [. *]] ... FROM table_references [ГДЕ где_условие]
Или же :
УДАЛИТЬ [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [. *] [, Tbl_name [. *]] ... USING table_references [ГДЕ где_условие]
Важные моменты:
- Привилегии: чтобы удалить записи из таблицы, пользователь должен иметь привилегию DELETE для этой конкретной таблицы.
- Оператор TRUNCATE TABLE - это более быстрый способ очистки таблицы, чем оператор DELETE без предложения WHERE. Здесь подробно обсуждается разница между оператором DELETE и оператором TRUNCATE.
- Подзапросы: В настоящее время нет возможности удалить из таблицы и выбрать из той же таблицы в подзапросе.
- Начиная с MySQL 5.6.2, DELETE поддерживает явный выбор разделов с помощью опции PARTITION, которая берет разделенный запятыми список имен одного или нескольких разделов или подразделов (или обоих), из которых можно выбрать строки, которые должны быть удалены. Разделы, не включенные в список, игнорируются. Для заданной многораздельной таблицы t с разделом с именем p0 выполнение оператора DELETE FROM t PARTITION (p0) имеет тот же эффект для таблицы, что и выполнение ALTER TABLE t TRUNCATE PARTITION (p0); в обоих случаях все строки в разделе p0 удаляются.
- Автоинкрементные столбцы: если вы удаляете строку, содержащую максимальное значение для столбца AUTO_INCREMENT, это значение не используется повторно для таблицы MyISAM или InnoDB.
Пример: MySQL УДАЛИТЬ определенные строки или записи
Следующий оператор удалит эти записи из таблицы 'newcate', которая удовлетворяет условию 'cate_id' = 'CA002'.
Образец таблицы: newcate
Код:
DELETE FROM newcate
WHERE cate_id='CA002';
Пример: MySQL УДАЛИТЬ все строки или записи
Если условие MySQL DELETE не сопровождается каким-либо условием удаления строк, оператор удаляет все записи или строки из таблицы. Следующий оператор удалит все строки или записи из таблицы «Newcate».
Код:
DELETE FROM Newcate;
Пример: MySQL DELETE с ORDER BY для ограниченного числа строк
Ключевое слово ORDER BY и LIMIT можно использовать с оператором MySQL DELETE для удаления только заданного количества строк, где столбцы сортируются в определенном порядке. Предложение ORDER BY сортирует столбцы в определенном порядке, а ключевое слово LIMIT удаляет только те числовые строки, которые указаны числовым значением, за которым сразу следует ключевое слово LIMIT. Смотрите следующий пример:
Образец таблицы: newauthor
Код:
DELETE FROM newauthor
ORDER BY country DESC LIMIT 2;
Приведенное выше заявление будет делать следующее -
1. упорядочить строки таблицы «newauthor» в порядке убывания в соответствии со столбцом «страна»,
2. удалить только две (2) строки для каждой «страны» .
Пример: строки MySQL DELETE с использованием подзапросов с псевдонимом и EXISTS
Подзапрос может использоваться с оператором MySQL DELETE. Это полезно, когда вы хотите удалить строки в зависимости от сложного условия.
Если мы хотим удалить записи из таблицы 'newauthor' с соблюдением следующих условий -
1. 'aut_id' таблицы 'newauthor' должен существовать в таблице 'book_mast',
2. «no_pages» таблицы «book_mast» должно быть больше 300,
3. 'aut_id' для 'newauthor' и 'aut_id' для 'book_mast' должны совпадать,
затем выполните следующий код.
Образец таблицы: newauthor
Пример таблицы: book_mast
Код:
DELETE FROM newauthor
WHERE exists
(SELECT *
FROM book_mast
WHERE no_page>300
AND newauthor.aut_id=book_mast.aut_id);
MySQL TRUNCATE таблица
Оператор MySQL TRUNCATE TABLE используется для удаления всех строк из таблицы. По-видимому, это похоже на оператор «DELETE FROM <TABLE NAME>», но они довольно разные.
Разница между TRUNCATE и DELETE
TRUNCATE | УДАЛЯТЬ |
---|---|
Это команда DDL (т. Е. Команда, используемая для определения структуры или схемы базы данных), и после того, как вы удалили строки, используя ее, вы не можете использовать ROLLBACK для отмены задачи. | Это команда DML (т. Е. Команда, используемая для управления данными), и ее можно откатить. |
Вы не можете использовать предложение WHERE. | Вы можете использовать предложение WHERE. |
Быстрее, чем УДАЛИТЬ. | Медленнее, чем TRUNCATE. |
Синтаксис:
TRUNCATE table <имя_таблицы>
Где table_name указывает имя таблицы
Пример: таблица MySQL TRUNCATE
Следующая инструкция MySQL удалит все строки из новой таблицы автора.
Образец таблицы: newauthor
Код:
TRUNCATE TABLE newauthor;
Предыдущая: MySQL Update
Далее: MySQL базовый оператор выбора
Новый контент: Composer: менеджер зависимостей для PHP , R программирования