Как удалить строку в mysql
Перейти к содержимому

Как удалить строку в mysql

  • автор:

Как удалить строку в mysql

Команда DELETE удаляет данные из БД. Она имеет следующий формальный синтаксис:

DELETE FROM имя_таблицы [WHERE условие_удаления]

Например, удалим строки, у которых производитель — Huawei:

DELETE FROM Products WHERE Manufacturer='Huawei';

Команда DELETE в MySQL

Или удалим все товары, производителем которых является Apple и которые имеют цену меньше 60000:

DELETE FROM Products WHERE Manufacturer='Apple' AND Price < 60000;

Если необходимо вовсе удалить все строки вне зависимости от условия, то условие можно не указывать:

DELETE FROM Products;

10) УДАЛИТЬ

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

Запрос на удаление в MySQL может удалить более одной строки из таблицы в одном запросе. Это оказывается преимуществом при удалении большого количества строк из таблицы базы данных.

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

Как удалить строку в MySQL

Чтобы удалить строки в таблице MySQL, используйте оператор DELETE FROM:

DELETE FROM `table_name` [WHERE condition];
  • DELETE FROM `table_name` указывает серверу MySQL удалить строки из таблицы.
  • [Условие WHERE] является необязательным и используется для установки фильтра, который ограничивает количество строк, затронутых запросом DELETE.

Если предложение WHERE не используется в запросе DELETE MySQL, все строки в данной таблице будут удалены.

Пример MySQL Delete Query

Прежде чем перейти к более подробному обсуждению команды 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`;

Выполнение вышеуказанного скрипта дает нам следующие результаты.

 
movie_iditledirectoryear_releasedcategory_id
1Pirates of the Caribean 4Rob Marshall20111
2Forgetting Sarah MarshalNicholas Stoller20082
3X-MenNULL2008NULL
4Code Name BlackEdgar Jimz2010NULL
5Daddy's Little GirlsNULL20078
6Angels and DemonsNULL20076
7Davinci CodeNULL20076
9Honey moonersJohn Schultz20058
1667% GuiltyNULL2012NULL
18The Great DictatorChalie Chaplie19207
19sample movieAnonymousNULL8
20movie 3John Brown19208

Предположим, что видеотека Myflix больше не хочет сдавать в аренду «Великого диктатора» своим членам, и они хотят, чтобы он был удален из базы данных. Идентификатор фильма – 18, мы можем использовать скрипт, показанный ниже, чтобы удалить его строку из таблицы фильмов.

DELETE FROM `movies` WHERE `movie_id` = 18;

Выполнение вышеупомянутого сценария в MySQL WorkBench против Myflix удаляет фильм с идентификатором 18 из таблицы базы данных.

Давайте посмотрим текущее состояние таблицы фильмов.

SELECT * FROM `movies`;
movie_idtitledirectoryear_releasedcategory_id
1Pirates of the Caribean 4Rob Marshall20111
2Forgetting Sarah MarshalNicholas Stoller20082
3X-MenNULL2008NULL
4Code Name BlackEdgar Jimz2010NULL
5Daddy's Little GirlsNULL20078
6Angels and DemonsNULL20076
7Davinci CodeNULL20076
9Honey moonersJohn Schultz20058
1667% GuiltyNULL2012NULL
19sample movieAnonymousNULL8
20movie 3John Brown19208
  • фильм с идентификатором 18 не был возвращен в наборе результатов запроса.
  • Вы не можете удалить один столбец для таблицы. Вы можете удалить всю строку.

Допустим, у нас есть список фильмов, которые мы хотим удалить. Мы можем использовать предложение WHERE вместе с IN.

DELETE FROM `movies` WHERE `movie_id` IN (20,21);

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

Резюме

  • Команда delete используется для удаления данных, которые больше не требуются из таблицы.
  • «Предложение WHERE» используется для ограничения количества строк, затронутых запросом DELETE.
  • После того, как данные были удалены, их невозможно восстановить, поэтому настоятельно рекомендуем сделать резервные копии перед удалением данных.

Запрос MySQL DELETE: как удалить строку из таблицы

Удалить MySQL Команда используется для удаления ненужных строк из таблиц базы данных. Он удаляет всю строку из таблицы и возвращает количество удаленных строк. Команда «Удалить» пригодится для удаления временных или устаревших данных из вашей базы данных.

Запрос на удаление в MySQL может удалить более одной строки из таблицы за один запрос. Это оказывается преимуществом при удалении большого количества строк из таблицы базы данных.

После удаления строки «Удалить» в строке MySQL ее невозможно восстановить. Поэтому настоятельно рекомендуется делать резервные копии базы данных перед удалением каких-либо данных из базы данных. Это может позволить вам восстановить базу данных и просмотреть данные. 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.
  • После удаления данных их невозможно восстановить, поэтому настоятельно рекомендуется сделать резервные копии перед удалением данных.
  • Учебное пособие по проектированию базы данных в СУБД: изучение моделирования данных
  • Учебное пособие по MySQL Workbench: что такое, как установить и использовать
  • Что такое база данных? Определение, значение, типы с примером
  • Оператор MySQL SELECT с примерами
  • Учебник по SQL для начинающих: изучите SQL за 7 дней
  • Учебное пособие по MySQL для начинающих: изучите основы MySQL за 7 дней
  • 15 лучших SQL-инструментов, программного обеспечения и IDE для баз данных (2024 г.)
  • MariaDB против MySQL – разница между ними

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 :
  1. Условия в необязательном операторе WHERE определяют, какие строки следует удалить. ВНИМАНИЕ! При отсутствии предложения WHERE будут удалены ВСЕ строки. Условие condition - это выражение, которое принимает значение TRUE для каждой удаляемой строки. Дополнительно смотрите материал "Использование инструкции WHERE в запросах к БД MySQL"
  2. Если указана инструкция ORDER BY , то строки удаляются в указанном порядке. ORDER BY можно применить к удалениям из одной таблицы, но не поддерживает удаления из нескольких таблиц.
  3. Инструкция LIMIT устанавливает ограничение на количество строк, которые могут быть удалены. LIMIT можно применить к удалениям из одной таблицы, но не к удалениям из нескольких таблиц.
  4. Модификатор 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 в требуемую кодировку

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

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