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

Съдържание:

Anonim

Какво представлява масивът PostgreSQL?

В PostgreSQL можем да определим колона като масив от валидни типове данни. Типът данни може да бъде вграден, дефиниран от потребителя или изброен тип. Освен това масивите играят важна роля в PostgreSQL.

Всеки съответстващ тип данни на PostgreSQL се предлага с подходящ тип масив. Например целочисленият тип данни има тип масив integer [], типът символни данни има тип масив [] и т.н.

В този урок на 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

Можете да актуализирате всички или един елемент от масив.

Ето съдържанието на таблицата със служители:

Нека актуализираме втория телефонен номер на служителя Джеймс Буш, чийто идентификатор е 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. Щракнете върху бутона Demo

Стъпка 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 ().

Изтеглете базата данни, използвана в този урок