Разное

Sql удалить все записи из таблицы: DELETE | SQL | SQL-tutorial.ru

Содержание

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

Команда 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;

удалить все записи из таблицы в mysql

Я пытаюсь удалить все записи из таблицы. Мой вопрос таков:

delete from tableName.

Но он сообщает о следующей ошибке:

Код Ошибки: 1175. Вы используете безопасный режим обновления и попытались
обновить таблицу без столбца WHERE, который использует столбец KEY, чтобы отключить безопасный
режим, переключите опцию в настройках — > редактор SQL — > редактор запросов
и восстановить связь.»

Как мне решить эту проблему?

mysql

Поделиться

Источник


Sami    

11 ноября 2011 в 07:46

2 ответа


  • Как удалить все таблицы в базе данных MySQL?

    Возможный Дубликат : Усечь все таблицы в базе данных MySQL одной командой? Мне нужно удалить или удалить все таблицы в базе данных MySQL одной командой, не зная имен таблиц. Возможно ли это?

  • SQL запрос: удалить все записи из таблицы, кроме последних N?

    Можно ли построить один запрос mysql (без переменных), чтобы удалить все записи из таблицы, кроме последних N (отсортированных по id desc)? Что-то вроде этого, только это не работает 🙂 delete from table order by id ASC limit ((select count(*) from table ) — N) Спасибо.



84

truncate tableName

Это то, что вы ищете.

Truncate удалит все записи в таблице, опустошив ее.

Поделиться


Thirler    

11 ноября 2011 в 07:47



64

Это потому, что вы пытались обновить таблицу без WHERE, которая использует столбец KEY.

Быстрое решение состоит в том, чтобы добавить SET SQL_SAFE_UPDATES=0; перед вашим запросом :

SET SQL_SAFE_UPDATES=0; 

Или

закройте безопасный режим обновления.
Правка -> Настройки -> Редактор -> Редактор SQL SQL
удалить не дай UPDATE и отчетности DELETE без предложения WHERE (безопасная обновления) .

BTW вы можете использовать TRUNCATE TABLE tablename; для удаления всех записей .

Поделиться


Sandeep Pathak    

11 ноября 2011 в 07:59


Похожие вопросы:

Удалить все записи из таблицы

Как мы можем удалить все записи из таблицы в DELPHI? нам не разрешается использовать такой цикл: for k:=1 to table1. recordcount do begin table1.Last; table1.Delete; end; есть ли какие-то решения?

Как удалить повторяющиеся строки из таблицы MySQL

У меня есть таблица MySQL , как: ID, Col1, Col2, Col3, Col4, etc… ID — это primary key , и он работает с момента создания таблицы. Что я хочу сделать, так это удалить все записи, кроме одной, где…

Как удалить select из таблицы и удалить все остальные невыбранные записи?

Существует ли элегантный способ удалить все невыбранные записи из таблицы после выбора из нее?

Как удалить все таблицы в базе данных MySQL?

Возможный Дубликат : Усечь все таблицы в базе данных MySQL одной командой? Мне нужно удалить или удалить все таблицы в базе данных MySQL одной командой, не зная имен таблиц. Возможно ли это?

SQL запрос: удалить все записи из таблицы, кроме последних N?

Можно ли построить один запрос mysql (без переменных), чтобы удалить все записи из таблицы, кроме последних N (отсортированных по id desc)? Что-то вроде этого, только это не работает 🙂 delete from. ..

Удалить дубликаты данных из таблицы в mysql

Я не знаю, как удалить все дубликаты данных из таблицы, и я не знаю, какие данные дублируются в моей таблице, какой запрос я могу запустить в Mysql пожалуйста, помогите мне delete from…

Как я могу удалить все записи из таблицы?

Я хочу удалить все записи из моей таблицы SQL Server. Я использую LINQ для EF5. Могу ли я что-нибудь для этого сделать?

Удалить все записи в таблице MYSQL в phpMyAdmin

Я использую wampserver 2.2. Когда я хочу удалить все записи таблицы в phpMyAdmin (select all), она удаляет только одну запись, а не все записи. Почему он не удаляет все записи?

