Как удалить строку в mysql
Команда DELETE удаляет данные из БД. Она имеет следующий формальный синтаксис:
DELETE FROM имя_таблицы [WHERE условие_удаления]
Например, удалим строки, у которых производитель — Huawei:
DELETE FROM Products WHERE Manufacturer='Huawei';

Или удалим все товары, производителем которых является Apple и которые имеют цену меньше 60000:
DELETE FROM Products WHERE Manufacturer='Apple' AND Price < 60000;
Если необходимо вовсе удалить все строки вне зависимости от условия, то условие можно не указывать:
DELETE FROM Products;
MySQL: DELETE удаление записи, TRUNCATE очистка данных таблицы
MySQL-инструкция DELETE удаляет строки из таблицы и возвращает количество удаленных строк. Чтобы проверить количество удаленных строк, необходимо вызвать функцию SELECT ROW_COUNT() . Аналогичная функция Python модуля MySQLdb - Cursor.rowcount .
Синтаксис инструкции DELETE .
-- удаление строк/записей из одной таблицы DELETE [IGNORE] FROM tbl_name [AS tbl_alias] WHERE condition ORDER BY . [ASC|DESC] LIMIT count
Комментарии к синтаксису DELETE :
- Условия в необязательном операторе WHERE определяют, какие строки следует удалить. ВНИМАНИЕ! При отсутствии предложения WHERE будут удалены ВСЕ строки. Условие condition - это выражение, которое принимает значение TRUE для каждой удаляемой строки. Дополнительно смотрите материал "Использование инструкции WHERE в запросах к БД MySQL"
- Если указана инструкция ORDER BY , то строки удаляются в указанном порядке. ORDER BY можно применить к удалениям из одной таблицы, но не поддерживает удаления из нескольких таблиц.
- Инструкция LIMIT устанавливает ограничение на количество строк, которые могут быть удалены. LIMIT можно применить к удалениям из одной таблицы, но не к удалениям из нескольких таблиц.
- Модификатор IGNORE заставляет MySQL игнорировать ошибки во время процесса удаления строк. (Ошибки, возникшие на этапе синтаксического анализа, обрабатываются обычным способом.) Ошибки, которые игнорируются из-за использования IGNORE , возвращаются как предупреждения.
Инструкция TRUNCATE TABLE является более быстрым способом очистки таблицы, чем оператор DELETE без предложения WHERE . В отличие от DELETE , инструкцию TRUNCATE TABLE нельзя использовать внутри транзакции и при блокировке таблицы.
Использование WHERE при удалении записей.
Условия WHERE определяет, какие строки следует удалить, а при его отсутствии будут удалены ВСЕ строки. Условие condition - это выражение, которое принимает значение TRUE для каждой удаляемой строки.
Например стоит задача: удаления записей о продажах за определенное число или очистка старых (ненужных) данных из таблицы sales :
-- удаление старых (ненужных) записей о продажах до '2001-07-09' DELETE FROM sales WHERE date_sales '2001-07-09'; -- удаления записей о продажах за сегодня DELETE FROM sales WHERE date_sales=NOW();
Использование инструкции ORDER BY и LIMIT .
Инструкции ORDER BY и LIMIT можно использовать, если при удалении данных необходимо оставить какое то определенное количество строк новых записей.
-- подсчитываем кол-во строк в таблице `logs` SET @count = SELECT count(id) FROM logs; -- удаляем все, кроме 500 последних добавленных строк DELETE FROM logs WHERE @count > 500 ORDER BY id ASC LIMIT @count - 500;
Или, наверное, можно так (не проверяли):
-- оставит последние 500 строк, если журнал -- таблицы `logs` не превышает 10000000 записей DELETE FROM logs ORDER BY id DESC LIMIT 500, 10000000;
Более подробно об использование инструкций ORDER BY и LIMIT смотрите в материале "Составление запросов SELECT к БД MySQL"
Удаление записей из нескольких таблиц.
Удаление информации - вещь ответственная. Неправильно поставленный запрос может обернуться потерей критических данных. Рекомендуем редко пользоваться запросами DELETE из нескольких таблиц. Если такой запрос необходим в целях оптимизации производительности, сначала постройте подобный запрос с использованием инструкции SELECT , а потом просто замените SELECT на DELETE , а также уберите из запроса извлекаемые столбцы.
-- проверочный запрос `SELECT` SELECT tbl_a.col, tbl_b.col FROM tbl_a , tbl_b USING tbl_a.id = tbl_b.id WHERE condition -- если проверочный запрос выдал -- те строки, которые необходимо удалить, -- то переделываем его на `DELETE` DELETE FROM tbl_a , tbl_b USING tbl_a.id = tbl_b.id WHERE condition
TRUNCATE TABLE полная очистка таблицы MySQL.
Пример очистки таблицы animals от всех записей:
TRUNCATE TABLE animals
Хотя TRUNCATE TABLE похож на инструкцию DELETE , он отличается следующим:
- Операции TRUNCATE удаляют и заново создают таблицу, что намного быстрее, чем удаление строк по одной, особенно для больших таблиц.
- Операции TRUNCATE вызывают неявную фиксацию, поэтому их нельзя откатить.
- Операции TRUNCATE не могут быть выполнены, если сеанс удерживает активную блокировку таблицы.
- TRUNCATE TABLE терпит неудачу для таблицы InnoDB, если есть какие-либо ограничения FOREIGN KEY из других таблиц, которые ссылаются на таблицу. Допускаются ограничения внешнего ключа между столбцами одной и той же таблицы.
- Операции TRUNCATE не возвращают значимого значения количества удаленных строк. Обычный результат - "0 rows affected", что следует интерпретировать как "нет информации".
- Любое значение AUTO_INCREMENT сбрасывается до своего начального значения. Это верно даже для MyISAM и InnoDB, которые обычно не используют повторно значения последовательности.
- Оператор TRUNCATE TABLE не вызывает триггеры ON DELETE , установленные для внешнего ключа FOREIGN KEY .
- КРАТКИЙ ОБЗОР МАТЕРИАЛА.
- Функция connect() модуля MySQLdb
- Методы объекта Cursor модуля MySQLdb
- Исключения, определяемые модулем MySQLdb
- Реализация интерфейса MySQL C API в модуле MySQLdb Python
- Подмодуль times модуля MySQLdb
- Подмодуль converters модуля MySQLdb
- MySQL: Типы хранимых данных
- MySQL: CONVERT() и CAST(), преобразование типов
- MySQL: Неявные преобразования типов в вычислениях
- MySQL: Функции для работы со строками
- MySQL: Функции для работы с датой и временем
- MySQL: Временные интервалы и арифметика с датами
- MySQL: Математические функции
- MySQL: Агрегатные (групповые) функций
- MySQL: SELECT cоставление запросов
- MySQL: CASE и IF() в запросах SELECT
- MySQL: Поиск по шаблону, LIKE в запросах SELECT
- MySQL: Поиск по регулярному выражению
- MySQL: Использование WHERE в запросах
- MySQL: Использование GROUP BY и HAVING
- MySQL: LEFT JOIN и INNER JOIN объединение таблиц
- MySQL: UNION объединение запросов
- MySQL: UPDATE обновление данных таблицы
- MySQL: INSERT/REPLACE добавление данных в таблицу
- MySQL: DELETE/TRUNCATE удаление записи/очистка данных таблицы
- MySQL: CREATE TABLE создание таблиц
- Импорт CSV-файла в MySQL таблицу, экспорт данных в CSV
- MySQL: ALTER TABLE изменение таблицы
- MySQL: Хранимые процедуры и функции
- MySQL: События EVENT и планировщик событий
- MySQL: CREATE/ALTER USER и права GRANT/ROLE
- MySQL: Сброс пароля root на ОС Linux/Windows
- Логирование ВСЕХ и/или МЕДЛЕННЫХ запросов к БД MYSQL
- Кэширование запросов на MySQL-сервере
- Как конвертировать БД MySQL в требуемую кодировку
Запрос MySQL DELETE: как удалить строку из таблицы
Удалить MySQL Команда используется для удаления ненужных строк из таблиц базы данных. Он удаляет всю строку из таблицы и возвращает количество удаленных строк. Команда «Удалить» пригодится для удаления временных или устаревших данных из вашей базы данных.
Запрос на удаление в MySQL может удалить более одной строки из таблицы за один запрос. Это оказывается преимуществом при удалении большого количества строк из таблицы базы данных.
После удаления строки «Удалить» в строке MySQL ее невозможно восстановить. Поэтому этоtrongly рекомендует делать резервные копии базы данных перед удалением каких-либо данных из базы данных. Это может позволить вам восстановить базу данных и просмотреть данные. later если это потребуется.
Как удалить строку в MySQL
Чтобы удалить строку в MySQL, используется оператор DELETE FROM:
DELETE FROM `table_name` [WHERE condition];
- DELETE FROM `table_name` сообщает серверу MySQL удалить строки из таблицы.
- [Условие WHERE] является необязательным и используется для установки фильтра, который ограничивает количество строк, на которые влияет запрос строки MySQL с синтаксисом DELETE.
Если же линия индикатора Предложение WHERE не используется в MySQL DELETE-запрос, то все строки в данной таблице будут удалены.
Пример запроса на удаление MySQL
Прежде чем мы перейдем к более подробному обсуждению оператора SQL DELETE, давайте вставим несколько примеров данных в таблицу фильмов, чтобы с ними можно было работать.
INSERT INTO `movies` (`title`, `director`, `year_released`, `category_id`) VALUES ('The Great Dictator', 'Chalie Chaplie', 1920, 7); INSERT INTO `movies` (`title`, `director`, `category_id`) VALUES ('sample movie', 'Anonymous', 8); INSERT INTO movies (`title`, `director`, `year_released`, `category_id`) VALUES ('movie 3', 'John Brown', 1920, 8);
Выполнение приведенного выше сценария добавляет три (3) фильма в таблицу фильмов. Прежде чем мы продолжим наш урок, давайте соберем все фильмы в нашу таблицу. Сценарий, показанный ниже, делает это.
SELECT * FROM `movies`;
Выполнение приведенного выше сценария дает нам следующее:wing результаты.
| movie_id | title | director | year_released | category_id |
|---|---|---|---|---|
| 1 | Pirates of the Caribean 4 | Rob Marshall | 2011 | 1 |
| 2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
| 3 | X-Men | NULL | 2008 | NULL |
| 4 | Code Name Black | Edgar Jimz | 2010 | NULL |
| 5 | Daddy's Little Girls | NULL | 2007 | 8 |
| 6 | Angels and Demons | NULL | 2007 | 6 |
| 7 | Davinci Code | NULL | 2007 | 6 |
| 9 | Honey mooners | John Schultz | 2005 | 8 |
| 16 | 67% Guilty | NULL | 2012 | NULL |
| 18 | The Great Dictator | Chalie Chaplie | 1920 | 7 |
| 19 | sample movie | Anonymous | NULL | 8 |
| 20 | movie 3 | John Brown | 1920 | 8 |
Предположим, что видеотека Myflix больше не желает сдавать в аренду «Великого диктатора» своим участникам и они хотят удалить его из базы данных. Его идентификатор фильма — 18, мы можем использовать скрипт, показанный ниже, для удаления строки из примера таблицы MySQL.
DELETE FROM `movies` WHERE `movie_id` = 18;
Выполнение приведенного выше сценария в MySQL Workbench против Myflix удаляет фильм с идентификатором 18 из таблицы базы данных.
Давайте посмотрим текущий статус таблицы фильмов.
SELECT * FROM `movies`;
| movie_id | title | director | year_released | category_id |
|---|---|---|---|---|
| 1 | Pirates of the Caribean 4 | Rob Marshall | 2011 | 1 |
| 2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
| 3 | X-Men | NULL | 2008 | NULL |
| 4 | Code Name Black | Edgar Jimz | 2010 | NULL |
| 5 | Daddy's Little Girls | NULL | 2007 | 8 |
| 6 | Angels and Demons | NULL | 2007 | 6 |
| 7 | Davinci Code | NULL | 2007 | 6 |
| 9 | Honey mooners | John Schultz | 2005 | 8 |
| 16 | 67% Guilty | NULL | 2012 | NULL |
| 19 | sample movie | Anonymous | NULL | 8 |
| 20 | movie 3 | John Brown | 1920 | 8 |
- фильм с идентификатором 18 не был возвращен в наборе результатов запроса.
- вы не можете удалить ни один столбец таблицы. Вы можете удалить целую строку.
Допустим, у нас есть список фильмов, которые мы хотим удалить. Мы можем использовать предложение WHERE вместе с IN.
DELETE FROM `movies` WHERE `movie_id` IN (20,21);
Выполнение приведенного выше сценария удаляет фильмы с идентификаторами 20 и 21 из нашей таблицы фильмов.
Выводы
- Команда Удалить в MySQL используется для удаления из таблицы данных, которые больше не требуются.
- «Предложение WHERE» используется для ограничения количества строк, на которые влияет команда MySQL запроса DELETE.
- После того как данные были удалены, их невозможно восстановить, поэтому ониtronМы рекомендуем делать резервные копии перед удалением данных.
- Учебное пособие по проектированию базы данных в СУБД: изучение моделирования данных
- Учебное пособие по MySQL Workbench: что такое, как установить и использовать
- Что такое база данных? Определение, значение, типы с примером
- Оператор MySQL SELECT с примерами
- Учебник по SQL для начинающих: изучите SQL за 7 дней
- Учебное пособие по MySQL для начинающих: изучите основы MySQL за 7 дней
- 15 лучших SQL-инструментов, программного обеспечения и IDE для баз данных (2024 г.)
- MariaDB против MySQL – разница между ними
DELETE оператор MySQL
MySQL оператор DELETE используется для удаления одной записи или нескольких записей из таблицы в MySQL.
Синтаксис
Простой синтаксис оператора DELETE в MySQL:
DELETE FROM table
[WHERE conditions];
Теперь полный синтаксис оператора DELETE в MySQL:
DELETE [ LOW_PRIORITY ] [ QUICK ] [ IGNORE ] FROM table
[WHERE conditions]
[ORDER BY expression [ ASC | DESC ]]
[LIMIT number_rows];
Параметры или аргументы
LOW_PRIORITY - необязательный. Если указан LOW_PRIORITY , удаление будет задерживаться до тех пор, пока не будет никаких процессов затрагивающих таблицу. LOW_PRIORITY может использоваться с таблицами MyISAM, MEMORY и MERGE, которые используют блокировку на уровне таблицы.
QUICK - необязательный. Если указан QUICK , в процессе удаления не удаляются листы индекса, что делает удаление быстрее для таблиц MyISAM
IGNORE - необязательный. Если указан IGNORE , все ошибки, возникающие во время удаления, игнорируются. IGNORE был представлен в MySQL 4.1.1.
table - таблица, из которой вы хотите удалить записи.
WHERE conditions - необязательный. Условия, которые должны быть выполнены для записей, подлежащих удалению. Если условий не предусмотрено, все записи из таблицы будут удалены.
ORDER BY expression - необязательный. Он может использоваться в сочетании с LIMIT для сортировки записей соответствующим образом при ограничении количества удаляемых записей.
LIMIT - необязательный. Если LIMIT указан, то он контролирует максимальное количество записей для удаления из таблицы. В лучшем случае количество записей, заданных number_rows , будет удалено из таблицы.
Примечание
- Вам не нужно указывать поля в инструкции DELETE MySQL, так как вы удаляете всю строку из таблицы.
Пример с одним условием
Рассмотрим пример запроса MySQL DELETE, в котором у нас есть только одно условие в операторе DELETE.
Например: