Команда SQL для удаления и обновление данных в базе (DELETE, UPDATE)

В базу данных можно не только добавлять данные, но и удалять их оттуда. Ещё существует возможность обновить данные в базе. Рассмотрим оба случая.

Удаление данных из базы (DELETE)

Удаление из базы данных происходит с помощью команды «DELETE» (переводится с английского как «УДАЛИТЬ»). Функция удаляет не одну строку, а несколько, при этом выбирает для удаления строки по логике функции «SELECT». То есть чтобы удалить данные из базы, необходимо точно определить их. Приведём пример SQL команды для удаления одной строчки:

DELETE FROM `USERS` WHERE `ID` = 2 LIMIT 1;

Благодаря этому запросу из таблицы «USERS» будет удалена одна запись, у которой в столбце «ID» стоит значение «2».

Обратите внимание, что в конце запроса стоит лимит на выборку «LIMIT 1;» размером в 1 строку.

Его можно было не ставить, если поле «ID» является «PRIMARY KEY» (первичный ключ, то есть содержит только уникальные значения). Но всё-таки рекомендуем ставить ограничение «LIMIT 1;» в любом случае, если вы намерены удалить только одну строчку.

Теперь попробуем удалить сразу диапазон данных. Для этого достаточно составить запрос, в результате выполнения которого вернётся несколько строк. Все эти строки будут удалены:

DELETE FROM `USERS` WHERE `ID` >= 5;

Этот запрос удалит все строки в таблицы, у которых в столбце «ID» стоит значение меньше 5. Если не поставить никакого условия «WHERE» и лимита «LIMIT», то будут удалены абсолютно все строки в таблице:

DELETE FROM `USERS`;

На некоторых версиях MySQL способ удаления всех строк через «DELETE FROM _;» может работать медленнее, чем «TRUNCATE _;«; Поэтому для очистки всей таблицы лучше всё-таки использовать «TRUNCATE».

Обновление данных в базе (UPDATE)

Функция обновления «UPDATE» (переводится с английского как «ОБНОВИТЬ») довольно часто используется в проектах сайтов. Как и в случае с функцией «DELETE», фкнция обновления не успокоится до тех пор, пока не обновит все поля, которые подходят под условия, если нет лимита на выборку. Поэтому необходимо задавать однозначные условия, чтобы вместо одной строки нечаянно не обновить половину таблицы. Приведём пример использования команды «UPDATE»:

UPDATE `USERS` SET `NAME` = 'Мышь' WHERE `ID` = 3 LIMIT 1;

В этом примере, в таблие «USERS» будет установлено значение «Мышь» в столбец «NAME» у строки, в столбце «ID» которой стоит значение «3». Можно обновить сразу несколько столбцов у одной записи, передав значения через запятую. Попробуем обновить не только значение с толбце «NAME», но и значение в столбце «FOOD» используя один запрос:

UPDATE `USERS` SET `NAME` = 'Мышь', `FOOD` = 'Сыр' WHERE `ID` = 3 LIMIT 1;

Если не поставить никаких лимитов LIMIT и условий WHERE, то все записи таблицы будут обновлены без исключений.

Была ли эта статья полезна? Есть вопрос?

Закажите недорогой хостинг Заказать

всего от 290 руб

SQL DELETE — удаление данных из таблицы базы данных

Навигация по уроку

  • Оператор SQL DELETE и удаление данных с условием
  • Оператор SQL DELETE и удаление всех данных из таблицы
  • Удаление данных по более сложному условию

Связанные темы

  • Реляционная модель данных
  • Создание базы данных
  • Изменение таблиц базы данных
НазадСодержаниеВперёд>>>

Оператор SQL DELETE предназначен для удаления данных из таблицы. Он имеет следующий синтаксис:

DELETE FROM ИМЯ_ТАБЛИЦЫ WHERE УСЛОВИЕ

Если не указывать условие, из таблицы будут удалены все строки.

Кроме того, следует помнить, что могут быть удалены лишь строки с первичными ключами, на которые не ссылаются внешние ключи в других таблицах (более подробно об ограничениях удаления — в уроке Реляционная модель данных).

Если вы хотите выполнить запросы к базе данных из этого урока на MS SQL Server, но эта СУБД не установлена на вашем компьютере, то ее можно установить, пользуясь инструкцией по этой ссылке.

А скрипт для создания базы данных «Портал объявлений 1», её таблицы и заполения таблицы данных — в файле по этой ссылке.

Пример 1. Итак, есть база портала объявлений. В ней есть таблица Ads, содержащая данные о объявлениях, поданных за неделю (более подробно — в уроке об агрегатных функциях SQL, пример 7). Таблица выглядит так:

IdCategoryPartUnitsMoney
1ТранспортАвтомашины11017600
2НедвижимостьКвартиры8918690
3НедвижимостьДачи5711970
4ТранспортМотоциклы13120960
5СтройматериалыДоски687140
6ЭлектротехникаТелевизоры1278255
7ЭлектротехникаХолодильники1378905
8СтройматериалыРегипс11211760
9ДосугКниги966240
10НедвижимостьДома479870
11ДосугМузыка1177605
12ДосугИгры412665

Требуется удалить из таблицы строку, имеющую идентификатор 4.

Для этого пишем следующий запрос (на MS SQL Server — с предваряющей конструкцией USE adportal1;):

DELETE FROM ADS WHERE Id=4

Пример 2. Можно удалить и несколько строк, если в условии применить оператор сравнения «больше» или «меньше» (на MS SQL Server — с предваряющей конструкцией USE adportal1;):

DELETE FROM ADS WHERE Id>4

В результате в таблице останутся лишь следующие строки:

IdCategoryPartUnitsMoney
5СтройматериалыДоски687140
6ЭлектротехникаТелевизоры1278255
7ЭлектротехникаХолодильники1378905
8СтройматериалыРегипс11211760
9ДосугКниги966240
10НедвижимостьДома479870
11ДосугМузыка1177605
12ДосугИгры412665

  • Страница 2 (удаление данных по более сложному условию)

Пример 3.

Аналогично можно удалять строки с заданными значениями любого столбца. Удалим, например, строки об объявлениях, за которые выручено менее 10000 денежных единиц (запрос на MS SQL Server — с предваряющей конструкцией USE adportal1;):

DELETE FROM ADS WHERE Money

В результате в таблице останутся лишь следующие строки:

IdCategoryPartUnitsMoney
1ТранспортАвтомашины11017600
2НедвижимостьКвартиры8918690
3НедвижимостьДачи5711970
4ТранспортМотоциклы13120960
8СтройматериалыРегипс11211760

  • Страница 2 (удаление данных по более сложному условию)

Для удаления всех строк из таблицы применяется оператор SQL DELETE без условий, заданных в секции WHERE и без любых других ограничей и условий, например, диапазона удаляемых строк. Таким образом, для удаления всех строк синтаксис оператора DELETE будет следующим (на MS SQL Server — с предваряющей конструкцией USE adportal1;):

DELETE FROM ИМЯ_ТАБЛИЦЫ

Пример 4. Чтобы удалить все данные из таблицы ADS, достаточно написать следующий запрос:

DELETE FROM ADS

Если после выполнения этого запроса обратиться к таблице ADS при помощи оператора SELECT, применяемого для получения выборки данных, то будет выведено сообщение о том, что эта таблица не содержит данных.

Оператору DELETE без условий и ограничений аналогичен оператор TRUNCATE TABLE. Он также удаляет из таблицы все строки, но выполняется намного быстрее.

Пример 5. Запрос на удаление всех данных из таблицы ADS при помощи оператора TRUNCATE TABLE будет следующим (на MS SQL Server — с предваряющей конструкцией USE adportal1;):

TRUNCATE TABLE ADS

Примеры запросов к базе данных «Портал объявлений-1» есть также в уроках об операторах INSERT, UPDATE, HAVING и UNION.

  • Страница 2 (удаление данных по более сложному условию)

Поделиться с друзьями

НазадСодержаниеВперёд>>>

SQL Server DELETE — удаление одной или нескольких строк из таблицы

Сводка : в этом руководстве вы узнаете, как использовать оператор SQL Server DELETE для удаления одной или нескольких строк из таблицы.

Введение в SQL Server

Оператор DELETE

Для полного удаления одной или нескольких строк из таблицы используется оператор DELETE . Ниже показан синтаксис:

 DELETE [ TOP ( выражение ) [ PERCENT ] ]
ОТ имя_таблицы
[ГДЕ условие_поиска];
  Язык кода: SQL (язык структурированных запросов) (sql)  

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

Например, следующая инструкция удалит все строки из таблицы target_table :

 DELETE FROM target_table;
  Язык кода: SQL (язык структурированных запросов) (sql)  

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

Например, следующая инструкция DELETE удаляет 10 случайных строк из таблицы target_table :

 DELETE TOP 10 FROM target_table;
  Язык кода: SQL (язык структурированных запросов) (sql)  

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

Точно так же вы можете удалить 10 процентов случайных строк, используя следующие УДАЛИТЬ оператор:

 УДАЛИТЬ ВЕРХНИЕ 10 ПРОЦЕНТОВ ИЗ target_table;
  Язык кода: SQL (язык структурированных запросов) (sql)  

В-третьих, на практике вы редко будете удалять все строки из таблицы, а только одну или несколько строк. В этом случае вам нужно указать search_condition в предложении WHERE , чтобы ограничить количество удаляемых строк.

Строки, в которых search_condition оценивается как true, будут удалены.

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

SQL Server

DELETE примеры операторов

Давайте создадим новую таблицу для демонстрации.

Следующий оператор создает таблицу с именем production.product_history с данными, скопированными из таблицы production.products :

 SELECT *
В производство.product_history
ОТ
    производство.продукции;
  Язык кода: SQL (язык структурированных запросов) (sql)  

Следующий запрос возвращает все строки из таблицы product_history :

 SELECT * FROM production.product_history;
  Язык кода: SQL (язык структурированных запросов) (sql)  

Как видно из выходных данных, всего у нас 321 строка.

1) Удалить количество случайных строк пример

Следующая инструкция DELETE удаляет 21 случайную строку из product_history таблица:

 УДАЛИТЬ TOP (21)
ИЗ производства.продукт_история;
  Язык кода: SQL (язык структурированных запросов) (sql)  

Вот сообщение, выданное SQL Server:

 (затронута 21 строка)
  Язык кода: SQL (язык структурированных запросов) (sql)  

Это означает, что удалена 21 строка.

2) Удалить процент случайных строк пример

Следующая инструкция DELETE удаляет 5 процентов случайных строк из product_history таблица:

 УДАЛИТЬ ВЕРХ (5) ПРОЦЕНТ
ИЗ производства.продукт_история;
  Язык кода: SQL (язык структурированных запросов) (sql)  

SQL Server выдал следующее сообщение, указывающее, что 15 строк (300 x 5% = 15) удалены.

 (затронуто 15 рядов)
  Язык кода: SQL (язык структурированных запросов) (sql)  

3) Удалить несколько строк с условием example

Следующая инструкция DELETE удаляет все продукты, модельный год которых 2017:

 УДАЛИТЬ
ОТ
    производство. product_history
ГДЕ
    модель_год = 2017;
  Язык кода: SQL (язык структурированных запросов) (sql)  

Вот выходное сообщение:

 (затронуто 75 строк)
  Язык кода: SQL (язык структурированных запросов) (sql)  

4) Удалить все строки из таблицы пример

Следующая инструкция DELETE удаляет все строки из таблицы product_history :

 product_history production.DELETE FROM ;
  Язык кода: SQL (язык структурированных запросов) (sql)  

Обратите внимание, что если вы хотите удалить все строки из большой таблицы, вы должны использовать оператор TRUNCATE TABLE , который быстрее и эффективнее.

Из этого руководства вы узнали, как использовать оператор SQL Server DELETE для удаления одной или нескольких строк из таблицы.

Как удалять записи с помощью команды Delete в SQL [обновлено]

Управление данными может быть сложной задачей, учитывая огромные объемы данных, с которыми приходится иметь дело. Любой, кто управляет данными, знает, что иногда нам нужно удалить некоторые данные из нашей базы данных из-за изменений в реальном мире. Например, когда магазин прекращает продажу товара, его запись удаляется из базы данных инвентаризации. Это делается с помощью команды SQL Delete. Эта команда является важной и неотъемлемой частью этого языка запросов.