Как Удалить Все Записи Из Базы Данных Все Таблицы

Ребята, вы не могли бы помочь мне решить мою проблему? Как удалить все записи из базы данных все таблицы в один клик с помощью Laravel ajax. Я должен удалить все записи из всех таблиц, пожалуйста,…

Как я могу удалить все записи из таблицы?

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

Удаление записей в MySQL (DELETE)

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

Удаление данных из таблиц

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

Синтаксис

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

DELETE FROM table_name WHERE condition;

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

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

блок 1

Предположим, что наша таблица в настоящее время имеет следующие записи:

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      1 | Vasya Pupkin | 2001-05-01 |   5000 |       4 |
|      2 | Vanya Pupkin | 2002-07-15 |   6000 |       2 |
|      3 | Sanya Pupkin | 2005-10-18 |   8000 |       5 |
+--------+--------------+------------+--------+---------+

Удалить записи в MySQL по условию

Следующая инструкция удалит строки из таблицы лиц, где идентификатор равен 3.

DELETE FROM employees WHERE id = 3;

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

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      1 | Vasya Pupkin | 2001-05-01 |   5000 |       4 |
|      2 | Vanya Pupkin | 2002-07-15 |   6000 |       2 |
+--------+--------------+------------+--------+---------+

Удалить все данные в таблице MySQL

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

Следующее утверждение удалит все записи из таблицы:

DELETE FROM persons;

Теперь, если вы попытаетесь выбрать записи из таблицы, вы получите пустой набор результатов.

блок 3

Удалить все из таблицы MySQL (TRUNCATE TABLE)

В этом уроке вы узнаете, как быстро удалить все строки из таблицы MySQL с помощью SQL запроса.

Удаление данных таблицы

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

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

Синтаксис

Основной синтаксис TRUNCATE TABLE может быть задан с помощью:

TRUNCATE TABLE table_name;

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

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      1 | Vasya Pupkin | 2001-05-01 |   5000 |       4 |
|      2 | Vanya Pupkin | 2002-07-15 |   6000 |       2 |
+--------+--------------+------------+--------+---------+

блок 1

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

TRUNCATE TABLE employees;

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

TRUNCATE TABLE в сравнении с DELETE

Хотя DELETE и TRUNCATE TABLE, имеют одинаковый эффект — они работают по-разному. Вот некоторые основные различия между этими двумя утверждениями:

  • Оператор TRUNCATE TABLE удаляет и заново создает таблицу таким образом, чтобы любое значение автоинкремента сбрасывается до начального значения, которое обычно равно 1.
  • DELETE позволяет фильтровать, какие строки должны быть удалены, на основе необязательного условия WHERE, тогда как TRUNCATE TABLE не поддерживает условие WHERE, а просто удаляет все строки.
  • TRUNCATE TABLE работает быстрее и использует меньше системных ресурсов, чем DELETE, потому что DELETE сканирует таблицу, чтобы сгенерировать число затронутых строк, затем удаляет строки по одной и записывает запись в журнал базы данных для каждой удаленной строки, тогда как TRUNCATE TABLE просто удалить все строки без предоставления дополнительной информации.

блок 3

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

удалить все записи из таблицы, кроме последних N?

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

Решениями, которые действительно сработали, были двойной подзапрос /NOT IN метод Алекса Барретта (аналогичный методу Билла Карвина ) и метод КвасснойLEFT JOIN .

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

То, что я выбрал, использует двойной подзапрос Алекса Барретта (спасибо!), Но <=вместо этого использует NOT IN:

DELETE FROM `test_sandbox`
  WHERE id <= (
    SELECT id
    FROM (
      SELECT id
      FROM `test_sandbox`
      ORDER BY id DESC
      LIMIT 1 OFFSET 42 
    ) foo
  )

Он использует OFFSETдля получения идентификатора N- й записи и удаляет эту запись и все предыдущие записи.

Поскольку порядок уже является условием этой проблемы ( ORDER BY id DESC), <=он идеально подходит.

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

Прецедент

Я протестировал три метода работы и новый метод, описанный выше, в двух тестовых случаях.

Оба тестовых примера используют 10000 существующих строк, в то время как первый тест сохраняет 9000 (удаляет самую старую 1000), а второй тест сохраняет 50 (удаляет самые старые 9950).

+
|           | 10000 TOTAL, KEEP 9000 | 10000 TOTAL, KEEP 50 |
+
| NOT IN    |         3.2542 seconds |       0.1629 seconds |
| NOT IN v2 |         4.5863 seconds |       0.1650 seconds |
| <=,OFFSET |         0.0204 seconds |       0.1076 seconds |
+

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

Заявление SQL DELETE


Оператор SQL DELETE

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

УДАЛИТЬ Синтаксис

УДАЛИТЬ ИЗ имя_таблицы ГДЕ условие ;

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


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

Ниже представлен выбор из таблицы «Клиенты» в примере 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 Ганновер пл. Лондон 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 Ганновер пл. Лондон WA1 1DP Великобритания
5 Berglunds snabbköp Кристина Берглунд Berguvsvägen 8 Лулео С-958 22 Швеция

Удалить все записи

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

Следующий оператор SQL удаляет все строки в таблице «Клиенты»,
без удаления таблицы:


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):

ВЫБРАТЬ *
ИЗ (ВЫБРАТЬ имя_столбца ИЗ имя_таблицы
ЗАКАЗАТЬ column_name (s) )
ГДЕ 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 Ганновер пл. Лондон 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 СТРОКИ;

SQL DELETE — удаление данных в таблице или нескольких таблицах

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

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

DELETE FROM table

WHERE

condition;

Чтобы удалить одну или несколько строк в таблице:

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

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

Примеры SQL DELETE

Давайте рассмотрим несколько примеров использования оператора DELETE.

SQL DELETE — удаление одной строки в таблице

Следующий оператор удаляет сотрудника с идентификатором 3 из таблицы сотрудников :

УДАЛИТЬ ОТ сотрудников

WHERE employeeID = 3;

SQL DELETE — удаление всех строк в таблице

Чтобы удалить все строки в таблице employee , вы просто выполните следующий запрос: (не рекомендуется и сделайте резервную копию перед этим)

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

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

Например, каждый сотрудник работает на одной или нескольких территориях, и на каждой территории есть несколько сотрудников. Таблица территорий сотрудников используется для хранения отношений между сотрудниками и территориями.

При удалении строки в таблице employee необходимо также удалить связанные строки в таблице employeeterritories . Для этого необходимо выполнить два оператора DELETE следующим образом:

DELETE FROM employee

WHERE employeeID = 3;

УДАЛИТЬ С территории сотрудников

WHERE employeeID = 3

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

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

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

  • Было ли это руководство полезным?
  • Да Нет

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

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

Введение в SQL Server

Оператор DELETE

Чтобы полностью удалить одну или несколько строк из таблицы, используйте оператор DELETE . Следующее иллюстрирует его синтаксис:

 

DELETE [TOP (выражение) [PERCENT]] FROM table_name [WHERE search_condition];

Язык кода: 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 процентов случайных строк, используя следующий оператор DELETE :

 

DELETE TOP 10 PERCENT FROM target_table;

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

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

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

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

SQL Server

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

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

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

 

SELECT * INTO production.product_history ИЗ production.products;

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

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

 

SELECT * FROM production.product_history;

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

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

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

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

 

DELETE TOP (21) ИЗ production. product_history;

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

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

 

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

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

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

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

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

 

DELETE TOP (5) PERCENT ИЗ production.product_history;

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

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

 

(затронуто 15 рядов)

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

3) Удаление некоторых строк с примером условия

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

 

DELETE ИЗ производство.product_history ГДЕ model_year = 2017;

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

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

 

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

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

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

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

 

DELETE ОТ ПРОИЗВОДСТВА. product_history;

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

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

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

Обзор оператора 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

