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 | Берлин | 12209 | Германия |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitucion 2222 | Mexico D.F. | 05021 | Mexico |
3 | Antonio Moreno Taqueria | Antonio Moreno | Mataderos 2312 | Mexico D.F. | 05023 | Mexico |
4 | Почти Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
5 | Berglunds snabbkop | Christina Berglund | Berguvsvagen 8 | Lulea | S-958 22 | Sweden |
SQL DELETE Пример
Следующая SQL инструкция удаляет клиента «Alfreds Futterkiste» из таблицы «Customers»: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 Constitucion 2222 | Mexico D.F. | 05021 | Mexico |
3 | Antonio Moreno Taqueria | Antonio Moreno | Mataderos 2312 | Mexico D.F. | Mexico | |
4 | Почти Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
5 | Berglunds snabbkop | Christina Berglund | Berguvsvagen 8 | Lulea | S-958 22 | Sweden |
Удалить все записи
Можно удалить все строки в таблице, не удаляя таблицу. Это означает, что структура таблицы, атрибуты и индексы останутся неизменными:
DELETE FROM table_name
Следующая SQL-инструкция удаляет все строки в таблице «Customers», не удаляя саму таблицу:
DELETE FROM Customers
❮ Previous Next ❯
SQL.
DELETE из одной (нескольких таблиц) при использ. нескольких ← →SergP. (2004-11-17 20:38) [0]
1. Нужно удалить записи из одной таблицы, но при этом в запросе участвует несколько таблиц. Подскажите какой должен быть правильный синтаксис, а то что-то я запутался, а в JETSQL40.chm только простейшие примеры для одной таблицы.
Нужно удалить записи из table1, те которые удовлетворяют условию:
table1.field1=table2.field1 and table2.field2=<какое-то значение>
Конечто я пока обошелся вложенным select»ом, но интерестно как это без select»а записывается.
2. Как удалить записи сразу из 2-х таблиц? Можно ли такое делать?
← →
YurikGL © (2004-11-17 20:40) [1]
1.
delete from table1 where field1=»aa» and field2=»bb»
2.
Что значит сразу? Одним запросом — вроде нет.
← →
sniknik © (
> Нужно удалить записи из table1, те которые удовлетворяют условию:
> table1.field1=table2.field1 and table2.field2=<какое-то значение>
DELETE a.* FROM table1 a INNER JOIN table2 b ON a.field1=b.field1 WHERE b.field1=<какое-то значение>
← →
SergP. (2004-11-17 20:53) [3]
> YurikGL © (17.11.04 20:40) [1]
> 1.
> delete from table1 where field1=»aa» and field2=»bb»
Нет. Я имел ввиду удаление из одной таблицы, но в запросе должно участвовать несколько…
Записи должны удаляться из table1, но в запросе участвуют table1 и table2. По такому условию (в упрощенном виде):
> table1.field1=table2.field1 and table2.field2=<какое-то
> значение>
> 2.
> Что значит сразу? Одним запросом — вроде нет.
просто в условии для удаления есть связи между этими двумя таблицами. Разве нельзя писать: delete from table1,table2 where …?
← →
sniknik © (2004-11-17 20:56) [4]
для более быстрого отрабатывания желательно иметь индексы по обьеденяемым полям
> Как удалить записи сразу из 2-х таблиц? Можно ли такое делать?
можно сделать внешний ключь с удалением связаных записей (удаляеш в одной во второй автоматом удалится)
читай JETSQL40.chm внимательнее (см «Предложение CONSTRAINT»)
← →
ЮЮ © (2004-11-18 04:11) [5]
Это запрос для MS SQL. Возможно и в Access подобное прокатит
DELETE FROM E_Staff
WHERE
SELECT s.ID
FROM
E_Staff s
LEFT JOIN EI_Vacancies iv ON s. Id = iv.Staff
LEFT JOIN E_Vacancies v ON s.Id = v.Staff
LEFT JOIN E_VacDocEntryVacancies dv ON s.Id = dv.Staff
WHERE
(s.WorkerOccupation IS NULL) AND (s.EmployeeOccupation IS NULL) AND
(iv.ID IS NULL) AND (v.ID IS NULL) AND (dv.ID IS NULL)
)
← →
kostan © (2004-11-18 05:14) [6]
< sniknik © (17.11.04 20:56) [4]
а что у Access есть внешние ключи?
(переходи на SQL сервера (типа IB) там есть Cascade)
← →
sniknik © (2004-11-18 08:23) [7]
Ю © (18.11.04 04:11) [5]
не прокатит, но переделать возможно нужно только обьеденения сделать вложенными и все (вродебы, на первый взгляд).
kostan © (18.11.04 05:14) [6]
> а что у Access есть внешние ключи?
а что первый раз я невнятно сказал? у меня наверное манная каша между зубов застряла, когда писал. .. повторять тем не менее не буду.
> (переходи на SQL сервера (типа IB) там есть Cascade)
а потом переходи обратно, тут есть currency… (бред, хотя, неудачный пример он действительно здесь есть, а в IB нету (насколько знаю), а по аналогии с твоим советом надо было взять чтото что и там и там есть)
SQL — Удалить оператор
Используйте оператор DELETE для удаления записей из существующей таблицы в текущей схеме или таблиц схемы, для которых у вас есть привилегия DELETE.
Синтаксис:
УДАЛИТЬ ИЗ имя_таблицы [WHERE Condition];
Этот синтаксис DELETE действителен во всех базах данных, таких как SQL Server, Oracle, MySQL, PostgreSQL, SQLite и т. д. Предложение WHERE является необязательным.
Для демонстрационных целей следующие Сотрудник 9Таблица 0012 во всех примерах здесь.
Эмпид | Имя | Фамилия | Электронная почта | Телефон № | Зарплата |
---|---|---|---|---|---|
1 | 'Джон' | 'Король' | '[электронная почта защищена]' | '650. 127.1834' | 33000 |
2 | 'Джеймс' | 'Бонд' | |||
3 | 'Нина' | 'Кочхар' | '[электронная почта защищена]' | '123.456.4568' | 17000 |
4 | 'Лекс' | 'Де Хаан' | '[электронная почта защищена]' | '123.456.4569' | 15000 |
Вы можете удалить определенные записи из таблицы, используя предложение WHERE
.
Следующее удалит запись из таблицы Employee
, где значение EmpId
равно 4.
УДАЛИТЬ ОТ Сотрудника, ГДЕ EmpId = 4;
Теперь запрос Select * from Employee
Эмпид | Имя | Фамилия | Электронная почта | Телефон № | Зарплата |
---|---|---|---|---|---|
1 | 'Джон' | 'Король' | '[электронная почта защищена]' | '650.127.1834' | 33000 |
2 | 'Джеймс' | 'Бонд' | |||
3 | 'Нина' | 'Кочхар' | '[электронная почта защищена]' | '123.456.4568' | 17000 |
Таким же образом, следующий код удалит всех сотрудников из таблицы Сотрудник
, у которых Зарплата
больше 20000.
УДАЛИТЬ ОТ Сотрудника, ГДЕ Зарплата > 20000;
Теперь запрос Select * from Employee
будет отображать следующие строки.
Эмпид | Имя | Фамилия | Электронная почта | Телефон № | Зарплата |
---|---|---|---|---|---|
2 | 'Джеймс' | 'Бонд' | |||
3 | 'Нина' | 'Кочхар' | '[электронная почта защищена]' | '123.456.4568' | 17000 |
Следующая инструкция DELETE удалит все записи из таблицы Employee
.
УДАЛИТЬ ОТ Сотрудника;
Теперь запрос Select * from Employee
отобразит пустую таблицу.
Эмпид | Имя | Фамилия | Электронная почта | Телефон № | Зарплата |
---|---|---|---|---|---|
Вы не можете удалить значение одного столбца с помощью инструкции DELETE. Используйте оператор UPDATE, чтобы установить значение NULL.
Оператор SQL DELETE - Учебное пособие Республика
Рекламные объявления
В этом руководстве вы узнаете, как удалять записи из таблицы базы данных с помощью SQL.
Удаление данных из таблиц
Точно так же, как вы вставляете записи в таблицу с помощью оператора INSERT
, вы также можете удалять записи из таблицы с помощью оператора DELETE
.
Синтаксис
Оператор DELETE
используется для удаления одной или нескольких строк из таблицы.
УДАЛИТЬ ИЗимя_таблицы
ГДЕусловие
;
Предупреждение: Предложение WHERE
в операторе DELETE
указывает, какую запись или записи следует удалить. Однако это необязательно, но если вы пропустите или забудете условие WHERE
, все записи будут безвозвратно удалены из таблицы.
Давайте удалим некоторые записи из таблицы person , которую мы создали в главе создания таблицы.
Предположим, что наша таблица человек в настоящее время имеет следующие записи:
+----+------+-------------+-------------+ | идентификатор | имя | дата_рождения | телефон | +----+------+-------------+-------------+ | 1 | Питер Уилсон | 15 июля 1990 г. | 0711-020361 | | 2 | Кэрри Симпсон | 1995-05-01 | 0251-031259 | | 3 | Виктория Эшворт | 17 октября 1996 г. | 0695-346721 | | 4 | Джордж Бейли | 1993-03-05 | 0897-034214 | | 5 | Норман Бейтс | 1999-08-25 | 0522-556721 | +----+------+-------------+-------------+
Удалить записи на основе условий
Следующий оператор удалит строки из таблицы лиц , где id больше 3.
Пример
Попробуйте этот код »УДАЛИТЬ ИЗ лиц идентификатор > 3;
После выполнения запроса таблица person будет выглядеть примерно так:
+----+------+-------------+-------------+ | идентификатор | имя | дата_рождения | телефон | +----+------+-------------+-------------+ | 1 | Питер Уилсон | 1990-07-15 | 0711-020361 | | 2 | Кэрри Симпсон | 1995-05-01 | 0251-031259 | | 3 | Виктория Эшворт | 17 октября 1996 г. | 0695-346721 | +----+------+-------------+-------------+
Примечание: См. руководство по предложению SQL WHERE
, чтобы узнать, как сформировать сложный запрос на основе нескольких условий при удалении записей из таблиц.