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.

Наприклад, нам потрібно отримати імена співробітників і лише їх перший контакт для тих співробітників, які мають більше одного контакту. Ми можемо отримати до нього доступ як контакт [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. На панелі навігації ліворуч натисніть rbases.
  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)

Для використання фігурних дужок у запиті

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

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

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

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

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

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

SELECT * FROM Employees;

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

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

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

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

Крок 3) Щоб побачити перші контакти співробітників:

  1. Введіть наступний запит у редакторі запитів:
    SELECT name, contact[1]
    FROM Employees;
    
  2. Натисніть кнопку Виконати.

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

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

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

Крок 4) Щоб поєднати оператор SELECT із реченням WHERE:

  1. Введіть таку команду в редакторі запитів:
    SELECT
       name
    FROM
       Employees
    WHERE
       contact [ 2 ] = '(408)-567-78234';
    
  2. Натисніть кнопку Виконати.

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

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

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

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

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

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

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

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

Крок 3)

1. Введіть таку команду в редакторі запитів, щоб перевірити, чи зміна була успішною:

SELECT * FROM Employees;

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

Модифікація 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

Підсумки

  • PostgreSQL дозволяє нам визначити стовпець таблиці як тип масиву.
  • Масив має бути дійсним тип даних такі як цілі, символьні або визначені користувачем типи.
  • Щоб вставити значення в стовпець масиву, ми використовуємо конструктор ARRAY.
  • Якщо в одному рядку стовпця масиву є більше одного елемента, перший елемент знаходиться в позиції 1.
  • До кожного значення можна отримати доступ, передавши нижній індекс у квадратних дужках [].
  • Елементи масиву можна отримати за допомогою оператора SELECT.
  • Значення стовпця масиву можна взяти в квадратні дужки [] або фігурні {}.
  • Ми можемо шукати значення стовпця масиву за допомогою функції ANY().

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