Учебно-практическое пособие москва 2017 ббк



Pdf көрінісі
бет45/243
Дата21.07.2022
өлшемі3,05 Mb.
#147663
түріУчебно-практическое пособие
1   ...   41   42   43   44   45   46   47   48   ...   243
Байланысты:
Язык SQL. Базовый курс

SELECT *
FROM pilots
WHERE schedule && ARRAY[ 2, 5 ];
pilot_name | schedule
------------+-----------
Boris
| {3,5,6,7}
Pavel
| {1,2,5,6}
Petr
| {2,3,5,7}
(3 строки)
Сформулируем вопрос в форме отрицания: кто не летает ни во вторник, ни в пятни-
цу? Для получения ответа добавим в предыдущую SQL-команду отрицание NOT:
SELECT *
FROM pilots
WHERE NOT ( schedule && ARRAY[ 2, 5 ] );
pilot_name | schedule
------------+-----------
Ivan
| {1,3,6,7}
(1 строка)
50


Иногда требуется развернуть массив в виде столбца таблицы. В таком случае поможет
функция unnest:
SELECT unnest( schedule ) AS days_of_week
FROM pilots
WHERE pilot_name = 'Ivan';
days_of_week
--------------
1
3
6
7
(4 строки)
Подробно использование массивов рассмотрено в документации в разделах 8.15
«Массивы» и 9.18 «Функции и операторы для работы с массивами».
4.6 Типы JSON
Типы JSON предназначены для сохранения в столбцах таблиц базы данных таких зна-
чений, которые представлены в формате JSON (JavaScript Object Notation). Существу-
ет два типа: json и jsonb. Основное различие между ними заключается в быстродей-
ствии. Если столбец имеет тип json, тогда сохранение значений происходит быстрее,
потому что они записываются в том виде, в котором были введены. Но при после-
дующем использовании этих значений в качестве операндов или параметров функ-
ций будет каждый раз выполняться их разбор, что замедляет работу. При использо-
вании типа jsonb разбор производится однократно, при записи значения в таблицу.
Это несколько замедляет операции вставки строк, в которых содержатся значения
данного типа. Но все последующие обращения к сохраненным значениям выполня-
ются быстрее, т. к. выполнять их разбор уже не требуется.
Есть еще ряд отличий, в частности, тип json сохраняет порядок следования ключей в
объектах и повторяющиеся значения ключей, а тип jsonb этого не делает. Рекомен-
дуется в приложениях использовать тип jsonb, если только нет каких-то особых аргу-
ментов в пользу выбора типа json.
Для иллюстрации использования типов JSON обратимся к тематике авиаперевозок.
Предположим, что руководство авиакомпании всемерно поддерживает стремление
пилотов улучшать свое здоровье, повышать уровень культуры и расширять круго-
зор. Поэтому разработчики базы данных авиакомпании получили задание создать
специальную таблицу, в которую будут заноситься сведения о тех видах спорта, ко-
торыми занимается пилот, будет отмечаться наличие у него домашней библиотеки,
а также фиксироваться количество стран, которые он посетил в ходе туристических
поездок.


Достарыңызбен бөлісу:
1   ...   41   42   43   44   45   46   47   48   ...   243




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет