-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDELETE.txt
92 lines (66 loc) · 5.13 KB
/
DELETE.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
****** SQL Оператор DELETE ******
SQL оператор DELETE используется для удаления одной или нескольких записей из таблицы.
Синтаксис оператора DELETE в SQL:
***************************************************************************************
DELETE FROM table
[WHERE conditions];
***************************************************************************************
Параметры:
- table - таблица, из которой вы хотите удалить записи.
- WHERE conditions - необязательный. Условия, которые должны быть выполнены для удаления
записей. Если никаких условий не предусмотрено, все записи в таблице будут удалены.
!!! ВНИМАНИЕ !!!
Не нужно перечислять все поля в операторе DELETE, так как мы удаляем всю запись из таблицы.
!!! ВНИМАНИЕ !!!
****** Пример оператора DELETE с одним условием ******
Если запустить оператор DELETE без условий в предложении WHERE, все записи из таблицы будут
удалены. Рекоментдуется включать предложение WHERE, по крайней мере с одним условием,
в запросе с DELETE.
Пример:
У нас есть таблица suppliers со следующими полями: supplier_id, supplier_name,
city, state.
***************************************************************************************
DELETE FROM suppliers
WHERE supplier_name = 'Yandex';
***************************************************************************************
В этом примере удаляются все записи из таблицы suppliers, где supplier_name = Yandex.
Можно подсчитать количество строк, которые будут удалены, используя следующий запрос
SELECT перед выполнением удаления, что было описано выше:
***************************************************************************************
SELECT COUNT(*)
FROM suppliers
WHERE supplier_name = 'Yandex';
***************************************************************************************
Этот запрос вернет количество записей, которые будут удалены при выполнении
оператора DELETE.
****** Оператор DELETE с более чем одним условием ******
Можно иметь более одного условия в инструкции DELETE в SQL, используя либо условие AND,
либо условие OR. Условие AND позволяет удалить запись, если все условия выполнены.
Условие OR удаляет запись, если выполняется одно из возможных условий.
Допустим у нас таблица products со следующими полями: product_id, product_name, category_id.
Формируем запрос с DELETE:
***************************************************************************************
DELETE FROM products
WHERE category_id = 50
AND product_name <> 'Pear';
***************************************************************************************
В этом примере удалятся все записи из таблицы products, у которых category_id равен 50,
и product_name НЕ 'Pear'.
****** Использование EXISTS с оператором DELETE ******
Можно формировать более сложные запросы на удаление записей в одной таблице на основе
значений в другой таблице. Поскольку мы не можем перечислить более одной таблицы в
предложении FROM при выполнении удаления, мы можем использовать предложение EXISTS.
У нас есть таблица customer со следующими полями: customer_id, first_name,
last_name, favorite_website.
И таблица orders с полями: order_id, customer_id, order_date.
Формируем запрос с DELETE:
***************************************************************************************
DELETE FROM orders
WHERE EXISTS
(SELECT *
FROM customers
WHERE customers.customer_id = orders.customer_id
AND customers.last_name = 'Bieber');
***************************************************************************************
В этом примере удаляются все записи из таблицы orders, где в таблице customers есть запись
с фамилией 'Bieber' и совпадающим значением customer_id в обеих таблицах.