Учебное пособие Санкт-Петербург «бхв-петербург»



Pdf көрінісі
бет50/256
Дата18.11.2022
өлшемі1.88 Mb.
#465124
түріУчебное пособие
1   ...   46   47   48   49   50   51   52   53   ...   256
sql osnovi yazika

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 строки)
67


Глава 4. Типы данных СУБД PostgreSQL
Сформулируем вопрос в форме отрицания: кто не летает ни во вторник, ни в пятни-
цу? Для получения ответа добавим в предыдущую SQL-команду отрицание NOT:
SELECT * FROM pilots
WHERE NOT ( schedule && ARRAY[ 2, 5 ] );
pilot_name | schedule
------------+-----------
Ivan
| {1,3,6,7}
(1 строка)
Иногда требуется развернуть массив в виде столбца таблицы. В таком случае поможет
функция 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 разбор производится однократно, при записи значения в таблицу. Это
несколько замедляет операции вставки строк, в которых содержатся значения дан-
ного типа. Но все последующие обращения к сохраненным значениям выполняются
быстрее, т. к. выполнять их разбор уже не требуется.
68


4.6. Типы JSON
Есть еще ряд отличий, в частности, тип json сохраняет порядок следования ключей
в объектах и повторяющиеся значения ключей, а тип jsonb этого не делает. Реко-
мендуется в приложениях использовать тип jsonb, если только нет каких-то особых
аргументов в пользу выбора типа json.
Для иллюстрации использования типов JSON обратимся к тематике авиаперевозок.
Предположим, что руководство авиакомпании всемерно поддерживает стремление
пилотов улучшать свое здоровье, повышать уровень культуры и расширять кругозор.
Поэтому разработчики базы данных авиакомпании получили задание создать специ-
альную таблицу, в которую будут заноситься сведения о тех видах спорта, которыми
занимается пилот, будет отмечаться наличие у него домашней библиотеки, а также
фиксироваться количество стран, которые он посетил в ходе туристических поездок.


Достарыңызбен бөлісу:
1   ...   46   47   48   49   50   51   52   53   ...   256




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

    Басты бет