-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathUPDATE.txt
128 lines (89 loc) · 5.84 KB
/
UPDATE.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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
****** SQL оператор UPDATE ******
SQL оператор UPDATE используется для обновления существующих
записей в таблицах.
Синтаксис для оператора UPDATE при обновлении таблицы в SQL:
**********************************************************************************
UPDATE table
SET column1 = expression1,
column2 = expression2,
...
[WHERE conditions];
**********************************************************************************
Синтаксис SQL запроса UPDATE при обновлении таблицы данными из другой таблицы:
**********************************************************************************
UPDATE table1
SET column1 = (SELECT expression1
FROM table2
WHERE conditions)
[WHERE conditions];
**********************************************************************************
Синтаксис SQL запроса UPDATE при обновлении нескольких таблиц (не разрешен в Oracle):
**********************************************************************************
UPDATE table1, table2, ...
SET column1 = expression1,
column2 = expression2,
...
WHERE table1.column = table2.column
[AND conditions];
**********************************************************************************
Параметры:
- column1, column2 - столбцы, которые мы хотим обновить.
- expression1, expression2 - это новые значения, назначаемые column1, column2.
Поэтому column1 будет присвоено значение expression1,
а column2 будет присвоено значение expression2 и т.д.
- WHERE conditions - необязательный. Условия, которые должны быть выполнены, чтобы
выполнить обновление. Если никаких условий не предусмотрено,
то все записи в таблице будут обновлены.
****** Обновление одного столбца ******
Допустим, у нас есть таблица customers с полями: customer_id, first_name,
last_name, favorite_website.
Формируем запрос:
**********************************************************************************
UPDATE customers
SET first_name = 'Joseph'
WHERE customer_id = 8000;
**********************************************************************************
В этом примере UPDATE для поля first_name установлено (заменено, оновлено) значение
'Joseph' в таблице customers, где customer_id равно 8000.
****** Обновить несколько столбцов ******
Когда мы обновляем несколько столбцов в выражении UPDATE, нам нужно разделить
запятыми пары столбец / значение в предложении SET.
У нас есть таблица suppliers со следующими полями: customer_id, first_name,
last_name, favorite_website,
supplier_id, supplier_name,
city, state.
Формируем SQL запрос с UPDATE:
**********************************************************************************
UPDATE suppliers
SET supplier_id = 150,
supplier_name = 'Apple',
city = 'Cupertino'
state = 'California'
WHERE supplier_name = 'Google';
**********************************************************************************
В этом примере UPDATE обновит (заменит) значения supplier_id на 150,
supplier_name на 'Apple',
city на 'Cupertino',
state на 'California',
в той (тех) записях, где supplier_name это "Google".
****** Обновление таблицы данными из другой таблицы ******
У нас есть таблица products со следующими полями: product_id, product_name,
category_id.
И таблица summary_data с полями: product_id, current_category.
Формируем запрос:
**********************************************************************************
UPDATE summary_data
SET current_category = (SELECT category_id
FROM products
WHERE products.product_id = summary_data.product_id)
WHERE EXISTS (SELECT category_id
FROM products
WHERE products.product_id = summary_data.product_id);
**********************************************************************************
В этом примере будет обновлено поле current_category в таблице summary_data
с помощью category_id из таблицы products, где значения product_id совпадают.
Так же наш оператор UPDATE включил условие EXISTS в предложение WHERE, чтобы
убедиться, что в таблице products и summary_data совпадает product_id, прежде
чем обновлять запись.
Если бы мы не включили условие EXISTS, запрос UPDATE обновил бы все поля
current_category в таблице summary_data, без учета совпадений id и их наличия.