ОСНОВНОЕ

WORDPRESS

Операционные системы

Базы данных

Фреймворк Bootstrap

В сепаратном договоре не ищи спасения (К. Прутков).

10 основных примеров команды DELETE в MariaDB / MySQL

FavoriteLoadingДобавить в избранное
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...

Статья опубликована: 4 ноября 2016

10 основных примеров команды DELETE в MariaDB / MySQL
Когда вы работаете с базой данных MySQL, в нескольких ситуациях вы можете удалить существующие записи из одной или нескольких таблиц.

На этом уроке мы расскажем, как использовать DELETE в MySQL с некоторыми полезными примерами.

Рассматриваются в данном руководстве следующие примеры:

  • Удаление конкретной строки
  • Удаление нескольких строк (с помощью сопоставления номера столбца)
  • Удаление нескольких строк (с помощью сопоставления строки столбца)
  • Удаление записей с опцией LIMIT
  • DELETE Vs Truncate (для удаления всех строк)
  • Удаление записей с вариантом IGNORE
  • Как использовать сортировку с операцией DELETE?
  • Удаление записей с опцией QUICK
  • Удаление записей с опцией LOW_PRIORITY
  • Удаление записей из нескольких таблиц с использованием INNER join

Для удаления записей из таблицы, вы должны иметь привилегию DELETE на конкретной таблице, из которой вы пытаетесь удалить строки.

Для этого урока мы будем использовать следующую таблицу сотрудников в качестве примера.

 

Если вы новичок в MySQL, вероятно, вы должны сначала понять основы MySQL, включая, как создать базу данных MySQL.

1. Удаление определенной строки

Чтобы удалить определенную строку, вы должны указать условие, при котором с помощью одного из значения столбцов первичного или уникального значения столбца.

Следующий пример удаляет одну запись из таблицы сотрудников, который имеет идентификатор 100.

 

В приведенном выше выводе:

  • Выход команды удаления покажет вам, сколько записей он удаляет. Как видно из приведенного выше вывода, говориться: “1 row affected”, что означает, что он удалил одну строку.
  • Выходной сигнал будет также сказать “Query OK”, если запрос был выполнен. Если есть ошибка синтаксиса, он будет отображать его здесь. Даже если он не удалит любую запись, эта строка будет по-прежнему говорить “Query OK”, пока не было никаких ошибок синтаксиса и утверждение было чистым. И, наконец, это также покажет, сколько времени потребовалось для MySQL для выполнения запроса (например: 0,01 секунды).

Первая запись с идентификатором 100 будет удалена из таблицы сотрудников.

 

2. Удаление нескольких строк с использованием столбца типа String Matching

Вы можете удалять записи из таблицы путем сопоставления столбца строки с определенными критериями.

Для строки, вы можете использовать ключевое слово “like”, который будет делать частичное соответствие. Для частичного соответствия используется % в столбце значений.

В следующем примере будем удалять записи из таблицы сотрудников, где значение в столбце DEPT начинается с “Tech”. Таким образом, это удалит все записи, где отдел “IT”.

 

Приведенный выше вывод указывает на то, что он удалил 3 записи. Как мы видим из следующего выхода, мы не видим больше записей отдела “IT”.

 

Мы обсуждали много о различных практических условиях команды WHERE в нашем MySQL учебнике. Это очень полезно, чтобы понять, как эффективно использовать предложение WHERE во время удаления: 25 Основных примеров команды WHERE в MySQL.

3. Удаление нескольких строк, используя номер столбца Matching

Аналогично в приведенном выше примере номера столбца, вы можете также удалять записи из таблицы путем сопоставления столбца строке с определенными критериями.

Ниже будем удалять записи из таблицы сотрудников, где зарплата меньше или равна 700.

 

Вышеуказанная команда удалила 4 записи из нашей таблицы сотрудников. У нас в настоящее время осталась только одна запись.

 

4. Удаление строк с опцией LIMIT

Даже тогда, когда соответствует много записей, вы все еще можете ограничить, сколько записей следует удалить с помощью опции LIMIT.

Это очень полезно, когда команда удаления занимает очень много времени, и вы хотите разорвать операцию удаления на несколько кусков. Например, при удалении более 100 000 записей, вы можете использовать LIMIT 10000, чтобы удалить только 10000 записей в один момент.

Например, следующая команда удаления без какой-либо опции LIMIT будут удалять все соответствующие записи. т.е. этот удалила 5 записей.

 

Но когда вы используете опцию LIMIT, то следующим будут удалять только 2 записи, даже если запросу соответствует 5 записей.

 

Выполнить ту же команду удаления еще раз, что приведет к удалению больше 2 записей.

 

При выполнении его снова, на этот раз он удаляется только одну запись, так как это последний совпадающие записи.

 

Теперь у нас нет каких-либо более совпадающих записей для удаления.

 

5. DELETE Vs Truncate (для удаления всех строк)

Если вы хотите удалить все строки из таблицы, вы можете использовать либо команду DELETE или команду TRUNCATE, как показано ниже. Оба будут делать то же самое. Но есть разница.

 

Ниже приведены несколько вещей, которые вы должны знать о DELETE против TRUNCATE:

  • TRUNCATE это намного быстрее, чем DELETE. Если вы просто хотите быстрый способ очистить таблицу, используйте TRUNCATE.
  • DELETE это заявление DML. TRUNCATE это заявление DDL.
  • При выполнении команды TRUNCATE, это действительно удалит таблицу и заново создать пустую таблицу. Именно по этой причине усечения очень быстро, так как она не удаляет записи один за другим, как команда удаления.
  • Когда есть замок на конкретной таблице, вы не можете использовать команду TRUNCATE.
  • Как видно из приведенного выше вывода команды TRUNCATE не показывает, сколько строк будут удалено. Он просто скажет: “0 rows affected”, даже когда он обрезает таблицу, в которой было несколько строк.
  • Так что, если вам нужно знать, сколько записей во время очистки таблицы были удалены, вы должны использовать DELETE.
  • Если у вас есть триггер on-delete на удаление таблицы, при выполнении команды TRUNCATE, эти триггеры выполняться не будут.
  • Наконец, важное отличие заключается в следующем: При выполнении команды TRUNCATE, вы не можете откатить. Но при выполнении команды DELETE, вы можете откатить. Округление делает неявное обязательство.

6. Удалить строки с опцией IGNORE

Вы можете использовать ключевое слово IGNORE вместе с командой DELETE (т.е. DELETE IGNORE), когда вы хотите игнорировать реальное действительное сообщение об ошибке, если вы знаете, ваша конкретная команда DELETE будет сбрасывать.

Таким образом, когда вы используете DELETE IGNORE, если есть любое действительное сообщение об ошибке, он будет рассматриваться только как предупреждение. Вы должны быть очень осторожны, когда вы используете DELETE IGNORE, особенно в таблице, где у вас есть внешний ключ, так как DELETE IGNORE просто удалит записи, не беспокоясь о каких-либо внешних зависимостей внешнего ключа.

 

Как видно из приведенного выше вывода, DELETE IGNORE удаляит записи из таблицы, даже если существует зависимость внешнего ключа. Он просто выведет те реальные сообщение об ошибке как предупреждения.

7. Зачем использовать Order с DELETE?

Вы можете использовать Order вместе с командой Delete.

Это может быть очень полезно, если вы хотите, чтобы ваши строки будут удалены в определенном порядке.

В команде удаления, когда вы объединяете “order by” и опцию “limit”, вы можете сделать некоторые трюки.

Например, при выполнении следующей команды удаления без “order by”, удалит запись сотрудника с кодом 100 (т.е. самого старого сотрудника в отделе «IT»).

 

Приведенная выше команда удалила идентификационный номер сотрудника 200 (самый старый работник IT).

 

Но, вы можете также удалить нового сотрудника в отделе «IT», если объединить и упорядочить по LIMIT, как показано ниже.

 

Приведенная выше команда удалила идентификационный номер сотрудника 500 (самый новый работник IT).

 

Кроме того, имейте в виду, что вы можете использовать ORDER BY в предложении, если вы хотите удалить записи в определенной последовательности, чтобы избежать каких-либо ограничений ссылочной целостности.

8. Удаление строк с опцией QUICK

В огромной таблице, которая имеет некоторые индексы, вы можете использовать быстрый вариант для ускорения операции удаления, как показано ниже.

 

В Delete, когда вы используете быстрый вариант, это не слияние индексов, которые могут Ускорить операцию удаления в зависимости от вида индексов, которые есть у вас в таблице.

9. Удаление строк с опцией LOW_PRIORITY

Низкий приоритет очень полезен, когда вы пытаетесь удалить записи из таблицы, которая слишком большая.

Ключевое слово LOW_PRIORITY будет эффективным только на этих двигателях хранения: MyISAM, MEMORY и MERGE. т.е. Вы можете использовать эту функцию только на двигателях для хранения базы данных, которые реализуют блокировки на уровне таблицы.

 

При использовании ключевого слова LOW_PRIORITY, операция удаления будет происходить только тогда, когда никто не читает из таблицы.

10. Удалить из нескольких таблиц с использованием INNER JOIN

Во всех предыдущих примерах мы использовали команду удаления, чтобы удалить только записи из одной таблицы.

Есть два способа. когда можно указать удаление записей из нескольких таблиц.

В первом способе, можно указать таблицы, из которых записи будут удалены перед ключевым словом “FROM”, как показано ниже. Ниже будут удалены записи из worker и benefits таблиц, которые соответствуют критериям, указанным в условии where.

 

Во втором способе, можно указать таблицы, где записи будут удалены,  после ключевого слова “FROM”, как показано ниже. Ниже будет удалять записи из worker и benefits, которые соответствуют критериям, указанным в условии where.

10 основных примеров команды DELETE в MariaDB / MySQL


Читайте также

    Добавить комментарий

    Войти с помощью: 

    Ваш e-mail не будет опубликован. Обязательные поля помечены *

    Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!

    badge
    Обратный звонок 1
    Отправить
    galka

    Спасибо! Ваша заявка принята

    close
    galka

    Спасибо! Ваша заявка принята

    close