Примечание: предложение when TOP (n) используется с оператором SQL Delete и любым оператором DML (i.е. 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.

С CTE

AS (SELECT *,

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

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

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

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

данных,

неиспользуемый размер_индекса

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

13

14

WITH CTE

AS (SELECT *,

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

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

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

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

данных,

неиспользуемый размер_индекса

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.Если у вас есть какие-либо вопросы, не стесняйтесь комментировать ниже.

Я технолог по базам данных с более чем 11-летним богатым практическим опытом работы с технологиями баз данных. Я сертифицированный специалист Microsoft и имею степень магистра компьютерных приложений.

Моя специальность заключается в разработке и внедрении решений высокой доступности и кроссплатформенной миграции БД. В настоящее время работают над технологиями SQL Server, PowerShell, Oracle и MongoDB.

Посмотреть все сообщения от Prashanth Jayaram

Последние сообщения от Prashanth Jayaram (посмотреть все)

SQL TRUNCATE TABLE Vs DELETE statement

В этом руководстве вы узнаете, как быстро удалить все строки из таблицы с помощью SQL.

Удаление данных таблицы

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

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

Синтаксис

Базовый синтаксис TRUNCATE TABLE может быть задан следующим образом:

TRUNCATE TABLE table_name ;

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

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

+ -------- + -------------- + ------------ + -------- + --- ------ +
| emp_id | emp_name | найм_дата | зарплата | dept_id |
+ -------- + -------------- + ------------ + -------- + --- ------ +
| 1 | Итан Хант | 2001-05-01 | 5000 | 4 |
| 2 | Тони Монтана | 2002-07-15 | 6500 | 1 |
| 3 | Сара Коннор | 2005-10-18 | 8000 | 5 |
| 4 | Рик Декард | 2007-01-03 | 7200 | 3 |
| 5 | Мартин Бланк | 2008-06-24 | 5600 | NULL |
+ -------- + -------------- + ------------ + -------- + --- ------ +
 

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

  сотрудников TRUNCATE TABLE;  

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


ОБРЕЗАННАЯ ТАБЛИЦА и УДАЛИТЬ

Хотя DELETE и TRUNCATE TABLE , похоже, имеют одинаковый эффект, но работают они по-разному. Вот несколько основных различий между этими двумя утверждениями:

  • TRUNCATE TABLE оператор отбрасывает и повторно создает таблицу таким образом, что любое значение автоинкремента
    сбрасывается до своего начального значения, которое обычно равно 1.
  • DELETE позволяет фильтровать строки для удаления на основе необязательного предложения WHERE , тогда как TRUNCATE TABLE не поддерживает предложение WHERE , он просто удаляет все строки.
  • TRUNCATE TABLE работает быстрее и использует меньше системных ресурсов, чем DELETE , потому что DELETE сканирует таблицу для создания количества затронутых строк, затем удаляет строки одну за другой и записывает запись в журнал базы данных для каждой удаленная строка, а TRUNCATE TABLE просто удаляет все строки без предоставления какой-либо дополнительной информации.

Совет: Используйте TRUNCATE TABLE , если вы просто хотите удалить все строки и заново создать всю таблицу.Используйте DELETE , если вы хотите удалить ограниченное количество строк на основе определенного условия или если вы не хотите сбрасывать значение автоинкремента.

Как удалить записи с помощью функции «Удалить» в SQL

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

В этой статье о команде удаления SQL мы рассмотрим следующие темы:

  • Что такое удаление в SQL?
  • Синтаксис для использования команды удаления SQL
  • Удаление определенных строк на основе одного условия
  • Удаление определенных строк на основе нескольких условий
  • Удаление всех записей из таблицы

Что такое удаление в SQL?

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

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

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

Программа аспирантуры по бизнес-анализу

В партнерстве с Университетом Пердью

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Магистерская программа для бизнес-аналитиков

Получите опыт работы с инструментами бизнес-аналитикиПросмотрите программу

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

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

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

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

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

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

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

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

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

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

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

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

Получите опыт работы с новейшими инструментами и методами бизнес-аналитики с помощью магистерской программы Business Analyst. Запишитесь сейчас!

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

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

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

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

У вас есть к нам вопросы? Упомяните их в разделе комментариев нашей статьи «Удаление в SQL», и наши специалисты ответят на них за вас.

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

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

2021 © Все права защищены. Карта сайта