Sql delete запрос: SQL — запрос DELETE

Содержание

SQL — запрос DELETE

Запрос DELETE используется для удаления существующих записей из таблицы.

Вы можете использовать запрос WHERE с DELETE, чтобы удалить выбранные строки, в противном случае все записи будут удалены.

Синтаксис:

Базовый синтаксис DELETE запроса с WHERE выглядит следующим образом:

DELETE FROM table_name
WHERE [condition];

 

Вы можете объединить N число условий с помощью операторов AND или OR.

Пример:

Рассмотрим таблицу CUSTOMERS, имеющую следующие записи:

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Maxim    |  35 | Moscow    | 21000.00 |
|  2 | AndreyEx |  38 | Krasnodar | 55500.00 |
|  3 | Oleg     |  33 | Rostov    | 34000.00 |
|  4 | Masha    |  35 | Moscow    | 31500.00 |
|  5 | Ruslan   |  34 | Omsk      | 43000.00 |
|  6 | Dima     |  32 | SP        | 45000.00 |
|  7 | Roma     |  34 | SP        | 10000.00 |
+----+----------+-----+-----------+----------+

 

Ниже приведен пример, который бы удалил из таблицы CUSTOMERS строку, идентификатор равной 6:

SQL> DELETE FROM CUSTOMERS
WHERE ID = 6;

 

Теперь таблица CUSTOMERS будет иметь следующие записи:

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Maxim    |  35 | Moscow    | 21000.00 |
|  2 | AndreyEx |  38 | Krasnodar | 55500.00 |
|  3 | Oleg     |  33 | Rostov    | 34000.00 |
|  4 | Masha    |  35 | Moscow    | 31500.00 |
|  5 | Ruslan   |  34 | Omsk      | 43000.00 |
|  7 | Roma     |  34 | SP        | 10000.00 |
+----+----------+-----+-----------+----------+

 

Если вы хотите УДАЛИТЬ все записи из таблицы CUSTOMERS, вам не нужно использовать WHERE и запрос DELETE будет выглядеть следующим образом:

SQL> DELETE FROM CUSTOMERS;

 

Теперь таблица КЛИЕНТОВ не будет иметь никаких записей.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Оператор DELETE (Microsoft Access SQL)



  • Чтение занимает 2 мин

В этой статье

Область применения: Access 2013, Office 2013Applies to: Access 2013, Office 2013

Создает запрос на удаление, который удаляет записи из одной или нескольких таблиц, указанных в предложении FROM, отвечающих предложению WHERE.Creates a delete query that removes records from one or more of the tables listed in the FROM clause that satisfy the WHERE clause.

СинтаксисSyntax

DELETE [table.*] FROM table WHERE criteriaDELETE [table.*] FROM table WHERE criteria

Оператор DELETE состоит из следующих частей:The DELETE statement has these parts:

ЧастьPart

ОписаниеDescription

tabletable

Необязательное имя таблицы, из которой удаляются записи.The optional name of the table from which records are deleted.

tabletable

Имя таблицы, из которой удаляются записи.The name of the table from which records are deleted.

criteriacriteria

Выражение, определяющее, какие записи нужно удалить.An expression that determines which records to delete.

КомментарииRemarks

DELETE особенно полезен, если вы хотите удалить большое количество записей.DELETE is especially useful when you want to delete many records.

Чтобы удалить всю таблицу из базы данных, можно использовать метод Execute с оператором DROP.To drop an entire table from the database, you can use the Execute method with a DROP statement. Однако, если удалить таблицу, может потеряться структура.If you delete the table, however, the structure is lost. С другой стороны при использовании DELETE удаляются только данные; а структура таблицы и все ее свойства, такие как атрибуты поля и индексы, остаются нетронутыми.In contrast, when you use DELETE, only the data is deleted; the table structure and all of the table properties, such as field attributes and indexes, remain intact.

Вы можете использовать DELETE, чтобы удалить записи из таблиц, которые находятся в связи «один ко многим» с другими таблицами.You can use DELETE to remove records from tables that are in a one-to-many relationship with other tables. Операции каскадного удаления вызывают удаление записей в таблицах, расположенных на стороне многих связей, при удалении соответствующей записи на стороне одной связи при запросе.Cascade delete operations cause the records in tables that are on the many side of the relationship to be deleted when the corresponding record in the one side of the relationship is deleted in the query. Например, в связи между таблицами Клиенты и Заказы, таблица Клиенты находится на стороне одной связи, а таблица Заказы находится на стороне многих связей.For example, in the relationship between the Customers and Orders tables, the Customers table is on the one side and the Orders table is on the many side of the relationship. Удаление записи из результатов клиентов в соответствующих записях заказов, удаляемых в случае, если указан параметр каскадного удаления.Deleting a record from Customers results in the corresponding Orders records being deleted if the cascade delete option is specified.

Запрос на удаление удаляет записи целиком, а не только данные в определенных полях.A delete query deletes entire records, not just data in specific fields. Если вы хотите удалить значения в определенном поле, создайте обновленный запрос, который изменяет значение на Null.If you want to delete values in a specific field, create an update query that changes the values to Null.

Важно!

  • После удаления записи с помощью запроса на удаление невозможно отменить данную операцию.After you remove records using a delete query, you cannot undo the operation. Если вы хотите узнать, какие записи были удалены, сначала проверьте результаты запроса на выборку, в котором используется то же самое условие, и снова запустите запрос на удаление.If you want to know which records were deleted, first examine the results of a select query that uses the same criteria, and then run the delete query.
  • Сохраняйте резервные копии ваших данных в любое время.Maintain backup copies of your data at all times. Если вы удалили не те записи, вы сможете восстановить их из резервных копий.If you delete the wrong records, you can retrieve them from your backup copies.

ПримерExample

