PostgreSQL Масив: функції, тип, приклад

⚡ Розумний підсумок

PostgreSQL Array дозволяє визначити стовпець таблиці як масив будь-якого допустимого типу даних. Він охоплює створення стовпців масиву, вставку значень за допомогою конструктора ARRAY або фігурних дужок, запити та зміну елементів, а також пошук за допомогою ANY().

  • 📦 Визначення: будь-який PostgreSQL тип даних має відповідний тип масиву, наприклад, integer[].
  • 🧱 Створити та вставити: Використовуйте стовпці TEXT[] та конструктор ARRAY або фігурні дужки.
  • 🔎 Запит: Доступ до елементів з нижніми індексами; перший елемент знаходиться на позиції 1.
  • ✏️ Змінити та знайти: Оновлення окремих елементів та пошук значень за допомогою ANY().
  • ➗ Розгорнути: Функція unnest() розділяє значення масиву на окремі рядки.

PostgreSQL масив

Що таке PostgreSQL Масив?

In PostgreSQL, ми можемо визначити стовпець як масив допустимих типів даних. Тип даних може бути вбудованим, визначеним користувачем або перелічуваним типом. Окрім цього, масиви відіграють важливу роль у PostgreSQL.

Кожен відповідний PostgreSQL Тип даних має відповідний тип масиву. Наприклад, цілочисельний тип даних має тип масиву integer[], символьний тип даних має тип масиву character[] тощо.

створення PostgreSQL Масиви

У наступному прикладі ми створимо таблицю під назвою Employees зі стовпцем контактів, визначеним як текстовий масив:

CREATE TABLE Employees (
   id int PRIMARY KEY,
   name VARCHAR (100),
   contact TEXT []
);

Команда має бути виконана успішно.

створення PostgreSQL Масиви

Вставлення PostgreSQL Значення масиву

Давайте зараз вставити значення в таблицю вище:

INSERT INTO Employees
VALUES
   (
      1,
      'Alice John',
      ARRAY [ '(408)-743-9045',
      '(408)-567-7834' ]
   );

Вставка має бути виконана успішно.

Вставлення PostgreSQL Значення масиву

Значення третього стовпця, тобто контакту, було вставлено як масив. Цього досягнуто за допомогою конструктора ARRAY. У цьому прикладі ми взяли їх у квадратні дужки []. У нас є два контакти для співробітника Аліси Джона.

Ми все ще можемо використовувати фігурні дужки {}, як показано нижче:

INSERT INTO Employees
VALUES
   (
    2,
      'Kate Joel',
      '{"(408)-783-5731"}'
   ),
   (
      3,
      'James Bush',
      '{"(408)-745-8965","(408)-567-78234"}'
   );

Команда має бути виконана успішно.

Вставлення PostgreSQL Значення масиву

Наведені вище оператори вставлять два рядки в таблицю Employees. Під час використання фігурних дужок масив загортається в одинарні лапки ('), а елементи текстового масиву — у подвійні лапки (“).

Запит даних масиву

Щоб запитувати елементи масиву, ми використовуємо оператор SELECT. Щоб переглянути вміст нашої таблиці Employees, ми виконаємо таку команду:

SELECT * FROM Employees;

Це повертає наступне:

Запит даних масиву

Елементи стовпця масиву, тобто контакт, укладені у фігурні дужки {}. Щоб отримати доступ до самих елементів масиву, ми додаємо нижній індекс у квадратних дужках []. Перший елемент масиву знаходиться на позиції 1.

Наприклад, нам потрібно отримати імена співробітників та лише їхній перший контакт для тих співробітників, у яких більше одного контакту. Ми можемо отримати до цього доступ як contact[1]. Розглянемо це:

SELECT name, contact[1]
FROM Employees;

Це поверне наступне:

Запит даних масиву

Ми можемо використовувати оператор SELECT разом з реченням WHERE для фільтрації рядків на основі стовпця масиву. Наприклад, щоб побачити співробітника з (408)-567-78234 як другим контактом, ми можемо виконати таку команду:

SELECT
   name
FROM
   Employees
WHERE
   contact [ 2 ] = '(408)-567-78234';

Це поверне наступне:

Запит даних масиву

Модифікація PostgreSQL масив

Ви можете оновити весь масив або окремий його елемент. Ось вміст таблиці Employees:

Модифікація PostgreSQL масив

Оновимо другий номер телефону співробітника Джеймса Буша, чий id 3:

Модифікація PostgreSQL масив

Запустіть таку команду:

UPDATE Employees
SET contact [ 2 ] = '(408)-589-89347'
WHERE
   id = 3;

Команда має бути виконана успішно:

Модифікація PostgreSQL масив

Давайте зробимо запит до таблиці, щоб перевірити, чи була зміна успішною:

Модифікація PostgreSQL масив

Зміна пройшла успішно.

Пошук в a PostgreSQL масив

На даний момент наша таблиця співробітників виглядає так:

Пошук в a PostgreSQL масив

Припустимо, нам потрібно знати, кому належить контакт (408)-783-5731, незалежно від позиції в масиві контактів. Ми можемо використати функцію ANY(), як показано нижче:

SELECT
   name,
   contact
FROM
   Employees
WHERE
   '(408)-783-5731' = ANY (contact);

Це поверне наступне:

Пошук в a PostgreSQL масив

Розширення масивів

Ми можемо розділити значення масиву на рядки. Цей процес відомий як розширення масиву. У прикладі таблиці Employees є кілька співробітників з двома контактами в масиві контактів. Ми можемо розділити їх на окремі рядки. PostgreSQL надає функцію unnest(), яку можна використовувати для цього. Наприклад:

SELECT
   name,
   unnest(contact)
FROM
   Employees;

Це поверне наступне:

Розширення масивів

Співробітники Аліса Джон та Джеймс Буш мають два контакти. Ми можемо розділити їх на окремі рядки.

Використання pgAdmin

створення PostgreSQL Масиви

Щоб зробити те саме через pgAdmin, виконайте наступне:

Крок 1) Увійдіть у свій обліковий запис pgAdmin.

