Массив PostgreSQL: функции, тип, пример

Содержание:

Anonim

Что такое массив PostgreSQL?

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

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

В этом руководстве по PostgreSQL вы узнаете:

  • Что такое массив PostgreSQL?
  • Создание массивов PostgreSQL
  • Вставка значений массива PostgreSQL
  • Запрос данных массива
  • Изменение массива PostgreSQL
  • Поиск в массиве PostgreSQL
  • Расширяющиеся массивы
  • Использование pgAdmin

Создание массивов PostgreSQL

В следующем примере мы создадим таблицу с именем «Сотрудники» со столбцом контактов, определенным как текстовый массив:

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

Команда должна работать успешно.

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

Давайте теперь вставим значения в приведенную выше таблицу:

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

Вставка должна успешно запуститься.

Значения третьего столбца, то есть контакта, были вставлены в виде массива. Это было достигнуто с помощью конструктора ARRAY.

В этом примере мы заключили их в квадратные скобки []. У нас есть два контакта для сотрудника Элис Джон.

Мы по-прежнему можем использовать фигурные скобки {}, как показано ниже:

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

Команда должна успешно выполняться.

Приведенные выше операторы вставят две строки в таблицу «Сотрудники». При использовании фигурных скобок массив помещается в одинарные кавычки ('), а элементы текстового массива заключаются в двойные кавычки (").

Запрос данных массива

Чтобы запросить элементы массива, мы используем оператор SELECT.

Чтобы увидеть содержимое нашей таблицы «Сотрудники», мы запускаем следующую команду:

SELECT * FROM Employees;

Это возвращает следующее:

Элементы столбца массива, то есть контакт, были заключены в фигурные скобки {}.

Для доступа к самим элементам массива мы добавляем нижний индекс в квадратных скобках []. Первый элемент массива находится в позиции 1.

Например, нам нужно получить имена сотрудников и только их первое контактное лицо для тех сотрудников, у которых более одного контакта. Мы можем получить к нему доступ как контакт [1].

Посмотрим на это:

SELECT name, contact[1]FROM Employees;

Это вернет следующее:

Мы можем использовать оператор SELECT вместе с предложением WHERE для фильтрации строк на основе столбца массива.

Например, чтобы увидеть сотрудника с (408) -567-78234 в качестве второго контакта, мы можем выполнить следующую команду:

SELECTnameFROMEmployeesWHEREcontact [ 2 ] = '(408)-567-78234';

Это вернет следующее:

Изменение массива PostgreSQL

Вы можете обновить весь или отдельный элемент массива.

Вот содержимое таблицы Сотрудники:

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

Выполните следующую команду:

UPDATE EmployeesSET contact [ 2 ] = '(408)-589-89347'WHEREid = 3;

Команда должна успешно запуститься:

Давайте запросим таблицу, чтобы проверить, было ли изменение успешным:

Изменение прошло успешно.

Поиск в массиве PostgreSQL

В настоящее время наша таблица сотрудников выглядит следующим образом:

Предположим, нам нужно знать, кому принадлежит контакт (408) -783-5731, независимо от позиции в массиве контактов, мы можем использовать функцию ANY (), как показано ниже:

SELECTname,contactFROMEmployeesWHERE'(408)-783-5731' = ANY (contact);

Это вернет следующее:

Расширяющиеся массивы

Мы можем разбить значения массива на строки. Этот процесс известен как расширение массива.

В примере таблицы «Сотрудники» в массиве контактов есть несколько сотрудников с двумя контактами. Мы можем разделить их на отдельные строки.

PostgreSQL предоставляет функцию unnest (), которую можно использовать для этого.

Например:

SELECTname,unnest(contact)FROMEmployees;

Это вернет следующее:

У сотрудников Элис Джон и Джеймс Буш два контакта. Мы можем разделить на отдельные строки.

Использование pgAdmin

Создание массивов PostgreSQL

Чтобы сделать то же самое с помощью pgAdmin, сделайте следующее:

Шаг 1) Войдите в свою учетную запись pgAdmin.

Шаг 2)

  1. На панели навигации слева нажмите rbases.
  2. Нажмите кнопку "Демо".

Шаг 3) Введите запрос в редакторе запросов, чтобы создать таблицу «Сотрудники»:

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

Шаг 4) Нажмите кнопку «Выполнить».

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

Шаг 1) Введите в редакторе запросов следующий запрос:

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

Шаг 2) Нажмите кнопку «Выполнить»:

Шаг 3)

Чтобы использовать фигурные скобки в запросе

Шаг 1) Введите в редакторе запросов следующий запрос:

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

Шаг 2) Нажмите кнопку «Выполнить»:

Запрос данных массива

Шаг 1) Чтобы просмотреть содержимое таблицы «Сотрудники», введите в редакторе запросов следующий запрос:

SELECT * FROM Employees;

Шаг 2) Нажмите кнопку «Выполнить»:

Он должен вернуть следующее:

Шаг 3) Чтобы увидеть первые контакты сотрудников:

  1. Введите в редакторе запросов следующий запрос:
    SELECT name, contact[1]FROM Employees;
  2. Щелкните кнопку «Выполнить».

Он должен вернуть следующее:

Шаг 4) Чтобы объединить оператор SELECT с предложением WHERE:

  1. Введите следующую команду в редакторе запросов:
    SELECTnameFROMEmployeesWHEREcontact [ 2 ] = '(408)-567-78234';
  2. Щелкните кнопку «Выполнить».

Он должен вернуть следующее:

Изменение массива PostgreSQL

Шаг 1) Чтобы обновить второй контакт пользователя с идентификатором 3, выполните следующую команду:

UPDATE EmployeesSET contact [ 2 ] = '(408)-589-89347'WHEREid = 3;

Шаг 2) Нажмите кнопку «Выполнить».

Шаг 3)

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

SELECT * FROM Employees;

2. Нажмите кнопку «Выполнить».

Он должен вернуть следующее:

Поиск в массиве PostgreSQL

Шаг 1) Введите в редакторе запросов следующий запрос:

SELECTname,contactFROMEmployeesWHERE'(408)-783-5731' = ANY (contact);

Шаг 2) Нажмите кнопку «Выполнить».

Он должен вернуть следующее:

Расширяющиеся массивы

Шаг 1) Введите в редакторе запросов следующий запрос:

SELECTname,unnest(contact)FROMEmployees;

Шаг 2) Нажмите кнопку «Выполнить».

Он должен вернуть следующее:

Резюме:

  • PostgreSQL позволяет нам определять столбец таблицы как тип массива.
  • Массив должен иметь допустимый тип данных, например целочисленный, символьный или определяемый пользователем.
  • Чтобы вставить значения в столбец массива, мы используем конструктор ARRAY.
  • Если в одной строке столбца массива находится более одного элемента, первый элемент находится в позиции 1.
  • К каждому значению можно получить доступ, передав нижний индекс в квадратных скобках [].
  • Элементы массива можно получить с помощью оператора SELECT.
  • Значения столбца массива могут быть заключены в квадратные скобки [] или фигурные скобки {}.
  • Мы можем искать значения столбцов массива с помощью функции ANY ().

Загрузите базу данных, используемую в этом руководстве