В этом примере будут удалены все записи для сотрудников, чья должность — стажер.This example deletes all records for employees whose title is Trainee. Если оператор FROM содержит только одну таблицу, нет необходимости перечислять имя таблицы в операторе DELETE.When the FROM clause includes only one table, you do not have to list the table name in the DELETE statement.

    Sub DeleteX() 
     
        Dim dbs As Database, rst As Recordset 
     
        ' Modify this line to include the path to Northwind 
        ' on your computer. 
        Set dbs = OpenDatabase("Northwind.mdb") 
     
        ' Delete employee records where title is Trainee.     
        dbs.Execute "DELETE * FROM " _ 
            & "Employees WHERE Title = 'Trainee';" 
         
        dbs.Close 
     
    End Sub



Команда 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, то все записи таблицы будут обновлены без исключений.

Руководство по SQL. Удаление данных. – PROSELYTE

Для удаления данных из базы данных (далее – БД) мы используем SQL выражение DELETE.

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

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


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

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

Пример:

Предположим, что у нас есть таблица developers, которая содержит следующие данные:


+----+-------------------+------------+------------+--------+
| ID | NAME              | SPECIALTY  | EXPERIENCE | SALARY |
+----+-------------------+------------+------------+--------+
|  1 | Eugene Suleimanov | Java       |          2 |   2500 |
|  2 | Peter Romanenko   | Java       |          3 |   3500 |
|  3 | Andrei Komarov    | JavaScript |          3 |   2500 |
|  4 | Konstantin Geiko  | C#         |          2 |   2000 |
|  5 | Asya Suleimanova  | UI/UX      |          2 |   1800 |
|  6 | Ivan Ivanov       | Java       |          1 |   1500 |
+----+-------------------+------------+------------+--------+

Допустим, что мы хотим удалить разработчика с ID = 6.
Для этого нам необходимо создать следующий запрос:


DELETE FROM developers WHERE ID = 6;

В результате выполнения данного запроса, наша таблица будет содержать следующие записи:


+----+-------------------+------------+------------+--------+
| ID | NAME              | SPECIALTY  | EXPERIENCE | SALARY |
+----+-------------------+------------+------------+--------+
|  1 | Eugene Suleimanov | Java       |          2 |   2500 |
|  2 | Peter Romanenko   | Java       |          3 |   3500 |
|  3 | Andrei Komarov    | JavaScript |          3 |   2500 |
|  4 | Konstantin Geiko  | C#         |          2 |   2000 |
|  5 | Asya Suleimanova  | UI/UX      |          2 |   1800 |
+----+-------------------+------------+------------+--------+

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


DELETE FROM developers;

Стоит отметить, что это не самый лучший способ удаления всех данных из таблицы. Более грамотный способ будет рассмотрен позже.

На этом мы заканчиваем изучение способов удаления данных из БД.
В следующей статье мы рассмотрим предикат LIKE.

Как производится удаление записей из таблицы с помощью запроса delete SQL

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

Синтаксис

Основной синтаксис запроса DELETE с условием WHERE выглядит следующим образом:

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

DELETE FROM имя_таблицы

WHERE [условие];

Вы можете комбинировать N-ное количество условий с помощью операторов AND или OR.

Бесплатный курс по PHP программированию

Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

В курсе 39 уроков | 15 часов видео | исходники для каждого урока

Получить курс сейчас!

Пример

Рассмотрим таблицу CUSTOMERS, содержащую следующие записи:

Приведенный ниже код содержит запрос, который удаляет клиента с идентификатором 6.

DELETE FROM CUSTOMERS
WHERE ID = 6;

DELETE FROM CUSTOMERS

WHERE ID = 6;

Теперь таблица CUSTOMERS будет содержать следующие записи.

Если вы хотите удалить все записи из таблицы CUSTOMERS, вам не нужно использовать условие WHERE, и запрос DELETE будет следующим:

Теперь таблица CUSTOMERS не будет содержать ни одной записи.

Источник: //www.tutorialspoint.com/

Редакция: Команда webformyself.

Бесплатный курс по PHP программированию

Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

В курсе 39 уроков | 15 часов видео | исходники для каждого урока

Получить курс сейчас!

Хотите изучить MySQL?

Посмотрите курс по базе данных MySQL!

Смотреть

Оператор delete sql или запрос на удаление данных из таблиц

На уроке будет рассмотрен оператор Delete SQL, служащий для удаления записей таблиц, а также оператор Update sql, предназначенный для обновления данных. Будут разобраны конкретные примеры запросов

Запросы sql на удаление

Оператор Delete («удалить» — пер. с английского) удаляет записи из таблицы БД.

Синтаксис:

DELETE FROM <таблица> [WHERE <условие>];

DELETE FROM <таблица> [WHERE <условие>];

Пример: БД Институт. Запрос на удаление урока за определенную дату (за 02.10.2016)

✍ Решение: 

Исходные данные:

DELETE FROM lessons
  WHERE lessons.date ='2016-10-02'

Delete from lessons
where lessons.date =’2016-10-02′

Результат:

sql delete 1. БД Институт. Выполните запрос на удаление курса с названием «Математика» (таблица courses)

Важно: Если предложение WHERE в запросе отсутствует, то удаляются все строки из таблицы

Пример: БД Компьютерный магазин. Требуется удалить те компьютеры из таблицы product, для которых нет соответствующих строк в таблице pc.

✍ Решение: 

DELETE FROM `product` 
  WHERE `Тип`="Компьютер" AND `Номер` NOT IN 
   (SELECT `Номер` FROM pc)

DELETE FROM `product`
WHERE `Тип`=»Компьютер» and `Номер` NOT IN
(select `Номер` from pc)

Оператор Update sql

Запрос предназначен для обновления (изменения) существующих данных. Update в переводе с английского языка — обновить.

Пример: БД Институт. Увеличить зарплату всех учителей в 2 раза, а премию — в 10 раз

✍ Решение: 

UPDATE teachers
  SET
  zarplata = zarplata * 2,
  premia = premia * 10

UPDATE teachers
SET
zarplata = zarplata * 2,
premia = premia * 10

Исходные данные:

Результат:

sql update 1. БД Институт. Увеличить в полтора раза зарплату у учителей, фамилия которых начинается на букву И.

sql update 2. БД Компьютерный магазин. Изменить значение поля Память у компьютеров, память которых менее 1024, установить его в 1024.

Важно: При отсутствии предложения WHERE будут обновлены все строки таблицы

SQL — УДАЛИТЬ запрос — CoderLessons.com

Запрос SQL DELETE используется для удаления существующих записей из таблицы.

Вы можете использовать предложение WHERE с запросом DELETE, чтобы удалить выбранные строки, иначе все записи будут удалены.

Синтаксис

Основной синтаксис запроса DELETE с предложением WHERE следующий:

DELETE FROM table_name
WHERE [condition];

Вы можете объединить N условий с помощью операторов И или ИЛИ.

пример

Рассмотрим таблицу CUSTOMERS, имеющую следующие записи:

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

В следующем коде есть запрос, который удалит клиента с идентификатором 6.

SQL> DELETE FROM CUSTOMERS
WHERE ID = 6;

Теперь таблица CUSTOMERS будет иметь следующие записи.

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Если вы хотите УДАЛИТЬ все записи из таблицы CUSTOMERS, вам не нужно использовать предложение WHERE, а запрос DELETE будет выглядеть следующим образом:

SQL> DELETE FROM CUSTOMERS;

Теперь в таблице CUSTOMERS не будет записей.

SQL SELECT TOP, LIMIT, FETCH FIRST ROWS ONLY, ROWNUM


Предложение SQL SELECT TOP

Предложение SELECT TOP используется для указания количества возвращаемых записей.

Предложение SELECT TOP полезно для больших таблиц с тысячами
записи. Возврат большого количества записей может повлиять на производительность.

Примечание: Не все системы баз данных поддерживают
Предложение SELECT TOP
. MySQL
поддерживает предложение LIMIT для выбора ограниченного количества записей, в то время как Oracle использует
ВЫБРАТЬ ПЕРВЫЙ n РЯД ТОЛЬКО
и ROWNUM .

Синтаксис доступа к SQL Server / MS:

ВЫБЕРИТЕ ТОП номер | процент имя_столбца
ОТ имя_таблицы
ГДЕ условие ;

Синтаксис MySQL:

ВЫБЕРИТЕ имя_столбца
ОТ имя_таблицы
ГДЕ условие
LIMIT номер ;

Oracle 12 Синтаксис:

ВЫБЕРИТЕ имя_столбца
ИЗ имя_таблицы
ЗАКАЗАТЬ В
имя_столбца

ПОЛУЧИТЕ ПЕРВЫЙ номер ТОЛЬКО РЯД;

Старый синтаксис Oracle:

ВЫБЕРИТЕ имя_столбца
FROM имя_таблицы
ГДЕ ROWNUM <= число ;

Старый синтаксис Oracle (с ORDER BY):

ВЫБРАТЬ *
ИЗ (ВЫБРАТЬ имя_столбца ИЗ имя_таблицы
ЗАКАЗАТЬ имя_столбца )
ГДЕ ROWNUM <= число ;


Демо-база данных

Ниже представлен выбор из таблицы «Клиенты» в образце базы данных Northwind:

Идентификатор клиента Имя клиента ContactName Адрес Город Почтовый индекс Страна
1 Альфредс Футтеркисте Мария Андерс Обере, ул.57 Берлин 12209 Германия
2 Ana Trujillo Emparedados y helados Ана Трухильо Avda. de la Constitución 2222 México D.F. 05021 Мексика
3 Антонио Морено Такерия Антонио Морено Матадерос 2312 Мексика Д.F. 05023 Мексика
4 Вокруг Рога Томас Харди 120 Hanover Sq. Лондон WA1 1DP Великобритания
5 Berglunds snabbköp Кристина Берглунд Berguvsvägen 8 Лулео С-958 22 Швеция


Примеры SQL TOP, LIMIT и FETCH FIRST

Следующий оператор SQL выбирает первые три записи из таблицы «Клиенты».
(для SQL Server / MS Access):

Следующий оператор SQL показывает эквивалентный пример для MySQL:

Следующий оператор SQL показывает эквивалентный пример для
Оракул:

Пример

ВЫБРАТЬ * ИЗ клиентов
ВЫБРАТЬ ТОЛЬКО ПЕРВЫЕ 3 РЯДЫ;


SQL TOP PERCENT Пример

Следующий оператор SQL выбирает первые 50% записей из
Таблица «Клиенты» (для SQL Server / MS Access):

Следующий оператор SQL показывает эквивалентный пример для
Оракул:

Пример

ВЫБРАТЬ * ИЗ клиентов
ВЫБРАТЬ ТОЛЬКО ПЕРВЫЕ 50 ПРОЦЕНТНЫХ СТРОК;


ДОБАВИТЬ СТАТЬЮ ГДЕ

Следующий оператор SQL выбирает первые три записи из таблицы «Клиенты»,
где страна «Германия» (для SQL Server / MS Access):

Следующий оператор SQL показывает эквивалентный пример для MySQL:

Следующий оператор SQL показывает эквивалентный пример для
Оракул:

Пример

ВЫБРАТЬ * ИЗ клиентов
ГДЕ Страна = ‘Германия’
ПОЛУЧАТЬ ТОЛЬКО ПЕРВЫЕ 3 СТРОКИ;

DELETE Запрос в SQL

Автор: Чайтанья Сингх | Сохранено под: SQL

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

Синтаксис

1) Чтобы удалить определенный набор строк:
 УДАЛИТЬ ИЗ TableName
ГДЕ условие; 
2) Чтобы удалить все строки таблицы:
 УДАЛИТЬ ИЗ TableName; 
Пример:

Давайте возьмем ту же таблицу EMPLOYEES, что и в предыдущем уроке.

 + ------ + ---------- + --------- + ---------- +
| SSN | EMP_NAME | EMP_AGE | EMP_SALARY |
+ ------ + ---------- + --------- + ---------- +
| 101 | Стив | 23 | 9000.00 |
| 223 | Питер | 24 | 2550.00 |
| 388 | Шубхам | 19 | 2444.00 |
| 499 | Чайтанья | 29 | 6588.00 |
| 589 | Апурв | 21 | 1400.00 |
| 689 | Раджат | 24 | 8900.00 |
| 700 | Аджит | 20 | 18300.00 |
+ ------ + ---------- + --------- + ---------- + 

Удалить все записи с SSN больше 400:

 SQL> УДАЛИТЬ ОТ СОТРУДНИКОВ
ГДЕ SSN> 400; 

После успешного выполнения вышеуказанного запроса таблица будет иметь следующие записи:

 + ------ + ---------- + --------- + ---------- +
| SSN | EMP_NAME | EMP_AGE | EMP_SALARY |
+ ------ + ---------- + --------- + ---------- +
| 101 | Стив | 23 | 9000.00 |
| 223 | Питер | 24 | 2550.00 |
| 388 | Шубхам | 19 | 2444.00 |
+ ------ + ---------- + --------- + ---------- + 

Удалить данные сотрудников, возраст которых больше или равен 24 :

 SQL> УДАЛИТЬ ОТ СОТРУДНИКОВ
ГДЕ EMP_AGE> = 24; 

Результат:

 + ------ + ---------- + --------- + ---------- +
| SSN | EMP_NAME | EMP_AGE | EMP_SALARY |
+ ------ + ---------- + --------- + ---------- +
| 101 | Стив | 23 | 9000.00 |
| 388 | Шубхам | 19 | 2444.00 |
+ ------ + ---------- + --------- + ---------- + 

УДАЛИТЬ все записи таблицы EMPLOYEES

 SQL> УДАЛИТЬ ОТ СОТРУДНИКОВ; 

SQL Delete Query — JournalDev

SQL Delete Query

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

Удаление данных — очень важный аспект обслуживания базы данных. Удаление ненужных данных важно для поддержания чистой базы данных с сохранением только ценной информации как часть значений таблицы.

SQL Delete Syntax

Если мы хотим удалить определенные строки, нам нужно предоставить оператор удаления с предложением where.

 
УДАЛИТЬ From table_name WHERE condition;
  

В приведенном выше синтаксисе удаление происходит на основе условия, указанного в предложении WHERE.

SQL Delete Row

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

9013 903 901 903 901 903 901 903 901 903 901 903 9013

CustomerId CustomerName CustomerAge CustomerGender
1 Джеймс 32 M
2 35 F

Мы хотим удалить строки с CustomerGender как Female.Оператор удаления будет;

 
УДАЛИТЬ ОТ клиента ГДЕ CustomerGender = 'F';
  

SQL Удалить одну строку

Для приведенной выше таблицы результатом будет 1 удаленная запись . Если вы хотите убедиться, что ваш запрос на удаление SQL удалит максимум одну строку, всегда используйте первичный ключ в предложении where.

 
УДАЛИТЬ ОТ клиента, ГДЕ CustomerID = 1;
  

Вышеупомянутый запрос удалит только одну строку или ни одной строки, если нет клиента с идентификатором клиента равным 1.

SQL Удалить все строки

Если вы не укажете предложение where с оператором delete, то будут удалены данные всей таблицы. Используйте это очень осторожно, чтобы избежать нежелательной потери данных.

 
Удалить от клиента;
  

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

SQL Delete Table

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

 
Drop table Customer;
  

Приведенная выше команда удалит таблицу клиентов со всеми данными.

Важные моменты инструкции Delete

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

Ссылка: Для получения дополнительной информации о DELETE обратитесь к документации Oracle.

Оператор SQL Delete Row — как удалить данные из таблицы с примерами запросов

Я не сомневаюсь, насколько мне нравится работать с SQL как в моих профессиональных, так и в личных проектах.

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

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

Хотя я отмечаю его отказоустойчивость (SQL был создан в 1974 году с первоначальной версией 1986 года) в сообществе разработчиков, я также знаю, что при работе с данными может казаться, что даже основы вызывают стресс и страх.

Я здесь, чтобы (надеюсь) пролить свет на один из основных принципов работы с данными: удаление всей строки данных.

Хотя мы не собираемся подробно описывать процесс создания таблицы в SQL или заполнения этой таблицы данными / обновления этих данных, я связал эти другие статьи на случай, если вы хотите узнать больше или просто нуждаетесь в освежить.

Хорошо, теперь самое интересное — приступим к удалению данных из таблицы!

Обзор строки удаления SQL

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

Имя Цвет Порода Возраст Вес Высота Fav_Food Игрушка Fav_Toy Дизлайков Аллергия
ромашка красный Такса стандартная 1 год 14 6 Кусок со вкусом лосося скрипучий мяч птицы летают над двором кошки, бани, чистота
Уинстон чёрно-коричневый ротвейлер 3 года 41 17 буквально все что угодно буксир не вставать с дивана слушать, вести себя, не слюни на всем
Сэмми светлый мед золотистый ретривер 9 лет 46 19 Кусочки со вкусом говядины ее кровать щенки рамбутсиса неизвестно
пенелопа серый и белый хаски 9 месяцев 16 12 обувь старая снаружи питомник неизвестно

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

Как и в большинстве случаев технического характера, не помешает также проверка официальной документации. Если вы хотите это сделать, у Microsoft есть отличная подробная информация об операторе SQL Delete.

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

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

*** С помощью этого синтаксиса вы удалите все строки данных во всей таблице. ***

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

DELETE FROM Cute_Doggos

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

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

В качестве примечания: если ваша предполагаемая цель — удалить все строки в таблице, более быстрым подходом будет использование оператора TRUNCATE TABLE, поскольку он использует гораздо меньше системных ресурсов.

Пример запросов на удаление

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

DELETE FROM name_of_table WHERE conditions_exist

Используя нашу таблицу собак выше, наш запрос будет выглядеть так:

DELETE FROM Cute_Doggos WHERE dbo.Cute_Doggos.Height> 18

Это приведет к удалению всех записей из нашей таблицы, которые соответствуют нашему условию, когда высота больше 18 . И если вы используете Microsoft SQL Server Manager, вы получите следующий оператор возврата:

(затронута 1 строка)

Если вы хотите увидеть строки данных, которые были удалены (для целей ведения журнала) , визуальные указания для пользователей и т. д.), мы можем использовать оператор OUTPUT для этого.

Теперь наша таблица будет выглядеть так:

Имя Цвет Порода Возраст Вес Высота Fav_Food Игрушка Fav_Toy Дизлайков Аллергия
ромашка красный Такса стандартная 1 год 14 6 Кусок со вкусом лосося скрипучий мяч птицы летают над двором кошки, бани, чистота
Уинстон чёрно-коричневый ротвейлер 3 года 41 17 буквально все что угодно буксир не вставать с дивана слушать, вести себя, не слюни на всем
пенелопа серый и белый хаски 9 месяцев 16 12 обувь старая снаружи питомник неизвестно

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

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

DELETE TOP 2 FROM Cute_Doggos

Вы могли подумать, что этот запрос удалит самые первые две записи в вашей таблице — и вы не так уж далеко. Единственная проблема заключается в том, что поскольку SQL хранит записи в случайном порядке, этот синтаксис удалит из таблицы 2 RANDOM записей.

Если вы хотите удалить процент записей, SQL также может это сделать:

УДАЛИТЬ ТОП 25 ПРОЦЕНТОВ ИЗ Cute_Doggos

Опять же, этот запрос удалит RANDOM записей.В нашем примере, поскольку у нас есть 4 записи, этот запрос удалит 1 случайную запись (4 * 0,25 = 1).

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

Завершение

Теперь, когда вы увидели оператор DELETE в действии, вы готовы выйти на улицу и извлечь все данные из всех таблиц! Может быть, не делайте этого, так как восстановление из резервных копий займет у вас долгие выходные.

Если вы нашли эту статью полезной, загляните в мой блог (в настоящее время я перестраиваю его в Gatsby / WordPress, так что ждите статьи об этом), где я часто публикую статьи о веб-разработке, жизни и обучении.

Пока вы там, почему бы не подписаться на мою рассылку новостей? Вы можете сделать это в правом верхнем углу главной страницы блога. Мне нравится присылать интересные статьи (свои и другие), ресурсы и инструменты для разработчиков время от времени.

Если у вас есть вопросы по этой статье или просто дайте мне знать — приходите поздороваться в Twitter или в любой из моих других социальных сетей, которые вы можете найти под рассылкой новостей, подпишитесь на главной странице моего блога или в моем профиле здесь, на freeCodeCamp 🙂

Хорошего дня! Удачного обучения и удачного программирования, друг.

Microsoft Access Удалить запрос, синтаксис SQL, примеры и ошибки

У вас есть права на удаление записей?

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

  • Файл базы данных доступен только для чтения.Ни одна из данных не может быть изменена.
    Измените это на уровне Windows. Если база данных находится на компакт-диске, скопируйте ее на жесткий диск.
  • Если вы используете безопасность рабочей группы Access, возможно, у вас нет прав
    удалить данные. В этом случае войдите как администратор или с
    имя пользователя и пароль, дающие вам соответствующие права.
  • Если таблицы связаны, у вас может не быть прав на изменение данных с помощью внутреннего источника данных.
  • Если вы находитесь в проекте данных доступа (ADP) или связаны с SQL
    Таблица сервера и таблица не имеют первичного ключа, вы не можете
    изменить записи таблицы из Access.

Query Failed with this message: «Не удалось удалить из указанных таблиц»

Предполагая, что вы можете удалить записи из своей таблицы, ваш запрос может завершиться ошибкой и отобразиться
сообщение об ошибке «Не удалось удалить из указанных таблиц» при запуске:

Ошибка удаления запроса: не удалось удалить из указанных таблиц

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

ПРИМЕЧАНИЕ. В VBA запрос не вызывает ошибку и не отображает это сообщение. Он просто не запускается.


Пример запроса на удаление, который не выполняется

Например, вы можете удалить людей из TableA, которые находятся в TableB, связав их поля имен (в обеих таблицах есть другое поле в качестве первичного ключа):

УДАЛИТЬ таблицу А.* ИЗ TableA ВНУТРЕННЕЕ СОЕДИНЕНИЕ TableB ON
TableA.Name = TableB.Name
 

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


Использование DISTINCTROW с запросами на удаление для соединений неключевых полей

Для работы запроса на удаление Microsoft Access требуется SQL
синтаксис для включения синтаксиса DISTINCTROW, чтобы указать, что это уникальный
связь запроса между двумя таблицами:

УДАЛИТЬ DISTINCTROW
Таблица A.* ИЗ TableA ВНУТРЕННЕЕ СОЕДИНЕНИЕ TableB ON
TableA.Name = TableB.Name
 

Этот параметр также можно установить на странице свойств запроса, когда
редактирование запроса в режиме конструктора. Просто установите для свойства Уникальные записи значение Да:

.

Таким образом, термин DISTINCTROW добавляется к оператору SQL вашего запроса DELETE.

Заявление об удалении

SQL: лучшие способы его использования — Управление базами данных — Блоги

В реляционных базах данных мы создаем таблицы для хранения данных в различных форматах.SQL Server хранит данные в формате строки и столбца, который содержит значение, связанное с каждым типом данных. При разработке таблиц SQL мы определяем такие типы данных, как целое число, число с плавающей запятой, десятичное число, varchar и бит. Например, таблица, в которой хранятся данные о клиентах, может содержать такие поля, как имя клиента, адрес электронной почты, адрес, штат, страна и т. Д. Различные команды SQL выполняются в таблице SQL и могут быть разделены на следующие категории:

  • Язык определения данных (DDL): Эти команды используются для создания и изменения объектов базы данных в базе данных.
    • Создать: Создает объекты
    • Изменить: Изменяет объекты
    • Сброс: Удаляет объекты
    • Усечение: Удаляет все данные из таблицы
  • Язык манипулирования данными (DML): Эти команды вставляют, извлекают, изменяют, удаляют и обновляют данные в базе данных.
    • Выберите: Извлекает данные из одной или нескольких таблиц
    • Вставка: Добавляет новые данные в таблицу
    • Обновление: Изменяет существующие данные
    • Удалить: Удаляет существующие записи в таблице
  • Язык управления данными (DCL): Эти команды связаны с элементами управления правами или разрешениями в базе данных.
    • Предоставление: Назначает разрешения пользователю
    • Отозвать: Отменяет разрешения у пользователя
  • Язык управления транзакциями (TCL): Эти команды управляют транзакциями в базе данных.
    • Фиксация: Сохраняет изменения, внесенные запросом
    • Откат: Откат явной или неявной транзакции до начала транзакции или до точки сохранения внутри транзакции
    • Сохранить транзакции: Устанавливает точку сохранения или маркер внутри транзакции

Предположим, у вас есть данные о заказах клиентов, хранящиеся в таблице SQL.Если вы продолжаете вставлять данные в эту таблицу непрерывно, таблица может содержать миллионы записей, что вызовет проблемы с производительностью в ваших приложениях. Обслуживание вашего индекса также может занять очень много времени. Часто нет необходимости хранить заказы старше трех лет. В этих случаях вы можете удалить эти записи из таблицы. Это сэкономит место для хранения, а также сократит ваши усилия по обслуживанию.

Удалить данные из таблицы SQL можно двумя способами:

  • Использование оператора удаления SQL
  • Использование усечения

Позже мы рассмотрим разницу между этими командами SQL.Давайте сначала рассмотрим оператор удаления SQL.

Оператор удаления SQL без каких-либо условий

В операторах языка обработки данных (DML) оператор удаления SQL удаляет строки из таблицы. Вы можете удалить определенную строку или все строки. Базовая инструкция удаления не требует аргументов.

Давайте создадим SQL-таблицу заказов, используя приведенный ниже скрипт. В этой таблице есть три столбца [OrderID], [ProductName] и [ProductQuantity].

  Create Table Orders   (OrderID int,   ProductName varchar (50),   ProductQuantity int  )  

Вставьте несколько записей в эту таблицу.

  Вставить в значения заказов (1, 'ABC books', 10),   (2, 'XYZ', 100),   (3, 'SQL book', 50)  

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

  Удалить заказы   Go   Удалить из заказов   GO  

Оператор удаления SQL с отфильтрованными данными

Эти операторы удаления SQL удаляют все данные таблицы.Обычно мы не удаляем все строки из таблицы SQL. Чтобы удалить определенную строку, мы можем добавить предложение where с оператором delete. Предложение where содержит критерии фильтра и в конечном итоге определяет, какие строки следует удалить.

Например, предположим, что мы хотим удалить идентификатор заказа 1. После добавления предложения where SQL Server сначала проверяет соответствующие строки и удаляет эти конкретные строки.

  Удалить заказы, где порядковый номер = 1 


Если условие предложения where ложно, оно не удаляет никакие строки.Например, мы удалили заказанный 1 из таблицы заказов. Если мы выполним оператор снова, он не найдет ни одной строки, удовлетворяющей условию предложения where. В этом случае он возвращает 0 затронутых строк.

Оператор удаления SQL и предложение TOP

Вы также можете использовать оператор TOP для удаления строк. Например, приведенный ниже запрос удаляет первые 100 строк из таблицы «Заказы».

  Удалить верхнюю часть (100) [OrderID]   из заказов  

Поскольку мы не указали «ORDER BY», он выбирает случайные строки и удаляет их.Мы можем использовать предложение Order by для сортировки данных и удаления верхних строк. В приведенном ниже запросе он сортирует [OrderID] в порядке убывания, а затем удаляет его из таблицы [Orders].

  Удалить из заказов, где [OrderID] в   (  Выбрать первые 100 [OrderID] FROM Orders   заказать по [OrderID] Desc  )  

Удаление строк на основе другой таблицы

Иногда нам нужно удалить строки на основе другой таблицы. Эта таблица может существовать в той же базе данных или нет.

Мы можем использовать метод поиска в таблице или соединение SQL для удаления этих строк. Например, мы хотим удалить строки из таблицы [Заказы], удовлетворяющие следующему условию:

У него должны быть соответствующие строки в таблице [dbo]. [Customer].

Посмотрите на запрос ниже, здесь у нас есть оператор select в предложении where оператора delete. SQL Server сначала получает строки, удовлетворяющие оператору select, а затем удаляет эти строки из таблицы [Заказы] с помощью оператора удаления SQL.

  Удалить заказы, для которых указана в   (выберите заказ   от клиента)  

В качестве альтернативы мы можем использовать SQL-соединения между этими таблицами и удалить строки. В приведенном ниже запросе мы соединяем таблицы [Заказы]] с таблицей [Клиент]. Соединение SQL всегда работает с общим столбцом между таблицами. У нас есть столбец [OrderID], который объединяет обе таблицы вместе.

  УДАЛИТЬ заказы   ИЗ заказов o   ВНУТРЕННЕЕ СОЕДИНЕНИЕ клиента c ON o.orderid = c.orderid  

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

Согласно плану выполнения, он выполняет сканирование обеих таблиц, получает совпадающие данные и удаляет их из таблицы «Заказы».

  • Общее табличное выражение (CTE)

Мы можем использовать обычное табличное выражение (CTE) для удаления строк из таблицы SQL. Сначала мы определяем CTE, чтобы найти строку, которую мы хотим удалить.

Затем мы соединяем CTE с таблицей SQL Orders и удаляем строки.

  WITH cteOrders AS   (SELECT OrderID   FROM Customer   WHERE CustomerID = 1)   DELETE Orders   FROM cteOrders sp   INNER JOIN dbo.Orders o ON o.orderid;  

Влияние на диапазон идентичности

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

В приведенном ниже сценарии у нас есть таблица [Сотрудник]. У этой таблицы есть идентификатор столбца идентификатора.

  Create Table Employee   (  id int identity (1,1),   [Name] varchar (50)  )  

Мы вставили 50 записей в эту таблицу, которые сгенерировали значения идентификаторов для столбца id.

  Объявить @id int = 1   While (@id <= 50)   BEGIN   Вставить в значения Employee ([Name]) ('Test' + CONVERT (VARCHAR, @ ID))   Установить @id = @ id + 1   КОНЕЦ  

Если мы удалим несколько строк из таблицы SQL, это не сбрасывает значения идентичности для последующих значений.Например, давайте удалим несколько строк со значениями идентификаторов от 20 до 25.

  Удалить из сотрудника  , где id от 20 до 25  

Теперь просмотрите записи таблицы.

  Выберите * от сотрудника, у которого id> 15  

Показывает разрыв в диапазоне значений идентичности.

Оператор удаления SQL и журнал транзакций

SQL delete регистрирует удаление каждой строки в журнале транзакций. Предположим, вам нужно удалить миллионы записей из таблицы SQL.Вы не хотите удалять большое количество записей за одну транзакцию, потому что это может привести к экспоненциальному росту файла журнала и недоступности вашей базы данных. Если вы отмените транзакцию в середине, откат оператора удаления может занять несколько часов.

В этом случае вы всегда должны удалять строки небольшими порциями и регулярно фиксировать эти порции. Например, вы можете удалить пакет из 10 000 строк за раз, зафиксировать его и перейти к следующему пакету. Когда SQL Server фиксирует фрагмент, можно контролировать рост журнала транзакций.

Лучшие практики

  • Перед удалением данных всегда следует выполнять резервное копирование.
  • По умолчанию SQL Server использует неявные транзакции и фиксирует записи, не спрашивая пользователя. Рекомендуется начинать явную транзакцию с помощью команды «Начать транзакцию». Он дает вам возможность зафиксировать или откатить транзакцию. Вам также следует часто выполнять резервное копирование журнала транзакций, если ваша база данных находится в режиме полного восстановления.
  • Вы хотите удалять данные небольшими порциями, чтобы избежать чрезмерного использования журнала транзакций.Это также позволяет избежать блокировки для других транзакций SQL.
  • Вы должны ограничить разрешения, чтобы пользователи не могли удалять данные. Только авторизованные пользователи должны иметь доступ для удаления данных из таблицы SQL.
  • Вы хотите запустить оператор удаления с предложением where. Он удаляет отфильтрованные данные из таблицы SQL. Если ваше приложение требует частого удаления данных, рекомендуется периодически сбрасывать значения идентификаторов. В противном случае вы можете столкнуться с проблемами исчерпания идентификационных данных.
  • Если вы хотите очистить таблицу, рекомендуется использовать оператор усечения. Оператор truncate удаляет все данные из таблицы, использует минимальное ведение журнала транзакций, сбрасывает диапазон значений идентификаторов и работает быстрее, чем оператор удаления SQL, поскольку он немедленно освобождает все страницы для таблицы.
  • Если вы используете ограничения внешнего ключа (отношения родитель-потомок) для своих таблиц, вы должны удалить строку из дочерней строки, а затем из родительской таблицы.Если вы удаляете строку из родительской строки, вы также можете использовать опцию каскадного удаления для автоматического удаления строки из дочерней таблицы. Вы можете обратиться к статье: Удалить каскад и обновить каскад во внешнем ключе SQL Server для получения дополнительной информации.
  • Если вы используете оператор top для удаления строк, SQL Server удаляет строки случайным образом. Вы всегда должны использовать верхнее предложение с соответствующим предложением Order by и Group by.
  • Оператор удаления устанавливает исключительную блокировку намерения для ссылочной таблицы; следовательно, в течение этого времени никакие другие транзакции не могут изменять данные.Вы можете использовать подсказку NOLOCK для чтения данных.
  • Следует избегать использования подсказки таблицы для переопределения поведения блокировки по умолчанию для оператора удаления SQL; его должны использовать только опытные администраторы баз данных и разработчики.

Важные соображения

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

Обзор оператора SQL Delete

Эта статья об удалении SQL является частью серии статей, посвященных ключевым операторам, функциям и операциям SQL Server.

Удаление строки из таблицы выполняется с помощью языка манипулирования данными, также известного как оператор DML, с использованием ключевого слова delete. Операция удаления SQL - самая простая из всех команд DML.При выполнении команды удаления нам не нужно беспокоиться о получении каких-либо данных из таблицы, и нам не нужно беспокоиться о работе с любыми данными, которые мы получаем обратно из таблицы (таблиц). Мы просто говорим базе данных удалить определенную запись, и она либо удаляет, либо нет. Это так просто.

Во-первых, давайте быстро рассмотрим, как выглядит оператор удаления SQL. Нам нужно указать базе данных и таблице, откуда следует удалять данные. Рекомендуется добавить условие, чтобы задать объем удаления данных.В противном случае он удалит все в таблице.

Давайте взглянем на нашу таблицу и удалим несколько записей.

Как удалить строки без пункта

В следующем примере удаляются все строки из таблицы Person.Person в базе данных AdventureWorks2014. Для оператора удаления SQL с использованием предложения WHERE нет никаких ограничений.

ЕГЭ Adventureworks2014;

GO

УДАЛИТЬ ОТ [Лицо].[Человек];

Как удалить строки с предложением where

В следующем примере удаляются строки из таблицы [Person]. [Person] в базе данных AdventureWorks2014, в которой значение в столбце businessEntityID больше 30 000

ЕГЭ Adventureworks2014;

GO

УДАЛИТЬ ОТ [Person]. [Person]

ГДЕ businessEntityID> 30000;

Примечание. Прискорбная ошибка, которая может произойти, заключается в случайном запуске SQL Delete без предложения Where и непреднамеренном удалении всех ваших данных.Чтобы этого не произошло, рассмотрите возможность использования функции защиты выполнения в ApexSQL Complete, чтобы предупредить о таких потенциально опасных действиях, прежде чем выполнять их. Подробнее: Оповещения о выполнении

Как удалить строки с помощью Top с предложением where

В следующем примере удаляется 50 случайных строк из таблицы Person.Person в базе данных AdventureWorks2014. Значение BusinessEntityID должно находиться в диапазоне от 30 000 до 40 000.

ЕГЭ Adventureworks2014;

GO

УДАЛИТЬ ВЕРХНЮЮ (50) ОТ [Человек].[Человек]

ГДЕ BusinessEntityID от 30000 до 40000

Примечание: когда предложение TOP (n) используется с оператором SQL Delete и любым оператором DML (например, Select, Insert, Delete и Update), операция выполняется для случайного выбора ряда строк, указанных в предложении Top. .

