Delete sql ms: DELETE | SQL | SQL-tutorial.ru
SQL DELETE « Язык запросов SQL
Команда DELETE
Команда DELETE удаляет строки из таблицы или представления основной таблицы базы данных, например, в MySQL, Oracle.
Команда DELETE. Синтаксис команды DELETE
Синтаксис команды DELETE
Команда DELETE. Основные ключевые слова и параметры команды DELETE
- schema — идентификатор полномочий, обычно совпадающий с именем некоторого пользователя
- table view — имя таблицы, из которой удаляются строки; если определяется представление, сервер удаляет строки из основной таблицы представления
- subquery — подзапрос, с помощью которого выбираются строки для удаления; сервер выполняет подзапрос и использует строки его результата как таблицу фразы FROM
- WHERE — удаляет только строки, которые удовлетворяют условию; условие может ссылаться на таблицу и содержать подзапрос.
При выдаче утверждения DELETE включается любой DELETE-триггер, определенный на таблице.
Команда DELETE Пример №1
Удаление всех строк из таблицы:
DELETE FROM temp_assign;
В данном примере команда DELETE удаляет все строки без исключения.
Команда DELETE Пример №2.
Удаляет из таблицы всех продавцов, у которых комиссионные меньше 100 у.е. в месяц:
DELETE FROM emp WHERE JOB = ‘SALESMAN’ AND COMM < 100;
В данном примере команда DELETE удаляет все строки, которые попадают под условие JOB = ‘SALESMAN’ AND COMM < 100;
Команда DELETE Пример №3
Предыдущий пример можно записать по-другому:
DELETE FROM (select * from emp) WHERE job = ‘SALESMAN’ AND comm < 100;
Для удаления всех записей в MySQL можно использовать следующую команду DELETE:
DELETE * FROM table_nam;
SQL Инструкция DELETE
SQL DELETE
Инструкция DELETE используется для удаления существующих записей в таблице.
Синтаксис DELETE
DELETE FROM table_name WHERE condition;
Примечание: Будьте осторожны при удалении записей в таблице! Обратите внимание на предложение WHERE в инструкции DELETE.
Предложение WHERE указывает, какие записи должны быть удалены.
Если вы опустите предложение WHERE, то все записи в таблице будут удалены!
Демо база данных
Ниже приведен выбор из таблицы «Customers» в образце базы данных Northwind:
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
Пример SQL DELETE
Следующая инструкция SQL удаляет клиента «Alfreds Futterkiste» из таблицы «Customers»:
Таблица «Customers» теперь будет выглядеть так:
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
Удалить все записи
Можно удалить все строки в таблице, не удаляя саму таблицу.
Это означает, что структура таблицы, атрибуты и индексы останутся нетронутыми:
Следующая инструкция SQL удаляет все строки в таблице «Customers», не удаляя таблицу:
SQL DELETE — удаление данных из таблицы базы данных
Оператор SQL DELETE предназначен для удаления данных из таблицы. Он имеет следующий синтаксис:
DELETE FROM ИМЯ_ТАБЛИЦЫ
WHERE УСЛОВИЕ
Если не указывать условие, из таблицы будут удалены все строки. Кроме того, следует помнить,
что могут быть удалены лишь строки с первичными ключами, на которые не ссылаются внешние ключи в других
таблицах (более подробно об ограничениях удаления — в уроке Реляционная модель данных).
Если вы хотите выполнить запросы к базе данных из этого урока на MS SQL Server, но эта СУБД
не установлена на вашем компьютере, то ее можно установить, пользуясь инструкцией по этой ссылке.
А скрипт для создания базы данных «Портал объявлений 1», её таблицы и заполения таблицы данных —
в файле по этой ссылке.
Пример 1. Итак, есть база портала объявлений. В ней есть таблица Ads, содержащая
данные о объявлениях, поданных за неделю (более подробно — в уроке об агрегатных функциях SQL, пример 7).
Таблица выглядит так:
Id | Category | Part | Units | Money |
1 | Транспорт | Автомашины | 110 | 17600 |
2 | Недвижимость | Квартиры | 89 | 18690 |
3 | Недвижимость | Дачи | 57 | 11970 |
4 | Транспорт | Мотоциклы | 131 | 20960 |
5 | Стройматериалы | Доски | 68 | 7140 |
6 | Электротехника | Телевизоры | 127 | 8255 |
7 | Электротехника | Холодильники | 137 | 8905 |
8 | Стройматериалы | Регипс | 112 | 11760 |
9 | Досуг | Книги | 96 | 6240 |
10 | Недвижимость | Дома | 47 | 9870 |
11 | Досуг | Музыка | 117 | 7605 |
12 | Досуг | Игры | 41 | 2665 |
Требуется удалить из таблицы строку, имеющую идентификатор 4. Для этого
пишем следующий запрос (на MS SQL Server — с предваряющей конструкцией USE adportal1;):
DELETE FROM ADS
WHERE Id=4
Пример 2. Можно удалить и несколько строк, если в условии применить
оператор сравнения «больше» или «меньше» (на MS SQL Server — с предваряющей конструкцией USE adportal1;):
DELETE FROM ADS
WHERE Id>4
В результате в таблице останутся лишь следующие строки:
Id | Category | Part | Units | Money |
5 | Стройматериалы | Доски | 68 | 7140 |
6 | Электротехника | Телевизоры | 127 | 8255 |
7 | Электротехника | Холодильники | 137 | 8905 |
8 | Стройматериалы | Регипс | 112 | 11760 |
9 | Досуг | Книги | 96 | 6240 |
10 | Недвижимость | Дома | 47 | 9870 |
11 | Досуг | Музыка | 117 | 7605 |
12 | Досуг | Игры | 41 | 2665 |
Пример 3. Аналогично можно удалять строки с заданными значениями
любого столбца. Удалим, например, строки об объявлениях, за которые выручено менее 10000 денежных единиц
(запрос на MS SQL Server — с предваряющей конструкцией USE adportal1;):
DELETE FROM ADS
WHERE Money
В результате в таблице останутся лишь следующие строки:
Id | Category | Part | Units | Money |
1 | Транспорт | Автомашины | 110 | 17600 |
2 | Недвижимость | Квартиры | 89 | 18690 |
3 | Недвижимость | Дачи | 57 | 11970 |
4 | Транспорт | Мотоциклы | 131 | 20960 |
8 | Стройматериалы | Регипс | 112 | 11760 |
Для удаления всех строк из таблицы применяется оператор 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.
Поделиться с друзьями
Реляционные базы данных и язык SQL
База Данных MySQL Инструкция DELETE удаления
Инструкция SQL DELETE
Инструкция DELETE используется для удаления существующих записей в таблице.
DELETE Синтаксис
DELETE FROM table_name
WHERE condition;
Примечание: Будьте внимательны при удалении записей в таблице! Обратите внимание на предложение WHERE в инструкции DELETE.
Предложение WHERE указывает, какие записи должны быть удалены. Если опустить предложение WHERE, все записи в таблице будут удалены!
Демонстрационная база данных
Ниже приведен выбор из таблицы «Customers» в образце базы данных Northwind:
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
Пример удаления SQL
Следующая инструкция SQL удаляет клиента «альфредс футтеркисте» из таблицы «клиенты»:
Пример
DELETE FROM Customers
WHERE CustomerName=’Alfreds Futterkiste’;
Таблица «Customers» теперь будет выглядеть так:
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
Удалить все записи
Можно удалить все строки в таблице без удаления таблицы. Это означает, что структура таблицы, атрибуты и индексы будут нетронутыми:
Или:
DELETE * FROM table_name;
Команда 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 DELETE
Оператор SQL DELETE
Оператор DELETE используется для удаления существующих записей в таблице.
УДАЛИТЬ Синтаксис
УДАЛИТЬ ИЗ имя_таблицы ГДЕ условие ;
Примечание: Будьте осторожны при удалении записей в таблице! Обратите внимание на предложение WHERE в
Оператор DELETE.
Предложение WHERE указывает, какие записи следует удалить. Если
если вы опустите предложение WHERE, все записи в таблице будут удалены!
Демо-база данных
Ниже представлен выбор из таблицы «Клиенты» в примере Northwind.
база данных:
Идентификатор клиента | Имя клиента | ContactName | Адрес | Город | Почтовый индекс | Страна |
---|---|---|---|---|---|---|
1 | Альфредс Футтеркисте | Мария Андерс | Obere Str.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 DELETE
Следующий оператор SQL удаляет клиента «Alfreds Futterkiste» из
Таблица «Покупатели»:
Пример
УДАЛИТЬ ОТ клиентов
ГДЕ CustomerName = ‘Альфредс Футтеркисте’;
Попробуй сам »
Таблица «Клиенты» теперь будет выглядеть так:
Идентификатор клиента | Имя клиента | ContactName | Адрес | Город | Почтовый индекс | Страна |
---|---|---|---|---|---|---|
2 | Ana Trujillo Emparedados y helados | Ана Трухильо | Avda.de la Constitución 2222 | México D.F. | 05021 | Мексика |
3 | Антонио Морено Такерия | Антонио Морено | Матадерос 2312 | México D.F. | 05023 | Мексика |
4 | Вокруг Рога | Томас Харди | 120 Hanover Sq. | Лондон | WA1 1DP | Великобритания |
5 | Berglunds snabbköp | Кристина Берглунд | Berguvsvägen 8 | Лулео | С-958 22 | Швеция |
Удалить все записи
Можно удалить все строки в таблице, не удаляя таблицу. Эта
означает, что структура таблицы, атрибуты и индексы останутся без изменений:
Следующий оператор 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 УДАЛИТЬ ОТ [Человек]. [Человек] ГДЕ 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), данных VARCHAR 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.
WITH CTE AS (SELECT *, ROW_NUMBER () OVER (PARTITION BY имя_базы_данных, размер_базы_данных, [незанятое пространство], зарезервировано, данных, 9_size, неиспользуемый размер индекса 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 140002 14 | WITH CTE AS (SELECT *, ROW_NUMBER () OVER (PARTITION BY имя_базы_данных, размер_базы_данных, [незанятое пространство], зарезервировано, данных, 9_size, неиспользуемый размер индекса ORDER BY имя_базы_данных ) AS Row_Num FROM tb_spaceused) —SELECT * —FROM CTE —WHERE Row_Num <> 1; УДАЛИТЬ ИЗ CTE WHERE 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 WHERE sp.SalesYTD> 4500000.00; ГО |
Как удалить строки из удаленной таблицы с помощью связанных серверов и OpenQuery
В следующем примере оператор удаления SQL используется для удаления строк из удаленной таблицы с использованием связанного сервера с именем hqdbt01. Затем запросите удаленную таблицу, используя соглашение об именах объектов из четырех частей, чтобы удалить строки из удаленной таблицы.
УДАЛИТЬ ИЗ [hqdbt01].AdventureWorks2014. [HumanResources]. [Shift] ГДЕ ShiftID = 2; |
В следующем примере удаленная таблица запрашивается путем указания функции набора строк OPENQUERY вместе с командой удаления.
DELETE 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 для удаления данных. Но есть список соображений, которые необходимо учитывать при использовании оператора удаления, и он выглядит следующим образом:
- Всегда рекомендуется начинать с оператора SELECT перед тем, как что-либо удалять, чтобы убедиться, что вы выбираете правильные записи.Таким образом, оператор delete используется для удаления строк из таблицы с использованием предложения where для выбора только удаляемых строк.
- Всегда используйте уникальный идентификатор, чтобы найти строки, которые нужно удалить.
- Чтобы удалить все строки в таблице, всегда используйте TRUNCATE TABLE. TRUNCATE TABLE, который работает быстрее, чем оператор удаления SQL, и использует меньше ресурсов системы и журнала транзакций.
- По умолчанию операторы DELETE вызывают исключительную (X) блокировку таблицы, и она удерживает блокировку до завершения транзакции.
- Исключительная блокировка предотвращает изменение данных другой транзакцией; операции чтения разрешены с использованием подсказки NOLOCK или уровня изоляции чтения незафиксированных
- Рекомендуется указывать подсказку TABLOCK в операторе удаления.Этот процесс позволяет освободить страницу и связанное с ней пространство, доступное для повторного использования другими объектами в базе данных.
- Перед выполнением оператора удаления рекомендуется создать кластерный индекс в таблице кучи.
- Хотя это очень просто и очень мощно, и результат оператора Delete разрушителен. Удаленные строки не могут быть легко восстановлены
Примечание. Чтобы восстановить удаленные строки, см. Раздел «Аварийное восстановление SQL Server» — «Как быстро восстановить данные, утерянные из-за операции непреднамеренного удаления»
На этом пока все … Надеюсь, вам понравится эта статья об операторе удаления SQL.Если у вас есть какие-либо вопросы, не стесняйтесь комментировать ниже.
Я технолог по базам данных, имеющий более 11 лет богатого практического опыта работы с технологиями баз данных. Я являюсь сертифицированным специалистом Microsoft и имею степень магистра компьютерных приложений.
Моя специальность заключается в разработке и внедрении решений высокой доступности и кроссплатформенной миграции БД. В настоящее время разрабатываются технологии SQL Server, PowerShell, Oracle и MongoDB.
Посмотреть все сообщения от Prashanth Jayaram
Последние сообщения от Prashanth Jayaram (посмотреть все)
.
SQL Server DELETE — удаление одной или нескольких строк из таблицы
Сводка : в этом руководстве вы узнаете, как использовать оператор SQL Server DELETE
для удаления одной или нескольких строк из таблицы.
Введение в SQL Server Оператор DELETE
Чтобы полностью удалить одну или несколько строк из таблицы, используйте оператор DELETE
. Следующее иллюстрирует его синтаксис:
DELETE [TOP (выражение) [PERCENT]] FROM table_name [WHERE search_condition];
Сначала вы указываете имя таблицы, из которой должны быть удалены строки, в предложении FROM
.
Например, следующий оператор удалит все строки из target_table
:
DELETE FROM target_table;
Во-вторых, чтобы указать количество или процент случайных строк, которые будут удалены, вы используете предложение TOP
.
Например, следующий оператор DELETE
удаляет 10 случайных строк из target_table
:
DELETE TOP 10 FROM target_table;
Поскольку таблица хранит свои строки в неопределенном порядке, мы не знаем, какие строки будут удалены, но мы точно знаем, что количество строк будет 10.
Точно так же вы можете удалить 10 процентов случайных строк, используя следующий оператор DELETE
:
DELETE TOP 10 PERCENT FROM target_table;
В-третьих, практически говоря, вы редко удаляете все строки из таблицы, а только одну или несколько строк. В этом случае вам необходимо указать search_condition
в предложении WHERE
, чтобы ограничить количество удаляемых строк.
Строки, из-за которых search_condition
оценивается как истинное, будут удалены.
Предложение WHERE
является необязательным. Если вы его пропустите, оператор DELETE
удалит все строки из таблицы.
SQL Server DELETE
Примеры операторов
Давайте создадим новую таблицу для демонстрации.
Следующий оператор создает таблицу с именем production.product_history
с данными, скопированными из таблицы production.products
:
SELECT * INTO production.product_history ОТ производство.продукты;
Следующий запрос возвращает все строки из таблицы product_history
:
SELECT * FROM production.product_history;
Как ясно видно из выходных данных, всего у нас 321 строка.
1) Удалить количество случайных строк, пример
Следующий оператор DELETE
удаляет 21 случайную строку из таблицы product_history
:
DELETE TOP (21) ОТ ПРОИЗВОДСТВА.product_history;
Вот сообщение, выданное SQL Server:
(затронута 21 строка)
Это означает, что 21 строка была удалена.
2) Удалить процент случайных строк, пример
Следующий оператор DELETE
удаляет 5 процентов случайных строк из таблицы product_history
:
DELETE TOP (5) PERCENT ИЗ production.product_history;
SQL Server выдал следующее сообщение, указывающее, что 15 строк (300 x 5% = 15) были удалены.
(затронуто 15 рядов)
3) Удалите несколько строк с примером условия
Следующий оператор DELETE
удаляет все продукты с модельным годом 2017:
DELETE ОТ production.product_history ГДЕ model_year = 2017;
Вот выходное сообщение:
(затронуты 75 строк)
4) Удалить все строки из таблицы, пример
Следующий оператор DELETE
удаляет все строки из таблицы product_history
:
DELETE FROM production.product_history;
Обратите внимание, что если вы хотите удалить все строки из большой таблицы, вы должны использовать оператор TRUNCATE TABLE
, который работает быстрее и эффективнее.
В этом руководстве вы узнали, как использовать оператор SQL Server DELETE
для удаления одной или нескольких строк из таблицы.
.
sql — УДАЛИТЬ … ОТ … ГДЕ … В
Переполнение стека
- Около
Продукты
- Для команд
Переполнение стека
Общественные вопросы и ответыПереполнение стека для команд
Где разработчики и технологи делятся частными знаниями с коллегамиВакансии
Программирование и связанные с ним технические возможности карьерного ростаТалант
Нанимайте технических специалистов и создавайте свой бренд работодателяРеклама
Обратитесь к разработчикам и технологам со всего мира- О компании
Загрузка…
.