0Pricing
SQL Academy · Урок

Основы столбцов-массивов

Создавайте и читайте значения массивов

«Основы столбцов-массивов» — бесплатный урок SQL Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения SQL Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс SQL Academy содержит 4 уроков всего.

Что такое столбец-массив

PostgreSQL поддерживает столбцы-массивы, в которых одна ячейка может содержать несколько значений одного типа. Вместо текста со значениями, разделенными запятыми, Вы получаете полноценный типизированный список, который можно запрашивать, индексировать и изменять с помощью встроенных функций.

Массивы могут содержать целые числа, текст, логические значения, даты и любые другие типы PostgreSQL. Синтаксис выглядит как integer[] или text[].

Объявление столбца-массива

Добавьте [] после имени любого типа при написании оператора CREATE TABLE, чтобы объявить столбец-массив. В таблице ниже для каждой статьи хранится список тегов.

CREATE TABLE articles (
  id      serial PRIMARY KEY,
  title   text NOT NULL,
  tags    text[]
);

Вставка значений массива

Для вставки данных массива используйте литералы в фигурных скобках, заключенные в одинарные кавычки. Каждый элемент внутри скобок отделяется запятой: '{"sql","database"}'.

Также можно использовать синтаксис конструктора ARRAY[...], показанный во второй строке.

INSERT INTO articles (title, tags) VALUES
  ('Intro to SQL',    '{"sql","beginner"}'),
  ('Advanced Joins',  ARRAY['sql','joins','performance']),
  ('NULL Handling',   '{"sql","nulls","tips"}');

Чтение всего массива

Выбор столбца-массива работает так же, как выбор любого другого столбца. PostgreSQL возвращает весь массив как одно значение в наборе результатов и отображает его в формате с фигурными скобками.

SELECT id, title, tags
FROM   articles;

Доступ к отдельному элементу

Индексация массивов в PostgreSQL начинается с единицы (первый элемент имеет индекс 1, а не 0). Чтобы обратиться к определенному элементу, используйте квадратные скобки после имени столбца.

SELECT title,
       tags[1] AS first_tag,
       tags[2] AS second_tag
FROM   articles;

Срез массива

Диапазон элементов можно извлечь с помощью синтаксиса среза lower:upper внутри квадратных скобок. Обе границы включаются в диапазон.

SELECT title,
       tags[1:2] AS first_two_tags
FROM   articles;

Фильтрация с помощью ANY

Чтобы найти строки, в которых массив содержит определенное значение, используйте выражение = ANY(column). Оно возвращает строки, где хотя бы один элемент массива совпадает с указанным значением.

SELECT id, title, tags
FROM   articles
WHERE  'joins' = ANY(tags);

Фильтрация с помощью оператора @>

Оператор содержит @> проверяет, содержит ли левый массив все элементы правого массива. Это полезно, когда нужны строки с набором обязательных тегов.

SELECT id, title, tags
FROM   articles
WHERE  tags @> ARRAY['sql','tips'];

Получение длины массива

Функция array_length(arr, dimension) возвращает количество элементов вдоль указанного измерения. Для одномерного массива в качестве второго аргумента используйте 1.

SELECT title,
       array_length(tags, 1) AS tag_count
FROM   articles
ORDER  BY tag_count DESC;

Добавление элементов

Используйте функцию array_append(array, element) или оператор конкатенации ||, чтобы добавить новый элемент в конец существующего столбца-массива.

UPDATE articles
SET    tags = array_append(tags, 'featured')
WHERE  title = 'Intro to SQL';

SELECT title, tags FROM articles WHERE title = 'Intro to SQL';

Разворачивание массива в строки

Функция unnest(array) разворачивает массив в набор строк — по одной строке на элемент. Это удобно для агрегирования, соединений и любых операций, которым нужен каждый элемент отдельно.

SELECT title, unnest(tags) AS tag
FROM   articles
ORDER  BY title, tag;

Быстрая проверка

Проверьте понимание столбцов-массивов PostgreSQL.

Итоги: основы столбцов-массивов

В этом уроке Вы узнали, как работают столбцы-массивы PostgreSQL:

  • Объявляйте массивы с помощью синтаксиса type[] в операторе CREATE TABLE
  • Вставляйте значения с помощью литералов в фигурных скобках или ARRAY[...]
  • Обращайтесь к элементам по индексу, начинающемуся с 1, и используйте срезы lower:upper
  • Фильтруйте с помощью = ANY(col) для одного значения или @> для подмножества
  • Измеряйте длину с помощью array_length(col, 1)
  • Добавляйте элементы с помощью array_append() или ||
  • Разворачивайте массивы в строки с помощью unnest()

Массивы — мощная возможность PostgreSQL, которая может упростить схемы, когда список значений относится к одной сущности.

Часто задаваемые вопросы

Урок «Основы столбцов-массивов» бесплатный?

Да — полный текст урока «Основы столбцов-массивов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс SQL Academy, подпишись на CoddyKit PRO. Курс SQL Academy содержит 4 уроков всего.

Чему я научусь в уроке «Основы столбцов-массивов»?

Создавайте и читайте значения массивов Ты практикуешь SQL Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать SQL Academy?

Предыдущий опыт не требуется. SQL Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Основы столбцов-массивов»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке SQL Academy?

Да. Каждый урок SQL Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Основы столбцов-массивов
  2. Поиск внутри массивов
  3. UNNEST и агрегация
  4. Массивы и нормализованные таблицы
← Назад к SQL Academy