Delete sql синтаксис: DELETE | SQL | SQL-tutorial.ru

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.
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

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

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

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 ©   (
2004-11-17 20:51
) [2]

> Нужно удалить записи из 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

     Id IN (
       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 , чтобы узнать, как сформировать сложный запрос на основе нескольких условий при удалении записей из таблиц.

Оставить комментарий

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

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