Что такое массив PostgreSQL?
В PostgreSQL мы можем определить столбец как массив допустимых типов данных. Тип данных может быть встроенным, пользовательским или перечисляемым. Помимо этого, массивы играют важную роль в PostgreSQL.
Каждый соответствующий тип данных PostgreSQL поставляется с соответствующим типом массива. Например, целочисленный тип данных имеет тип массива integer [], символьный тип данных имеет тип массива character [] и т. Д.
В этом уроке по PostgreSQL вы узнаете:
- Что такое массив PostgreSQL?
- Создание массивов PostgreSQL
- Вставка значений массива PostgreSQL
- Запрос данных массива
- Модификация массива PostgreSQL
- Поиск в массиве PostgreSQL
- Расширяющиеся массивы
- Использование pgAdmin
Создание массивов PostgreSQL
В следующем примере мы создадим таблицу с именем Employees, столбец контакта которой определен как текстовый массив:
CREATE TABLE Employees ( id int PRIMARY KEY, name VARCHAR (100), contact TEXT [] );
Команда должна успешно работать.
Вставка значений массива PostgreSQL
Давайте теперь вставим значения в приведенную выше таблицу:
INSERT INTO Employees VALUES ( 1, 'Alice John', ARRAY [ '(408)-743-9045', '(408)-567-7834' ] );
Вставка должна пройти успешно.
Значения третьего столбца, то есть контакта, были вставлены в виде массива. Это было достигнуто с помощью конструктора ARRAY.
В этом примере мы заключили их в квадратные скобки []. У нас есть два контакта для сотрудницы Алисы Джон.
Мы все еще можем использовать фигурные скобки {}, как показано ниже:
INSERT INTO Employees VALUES ( 2, 'Kate Joel', '{"(408)-783-5731"}' ), ( 3, 'James Bush', '{"(408)-745-8965","(408)-567-78234"}' );
Команда должна выполняться успешно.
Вышеприведенные операторы вставят две строки в таблицу Employees. При использовании фигурных скобок массив заключен в одинарные кавычки (‘), а элементы текстового массива заключены в двойные кавычки («).
Запрос данных массива
Для запроса элементов массива мы используем оператор SELECT.
Чтобы увидеть содержимое таблицы «Сотрудники», мы запускаем следующую команду:
SELECT * FROM Employees;
Это возвращает следующее:
Элементы столбца массива, то есть contact, заключены в фигурные скобки {}.
Чтобы получить доступ к самим элементам массива, мы добавим нижний индекс в квадратных скобках []. Первый элемент в массиве находится в позиции 1.
Например, нам нужно получить имена сотрудников и только их первый контакт для тех сотрудников, у которых более одного контакта. Мы можем получить доступ к этому как контакт [1].
Давайте посмотрим на это:
SELECT name, contact[1] FROM Employees;
Это вернет следующее:
Мы можем использовать оператор SELECT вместе с предложением WHERE для фильтрации строк на основе столбца массива.
Например, чтобы увидеть сотрудника с (408) -567-78234 в качестве второго контакта, мы можем выполнить следующую команду:
SELECT name FROM Employees WHERE contact [ 2 ] = '(408)-567-78234';
Это вернет следующее:
Модификация массива PostgreSQL
Вы можете обновить все или один элемент массива.
Вот содержимое таблицы «Сотрудники»:
Давайте обновим второй номер телефона сотрудника Джеймса Буша с идентификатором 3:
Запустите следующую команду:
UPDATE Employees SET contact [ 2 ] = '(408)-589-89347' WHERE id = 3;
Команда должна успешно работать:
Давайте запросим таблицу, чтобы проверить, было ли изменение успешным:
Изменение было успешным.
Поиск в массиве PostgreSQL
В настоящее время наша таблица сотрудников выглядит следующим образом:
Предположим, нам нужно знать, кому принадлежит контакт (408) -783-5731 независимо от положения в массиве контактов, мы можем использовать функцию ANY (), как показано ниже:
SELECT name, contact FROM Employees WHERE '(408)-783-5731' = ANY (contact);
Это вернет следующее:
Расширяющиеся массивы
Мы можем разбить значения массива на строки. Этот процесс известен как расширение массива.
В примере таблицы «Сотрудники» есть несколько сотрудников с двумя контактами в массиве контактов. Мы можем разделить их на отдельные строки.
PostgreSQL предоставляет функцию unnest (), которую можно использовать для этого.
Например:
SELECT name, unnest(contact) FROM Employees;
Это вернет следующее:
Сотрудники Алиса Джон и Джеймс Буш имеют два контакта. Мы можем разбить на отдельные строки.
Использование 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 Employees VALUES ( 1, 'Alice John', ARRAY [ '(408)-743-9045', '(408)-567-7834' ] );
Шаг 2) Нажмите кнопку «Выполнить»:
Шаг 3)
Использовать фигурные скобки в запросе
Шаг 1) Введите следующий запрос в редакторе запросов:
INSERT INTO Employees VALUES ( 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:
- Введите следующую команду в редакторе запросов:
SELECT name FROM Employees WHERE contact [ 2 ] = '(408)-567-78234';
- Нажмите кнопку Выполнить.
Он должен вернуть следующее:
Модификация массива PostgreSQL
Шаг 1) Чтобы обновить второй контакт пользователя с идентификатором 3, выполните следующую команду:
UPDATE Employees SET contact [ 2 ] = '(408)-589-89347' WHERE id = 3;
Шаг 2) Нажмите кнопку «Выполнить».
Шаг 3)
1.Введите следующую команду в редакторе запросов, чтобы проверить, было ли изменение успешным:
SELECT * FROM Employees;
2.Нажмите кнопку «Выполнить».
Он должен вернуть следующее:
Поиск в массиве PostgreSQL
Шаг 1) Введите следующий запрос в редакторе запросов:
SELECT name, contact FROM Employees WHERE '(408)-783-5731' = ANY (contact);
Шаг 2) Нажмите кнопку «Выполнить».
Он должен вернуть следующее:
Расширяющиеся массивы
Шаг 1) Введите следующий запрос в редакторе запросов:
SELECT name, unnest(contact) FROM Employees;
Шаг 2) Нажмите кнопку «Выполнить».
Он должен вернуть следующее:
Резюме:
- PostgreSQL позволяет нам определять столбец таблицы как тип массива.
- Массив должен иметь допустимый тип данных, например целочисленный, символьный или пользовательский.
- Чтобы вставить значения в столбец массива, мы используем конструктор ARRAY.
- Если в одной строке столбца массива находится более одного элемента, первый элемент находится в позиции 1.
- Доступ к каждому значению можно получить, передав нижний индекс в квадратных скобках [].
- Элементы массива могут быть получены с помощью инструкции SELECT.
- Значения столбца массива могут быть заключены в квадратные скобки [] или фигурные скобки {}.
- Мы можем искать значения столбцов массива, используя функцию ANY ().
Загрузите базу данных, использованную в этом руководстве