Как удалить повторяющиеся строки

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

EATE TABLE tb_spaceused

(имя_базы_данных NVARCHAR (128),

database_size VARCHAR (18),

[нераспределенное пространство] VARCHAR (18),

зарезервировано VARCHAR (18),

данных VARCHAR (18),

данных VAR

index_size VARCHAR (18),

неиспользуемый VARCHAR (18)

);

INSERT INTO tb_spaceused

EXEC sp_msforeachdb

@ command1 = "использовать? Exec sp_spaceused @oneresultset = 1";

ВЫБРАТЬ *

FROM tb_spaceused

заказать по имени_базы_данных

В следующем примере аргумент PARTITION BY используется для разделения набора результатов запроса по всем столбцам таблицы tb_spaceused .Row_Number (), оконная функция, что означает, что она работает с упорядоченным набором. Предложение ORDER BY, указанное в предложении OVER, упорядочивает строки в каждой секции по всем столбцам таблицы tb_spaceused.

С CTE

AS (SELECT *,

ROW_NUMBER () OVER (РАЗДЕЛ ПО имя_базы_данных,

размер_базы_данных,

[незанятое пространство],

зарезервировано,

данных,

000

ORDER BY имя_базы_данных

) AS Row_Num

FROM tb_spaceused)

SELECT *

FROM CTE

WHERE Row_Num <> 1;

Замена оператора Select оператором Delete удаляет все дубликаты таблицы.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

14

С CTE

AS (SELECT *,

ROW_NUMBER () OVER (РАЗДЕЛ ПО имя_базы_данных,

размер_базы_данных,

[нераспределенное пространство],

зарезервировано,

данных,

000

ORDER BY имя_базы_данных

) AS Row_Num

FROM tb_spaceused)

--SELECT *

--FROM CTE

--WHERE Row_Num <> 1;

УДАЛИТЬ ИЗ CTE

ГДЕ Row_Num <> 1;

Как удалить строки с помощью подзапросов SQL

В следующем примере строки в одной таблице удаляются на основе данных в другой таблице.В примерах строки из таблицы SalesPersonQuotaHistory удаляются на основе столбца SalesYTD таблицы SalesPerson.

УДАЛИТЬ ИЗ Sales.SalesPersonQuotaHistory

ГДЕ BusinessEntityID IN

(

ВЫБРАТЬ BusinessEntityID

ИЗ Sales.SalesPerson

ГДЕ SalesYTD> 4

0.00

);

ГО

Как удалить строки с помощью SQL-соединений

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

Во многих случаях таблицы связаны через отношения первичного и внешнего ключей. В следующем примере мы можем увидеть использование объединений для удаления данных из Sales.SalesPersonQuotaHistory.

УДАЛИТЬ sq

ИЗ Sales.SalesPersonQuotaHistory sq

INNER JOIN Sales.SalesPerson sp ON sq.BusinessEntityID = sp.BusinessEntityID

ГДЕ sp.SalesYTD> 4500000.00;

ГО

Как удалить строки из удаленной таблицы с помощью связанных серверов и OpenQuery

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

УДАЛИТЬ

ИЗ [hqdbt01].AdventureWorks2014. [HumanResources]. [Shift]

ГДЕ ShiftID = 2;

В следующем примере удаленная таблица запрашивается путем указания функции набора строк OPENQUERY вместе с командой удаления.

УДАЛИТЬ ОТКРЫТЫЙ ЗАПРОС (hqdbt01, 'SELECT *

FROM AdventureWorks2014.HumanResources.Department

WHERE DepartmentID = 18');

Как удалить строки с помощью SSMS

Использование SQL Server Management Studio (SSMS) и графического интерфейса пользователя (GUI) для удаления строк предполагает ручной поиск.На самом деле удалить записи с помощью SQL-запроса будет намного проще и быстрее.

Давайте продолжим и найдем таблицу для использования оператора удаления SQL, в данном случае выбрана таблица dbo.cities . Теперь щелкните правой кнопкой мыши и выберите Редактировать первые 200 строк . Эта опция открывает окно конструктора запросов. Затем щелкните окно правой кнопкой мыши и выберите Execute SQL и напишите новый запрос, который удалит строки из таблицы dbo.cities.

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

Сводка

До сих пор мы видели много разных способов использования SQL-оператора delete для удаления данных. Но есть список соображений, которые необходимо учитывать при использовании оператора удаления, и он выглядит следующим образом:

  1. Всегда рекомендуется начинать с оператора SELECT, прежде чем что-либо удалять, чтобы убедиться, что вы выбираете правильные записи.Таким образом, оператор delete используется для удаления строк из таблицы с использованием предложения where для выбора только удаляемых строк.
  2. Всегда используйте уникальный идентификатор для поиска строк, которые нужно удалить.
  3. Чтобы удалить все строки в таблице, всегда используйте TRUNCATE TABLE. TRUNCATE TABLE, который быстрее, чем оператор удаления SQL, и использует меньше ресурсов системы и журнала транзакций.
  4. По умолчанию операторы DELETE вызывают монопольную (X) блокировку таблицы, и она удерживает блокировку до завершения транзакции.
  5. Исключительная блокировка предотвращает изменение данных другой транзакцией; операции чтения разрешены с использованием подсказки NOLOCK или уровня изоляции чтения незафиксированных
  6. Рекомендуется указывать подсказку TABLOCK в операторе удаления.Этот процесс позволяет освободить страницу и связанное с ней пространство, доступное для повторного использования другими объектами в базе данных.
  7. Перед выполнением оператора удаления рекомендуется создать кластеризованный индекс в таблице кучи.
  8. Хотя это очень просто и очень мощно, и результат оператора Delete разрушителен. Удаленные строки не могут быть легко восстановлены

Примечание. Чтобы восстановить удаленные строки, см. «Аварийное восстановление SQL Server - Как быстро восстановить данные, потерянные из-за операции непреднамеренного удаления»

На этом пока все ... Надеюсь, вам понравится эта статья об операторе удаления SQL.Если у вас есть какие-либо вопросы, не стесняйтесь комментировать ниже.

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

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