Что такое Удалить в SQL?

Команда Удалить в SQL является частью языка манипулирования данными, подъязыка SQL, позволяющего изменять данные в базах данных. Эта команда используется для удаления существующих записей из таблицы. Используя это, вы можете удалить определенные записи в зависимости от условия или все записи из таблицы.

ПРИМЕЧАНИЕ. Крайне важно быть полностью уверенным в использовании этой команды, так как она безвозвратно удаляет данные.

Чтобы начать использовать команду Удалить, нам нужно знать ее синтаксис.

Синтаксис использования команды удаления SQL

УДАЛИТЬ ИЗ имя_таблицы

ГДЕ [условие];

  • Таблица, из которой мы хотим удалить строки, указывается в параметре table_name оператора DELETE FROM.
  • Существует необязательное предложение WHERE, в котором мы можем указать условие, согласно которому строки должны быть удалены.

ПРИМЕЧАНИЕ. Следует проявлять особую осторожность с предложением WHERE, так как без него все строки из таблицы будут удалены.

В предложении WHERE можно указать несколько условий с помощью операторов И и ИЛИ.

Применим изложенные выше концепции к строкам таблицы.

Возьмем пример таблицы «Employee_details»;

  • Из приведенной выше таблицы для удаления записи о сотруднике с «EmployeeID», равным единице, воспользуемся следующим запросом:

  • Чтобы проверить результат запроса в таблице выше, мы будем использовать команду «SELECT *»:

Как мы видим, одна запись была удалена на основании условия, указанного в предложении WHERE.

  • Из таблицы выше нам нужно удалить запись сотрудника с именем «Арун»:

Как видим, «Имя» имеет тип данных «строка символов», поэтому указываемое значение должно быть заключено в одинарные кавычки, без которых система выдаст синтаксическую ошибку.

Приведенный выше запрос даст следующее:

  • Мы также можем удалить несколько строк, используя один запрос.

Из приведенной выше таблицы нам нужно удалить все записи о сотрудниках с зарплатой менее 60000:

Это приведет к следующему:

Как мы видим, четыре строки были удалены.

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

Удаление определенных строк на основе нескольких условий

Мы можем использовать операторы AND и OR для объединения нескольких условий в предложении WHERE команды DELETE.

  • При использовании оператора ИЛИ удаляются все строки, удовлетворяющие одному из указанных условий.

Из нашего примера таблицы «Employee_details», чтобы удалить все записи о сотрудниках, где имя сотрудника — «Аджай» или город — «Ченнаи»:

Это приведет к следующему:

Как мы видим, обе строки, удовлетворяющие любому из условий, были удалены.

  • При использовании оператора AND удаляются только строки, удовлетворяющие обоим заданным условиям.

Из вышеприведенной таблицы нам нужно удалить все записи для сотрудников, которые относятся к «Бангалор» и имеют зарплату менее 50000:

Это приведет к следующему:

Как видим, удалена только одна запись, удовлетворяющая обоим условиям.

Давайте посмотрим, что произойдет, если мы не используем предложение WHERE.

Удаление всех записей из таблицы

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

  • Без предложения WHERE удаляются все записи таблицы. Если не сделать это намеренно, это может вызвать много проблем.

Чтобы удалить все записи из нашей таблицы «Employee_details», мы будем использовать следующий запрос:

Чтобы проверить, все ли записи удалены, воспользуемся командой SELECT:

Как мы видим, команда SELECT возвращает пустой набор, так как все записи из таблицы «Employee_details» были удалены.

  • Мы также можем использовать команду TRUNCATE для удаления всех записей из таблицы.

Это часть языка определения данных, подъязыка SQL, который позволяет создавать и изменять объекты базы данных. Синтаксис этой команды:

.

TRUNCATE имя_таблицы;

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

Чтобы удалить все записи из таблицы «Employee_details»:

Чтобы проверить, все ли записи были удалены:

Как мы видим, записи были удалены и таблица возвращает пустой набор.

Следующие шаги

Удаление записей из таблиц и баз данных — важная часть управления данными. Иногда мы вставляем неправильные данные, или данные в таблице устаревают и требуют модификации, для всего этого требуется помощь Delete в SQL.

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