Крок 2)

  1. На панелі навігації ліворуч натисніть Бази даних.
  2. Натисніть кнопку «Демо».

створення PostgreSQL Масиви за допомогою pgAdmin

Крок 3) Введіть запит у редакторі запитів, щоб створити таблицю Employees:

CREATE TABLE Employees (
   id int PRIMARY KEY,
   name VARCHAR (100),
   contact TEXT []
);

Крок 4) Натисніть кнопку Виконати.

створення PostgreSQL Масиви за допомогою pgAdmin

Вставлення PostgreSQL Значення масиву

Крок 1) Введіть наступний запит у редакторі запитів:

INSERT INTO Employees
VALUES
   (
      1,
      'Alice John',
      ARRAY [ '(408)-743-9045',
      '(408)-567-7834' ]
   );

Крок 2) Натисніть кнопку Виконати:

Вставлення PostgreSQL Значення масиву

Крок 3) Щоб використовувати фігурні дужки в запиті, введіть наступний запит у редакторі запитів:

INSERT INTO Employees
VALUES
   (
    2,
      'Kate Joel',
      '{"(408)-783-5731"}'
   ),
   (
      3,
      'James Bush',
      '{"(408)-745-8965","(408)-567-78234"}'
   );

Потім натисніть кнопку «Виконати»:

Вставлення PostgreSQL Значення масиву

Запит даних масиву

Крок 1) Щоб переглянути вміст таблиці "Співробітники", введіть у редактор запитів такий запит:

SELECT * FROM Employees;

Крок 2) Натисніть кнопку Виконати:

Запит даних масиву за допомогою pgAdmin

Він повинен повернути наступне:

Запит даних масиву за допомогою pgAdmin

Крок 3) Щоб переглянути перші контакти співробітників, введіть наступний запит у редактор запитів і натисніть кнопку «Виконати»:

SELECT name, contact[1]
FROM Employees;

Запит даних масиву за допомогою pgAdmin

Він повинен повернути наступне:

Запит даних масиву за допомогою pgAdmin

Крок 4) Щоб поєднати оператор SELECT з реченням WHERE, введіть таку команду в редакторі запитів і натисніть кнопку «Виконати»:

SELECT
   name
FROM
   Employees
WHERE
   contact [ 2 ] = '(408)-567-78234';

Запит даних масиву за допомогою pgAdmin

Він повинен повернути наступне:

Запит даних масиву за допомогою pgAdmin

Модифікація PostgreSQL масив

Крок 1) Щоб оновити другий контакт користувача з ідентифікатором 3, виконайте таку команду:

UPDATE Employees
SET contact [ 2 ] = '(408)-589-89347'
WHERE
   id = 3;

Крок 2) Натисніть кнопку Виконати.

Модифікація PostgreSQL Масив за допомогою pgAdmin

Крок 3) Введіть таку команду в редакторі запитів, щоб перевірити, чи зміни було внесено успішно, а потім натисніть кнопку «Виконати»:

SELECT * FROM Employees;

Модифікація PostgreSQL Масив за допомогою pgAdmin

Він повинен повернути наступне:

Модифікація PostgreSQL Масив за допомогою pgAdmin

Пошук в a PostgreSQL масив

Крок 1) Введіть наступний запит у редакторі запитів:

SELECT
   name,
   contact
FROM
   Employees
WHERE
   '(408)-783-5731' = ANY (contact);

Крок 2) Натисніть кнопку Виконати.

Пошук в a PostgreSQL Масив за допомогою pgAdmin

Він повинен повернути наступне:

Пошук в a PostgreSQL Масив за допомогою pgAdmin

Розширення масивів

Крок 1) Введіть наступний запит у редакторі запитів:

SELECT
   name,
   unnest(contact)
FROM
   Employees;

Крок 2) Натисніть кнопку Виконати.

Розгортання масивів за допомогою pgAdmin

Він повинен повернути наступне:

Розгортання масивів за допомогою pgAdmin

Завантажте базу даних, яка використовується в цьому посібнику

Поширені запитання

Так. Помічники зі штучним інтелектом можуть писати оператори CREATE TABLE з масивами стовпців, команди INSERT за допомогою ARRAY або фігурних дужок, а також функції типу unnest() або ANY(). Перевірте згенерований SQL-код на вашій схемі, перш ніж запускати його.

Так. Інструменти штучного інтелекту можуть підказати, чи підходить вашим даним стовпець масиву чи нормалізована дочірня таблиця. Масиви підходять для невеликих, фіксованих списків, тоді як окремі таблиці підходять для великих або часто запитуваних зв'язків. Перевірте за допомогою шаблонів запитів.

Використайте функцію array_length(array, dimension). Наприклад, array_length(contact, 1) повертає кількість елементів у першому вимірі масиву контактів.

Так. Використовуйте функцію array_append(array, value) або оператор конкатенації ||. Наприклад, UPDATE Employees SET contact = array_append(contact, '(408)-000-0000') додає новий елемент.

Підсумуйте цей пост за допомогою: