кодесурса
«MYSQL

MySQL DELETE заявление

script1adsense2code
script1adsense3code

УДАЛИТЬ заявление

Оператор 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 программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code