SQL массивы: основы

ARRAY 

ARRAY - это простой список значений одного типа, который можно хранить внутри строки. 

Массив имеет вид -> { элемент_1, элемент_2, элемент_3, элемент_N, .... }

Каждый элемент массива имеет индекс. Индекс - это номер элемента внутри массива, и начинается счет индекса от 1. Это ключевое отличие от многих языков программирования, где индексация обычно начинается с 0.

Обычно в массив записывают какие-то характеристики, что позволяет нам экономить строки и более эффективно выполнять запросы.

Давайте создадим таблицу с массивами.

CREATE TABLE users (
    id BIGINT PRIMARY KEY,
    name TEXT,
    favorite_colors TEXT[],
    has_cars TEXT[]
);

INSERT INTO users (name, favorite_colors, has_cars)
VALUES 
    (7, 'Alexander',  ARRAY['blue', 'green'], ARRAY['Porsche Cayman', 'Mercedes Benz E-classe'] ),
    (4, 'Vladislav', ARRAY['red', 'yellow'], ARRAY['Hyundai Solaris']);

Мы получим вот такую таблицу: 

id name preferences has_cars
1 Alexander {'blue', 'green'} {Porsche Cayman', 'Mercedes Benz E-classe'}
2 Vlad {'red', 'yellow'} {'Hyundai Solaris'}

Если бы мы использовали простую таблицу, то у нас было 4 строки, а с использованием массивов у нас теперь 2 строки :)

Также массивы обладают свойством многономерности, мы можем хранить массивы внутри массивов.

name favorite_colors property
Alexander {'blue', 'green'} { {'Porsche Cayman', 'Mercedes Benz E-classe'} , {'Santa Villa Como Lake', 'Moscow One Room Flat'} }
Vlad {'red', 'yellow'}

{ {'Hyundai Solaris'} , {'Moscow 4 Rooms Flat ', 

'Moscow 2 Rooms Flat ', 'Tula House'} }

Теперь в колонке property мы храним многомерный массив с автомобилями и недвижимостью.