Что такое массив 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)
- На панели навигации слева нажмите rbases.
- Нажмите кнопку "Демо".
Шаг 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) Чтобы увидеть первые контакты сотрудников:
- Введите в редакторе запросов следующий запрос:
SELECT name, contact[1]FROM Employees;
- Щелкните кнопку «Выполнить».
Он должен вернуть следующее:
Шаг 4) Чтобы объединить оператор SELECT с предложением WHERE:
- Введите следующую команду в редакторе запросов:
SELECTnameFROMEmployeesWHEREcontact [ 2 ] = '(408)-567-78234';
- Щелкните кнопку «Выполнить».
Он должен вернуть следующее:
Изменение массива 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 ().
Загрузите базу данных, используемую в этом руководстве