PostgreSQL Масив: функції, тип, приклад
⚡ Розумний підсумок
PostgreSQL Array дозволяє визначити стовпець таблиці як масив будь-якого допустимого типу даних. Він охоплює створення стовпців масиву, вставку значень за допомогою конструктора ARRAY або фігурних дужок, запити та зміну елементів, а також пошук за допомогою ANY().
Що таке PostgreSQL Масив?
In PostgreSQL, ми можемо визначити стовпець як масив допустимих типів даних. Тип даних може бути вбудованим, визначеним користувачем або перелічуваним типом. Окрім цього, масиви відіграють важливу роль у PostgreSQL.
Кожен відповідний PostgreSQL Тип даних має відповідний тип масиву. Наприклад, цілочисельний тип даних має тип масиву integer[], символьний тип даних має тип масиву character[] тощо.
створення 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. Щоб переглянути вміст нашої таблиці 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:
Оновимо другий номер телефону співробітника Джеймса Буша, чий id 3:
Запустіть таку команду:
UPDATE Employees SET contact [ 2 ] = '(408)-589-89347' WHERE id = 3;
Команда має бути виконана успішно:
Давайте зробимо запит до таблиці, щоб перевірити, чи була зміна успішною:
Зміна пройшла успішно.
Пошук в a PostgreSQL масив
На даний момент наша таблиця співробітників виглядає так:
Припустимо, нам потрібно знати, кому належить контакт (408)-783-5731, незалежно від позиції в масиві контактів. Ми можемо використати функцію ANY(), як показано нижче:
SELECT name, contact FROM Employees WHERE '(408)-783-5731' = ANY (contact);
Це поверне наступне:
Розширення масивів
Ми можемо розділити значення масиву на рядки. Цей процес відомий як розширення масиву. У прикладі таблиці Employees є кілька співробітників з двома контактами в масиві контактів. Ми можемо розділити їх на окремі рядки. PostgreSQL надає функцію unnest(), яку можна використовувати для цього. Наприклад:
SELECT name, unnest(contact) FROM Employees;
Це поверне наступне:
Співробітники Аліса Джон та Джеймс Буш мають два контакти. Ми можемо розділити їх на окремі рядки.
Використання pgAdmin
створення PostgreSQL Масиви
Щоб зробити те саме через pgAdmin, виконайте наступне:
Крок 1) Увійдіть у свій обліковий запис pgAdmin.
Крок 2)
- На панелі навігації ліворуч натисніть Бази даних.
- Натисніть кнопку «Демо».
Крок 3) Введіть запит у редакторі запитів, щоб створити таблицю Employees:
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) Щоб використовувати фігурні дужки в запиті, введіть наступний запит у редакторі запитів:
INSERT INTO Employees VALUES ( 2, 'Kate Joel', '{"(408)-783-5731"}' ), ( 3, 'James Bush', '{"(408)-745-8965","(408)-567-78234"}' );
Потім натисніть кнопку «Виконати»:
Запит даних масиву
Крок 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) Введіть таку команду в редакторі запитів, щоб перевірити, чи зміни було внесено успішно, а потім натисніть кнопку «Виконати»:
SELECT * FROM Employees;
Він повинен повернути наступне:
Пошук в a PostgreSQL масив
Крок 1) Введіть наступний запит у редакторі запитів:
SELECT name, contact FROM Employees WHERE '(408)-783-5731' = ANY (contact);
Крок 2) Натисніть кнопку Виконати.
Він повинен повернути наступне:
Розширення масивів
Крок 1) Введіть наступний запит у редакторі запитів:
SELECT name, unnest(contact) FROM Employees;
Крок 2) Натисніть кнопку Виконати.
Він повинен повернути наступне:
Завантажте базу даних, яка використовується в цьому посібнику































