Контрольные вопросы и задания
3. Если бы мы для копирования данных в таблицу aircrafts_tmp использовали
команду INSERT без общего табличного выражения
INSERT INTO aircrafts_tmp SELECT * FROM aircrafts;
то в качестве выходного результата мы увидели бы сообщение
INSERT 0 9
Как вы думаете, что будет выведено, если дополнить команду предложением
RETURNING *?
INSERT INTO aircrafts_tmp SELECT * FROM aircrafts RETURNING *;
Проверьте ваши предположения на практике. Подумайте, каким образом мож-
но использовать выведенный результат?
4. В тексте главы в предложениях ON CONFLICT команды INSERT мы использова-
ли только выражения, состоящие из имени одного столбца. Однако в таблице
«Места» (seats) первичный ключ является составным и включает два столбца.
Напишите команду INSERT для вставки новой строки в эту таблицу и преду-
смотрите возможный конфликт добавляемой строки со строкой, уже имеющей-
ся в таблице. Сделайте два варианта предложения ON CONFLICT: первый — с ис-
пользованием перечисления имен столбцов для проверки наличия дублирова-
ния, второй — с использованием предложения ON CONSTRAINT.
Для того чтобы не изменить содержимое таблицы «Места», создайте ее копию
и выполняйте все эти эксперименты с таблицей-копией.
5. В предложении DO UPDATE команды INSERT может использоваться и условие
WHERE. Самостоятельно ознакомьтесь с этой возможностью с помощью доку-
ментации и напишите такую команду INSERT.
6. Команда COPY по умолчанию ожидает получения вводимых данных в формате
text, когда значения данных разделяются символами табуляции. Однако мож-
но представлять входные данные в формате CSV (Comma Separated Values), т. е.
использовать в качестве разделителя запятую.
Достарыңызбен бөлісу: