-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathINSERT.txt
104 lines (77 loc) · 6.23 KB
/
INSERT.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
****** SQL оператор INSERT ******
SQL оператор INSERT используется для вставки одной или нескольких записей
в таблицу. Существует два синтаксиса для оператора INSERT в зависимости от
того, вставляете ли вы одну запись или несколько записей.
Синтаксис SQL оператора INSERT при вставке одной записи в таблицу:
********************************************************************************
INSERT INTO table
(column1, column2, ... )
VALUES
(expression1, expression2, ... );
********************************************************************************
Или синтаксис SQL оператора INSERT при вставке нескольких записей в таблицу:
********************************************************************************
INSERT INTO table
(column1, column2, ... )
SELECT expression1, expression2, ...
FROM source_tables
[WHERE conditions];
********************************************************************************
Параметры или аргументы:
- table - таблица, в которую нужно вставить записи.
- column1, column2 - это столбцы в table для вставки значений.
- expression1, expression2 - эти значения присваиваются столбцам в таблице.
Поэтому column1 будет присвоено значение expression1, column2
будет присвоено значение expression2 и т.д. ,
- source_tables - используется при вставке записей из другой таблицы. Это исходная таблица
при выполнении вставки.
- WHERE conditions - необязательный. Используется при вставке записей из другой таблицы.
Это те условия, которые должны быть соблюдены для вставки записей.
!!! Примечание !!!
При вставке записей в таблицу с помощью SQL оператора INSERT, необходимо указать значение для
каждого столбца NOT NULL. Вы можете опустить столбец из оператора INSERT, только если столбец
допускает значения NULL.
****** Использование оператора INSERT для вставки одной записи ******
Самый простой способ использовать оператор INSERT - вставить одну запись в таблицу с помощью
ключевого слова VALUES.
В этом примере у нас есть таблица с categories: category_id, category_name
SQL оператор в PgSQL:
********************************************************************************
INSERT INTO categories
(category_id, category_name)
VALUES
(150, 'Miscellaneous');
********************************************************************************
Этот пример вставит одну запись в таблицу categories. Эта новая запись будет иметь
category_id 150 и category_name «Miscellaneous».
В этом примере, поскольку вы предоставляете значения для всех столбцов в таблице categories,
вы можете опустить имена столбцов и вместо этого написать оператор INSERT, такой как:
Пример на PgSQL:
********************************************************************************
INSERT INTO categories
VALUES
(150, 'Miscellaneous');
********************************************************************************
Однако это опасно по двум причинам. Во-первых, оператор INSERT выдаст ошибку, если в таблицу
категорий будут добавлены дополнительные столбцы. Во-вторых, данные будут вставлены в неправильные
столбцы, если порядок столбцов в таблице изменится. Поэтому, как правило, лучше перечислить имена
столбцов в операторе INSERT.
****** Использование оператора INSERT для вставки нескольких записей ******
Поместив оператор SELECT в оператор INSERT, вы можете быстро выполнить несколько операций вставки.
Давайте рассмотрим пример того, как это сделать. Допустим у нас есть таблица employees со следующими
полями: employee_number, first_name, last_name, salary, dept_id
И таблица customers со следующими полями: customer_id, first_name, last_name, favorite_website
Теперь давайте вставим некоторую информацию из таблицы employees в таблицу customers:
Пример на PgSQL:
********************************************************************************
INSERT INTO customers
(customer_id, last_name, first_name)
SELECT employee_number AS customer_id,
last_name,
first_name
FROM employees
WHERE employee_number < 1003;
********************************************************************************
ВНИМАНИЕ: С этим типом INSERT некоторые базы данных требуют от вас псевдонимов имен столбцов в
SELECT, чтобы они соответствовали именам столбцов таблицы, в которую вы вставляете. Как вы можете
видеть в приведенном выше примере, мы связали первый столбец в операторе SELECT с customer_id.