PostgreSQL Matrice: Funcții, Tip, Exemplu
⚡ Rezumat inteligent
PostgreSQL Funcția Array vă permite să definiți o coloană de tabel ca o matrice de orice tip de date valid. Acoperă crearea coloanelor matrice, inserarea de valori cu constructorul ARRAY sau acolade, interogarea și modificarea elementelor și căutarea cu ANY().
Ce Este PostgreSQL Matrice?
In PostgreSQL, putem defini o coloană ca o matrice de tipuri de date valide. Tipul de date poate fi încorporat, definit de utilizator sau un tip enumerat. În afară de acestea, matricele joacă un rol important în PostgreSQL.
Fiecare corespunzătoare PostgreSQL Tipul de date vine cu un tip de matrice relevant. De exemplu, tipul de date întreg are tipul de matrice integer[], tipul de date caracter are tipul de matrice character[] și așa mai departe.
Crearea PostgreSQL Arrays
În exemplul următor, vom crea un tabel numit Angajați cu coloana de contact definită ca o matrice de text:
CREATE TABLE Employees ( id int PRIMARY KEY, name VARCHAR (100), contact TEXT [] );
Comanda ar trebui să ruleze cu succes.
Se introduce PostgreSQL Valori matrice
Lasă-ne acum insera valorile din tabelul de mai sus:
INSERT INTO Employees VALUES ( 1, 'Alice John', ARRAY [ '(408)-743-9045', '(408)-567-7834' ] );
Inserarea ar trebui să ruleze cu succes.
Valorile celei de-a treia coloane, adică contactul, au fost inserate ca o matrice. Acest lucru a fost realizat prin utilizarea constructorului ARRAY. În acest exemplu, le-am inclus între paranteze pătrate []. Avem două contacte pentru angajata Alice John.
Este încă posibil să folosim bretele {} după cum se arată mai jos:
INSERT INTO Employees VALUES ( 2, 'Kate Joel', '{"(408)-783-5731"}' ), ( 3, 'James Bush', '{"(408)-745-8965","(408)-567-78234"}' );
Comanda ar trebui să ruleze cu succes.
Declarațiile de mai sus vor insera două rânduri în tabelul Angajații. Când utilizați acolade, matricea este înfășurată între ghilimele simple ('), în timp ce elementele matricei de text sunt încadrate între ghilimele duble (").
Interogarea datelor matricei
Pentru a interoga elementele unui array, folosim instrucțiunea SELECT. Pentru a vedea conținutul tabelului nostru Employees, rulăm următoarea comandă:
SELECT * FROM Employees;
Aceasta returnează următoarele:
Elementele coloanei matrice, adică contact, au fost incluse între acolade {}. Pentru a accesa elementele matricei în sine, adăugăm un indice între paranteze pătrate []. Primul element dintr-o matrice se află la poziția 1.
De exemplu, trebuie să obținem numele angajaților și doar primul lor contact pentru acei angajați cu mai mult de un contact. Putem accesa acest lucru ca contact[1]. Să vedem asta:
SELECT name, contact[1] FROM Employees;
Aceasta va returna următoarele:
Putem folosi instrucțiunea SELECT împreună cu clauza WHERE pentru a filtra rândurile în funcție de coloana matricei. De exemplu, pentru a vedea angajatul cu (408)-567-78234 ca al doilea contact, putem rula următoarea comandă:
SELECT name FROM Employees WHERE contact [ 2 ] = '(408)-567-78234';
Aceasta va returna următoarele:
Modificatoare PostgreSQL Mulțime
Puteți actualiza toate elementele unui array sau un singur element al acestuia. Iată conținutul tabelului Employees:
Să actualizăm al doilea număr de telefon al angajatului James Bush, al cărui id este 3:
Rulați următoarea comandă:
UPDATE Employees SET contact [ 2 ] = '(408)-589-89347' WHERE id = 3;
Comanda ar trebui să ruleze cu succes:
Să interogăm tabelul pentru a verifica dacă modificarea a avut succes:
Schimbarea a avut succes.
Căutând într-un PostgreSQL Mulțime
În prezent, tabelul de angajați este următorul:
Să presupunem că trebuie să știm cine deține contactul (408)-783-5731, indiferent de poziția în cadrul matricei de contacte. Putem folosi funcția ANY() așa cum se arată mai jos:
SELECT name, contact FROM Employees WHERE '(408)-783-5731' = ANY (contact);
Aceasta va returna următoarele:
Extinderea Arrays
Putem împărți valorile unui tablou în rânduri. Acest proces este cunoscut sub numele de extindere a tabloului. În exemplul tabelului Angajați, există câțiva angajați cu două contacte în tabloul de contacte. Le putem împărți în rânduri separate. PostgreSQL oferă funcția unnest() care poate fi utilizată pentru acest lucru. De exemplu:
SELECT name, unnest(contact) FROM Employees;
Aceasta va returna următoarele:
Angajații Alice John și James Bush au două contacte. Le putem împărți în rânduri separate.
Folosind pgAdmin
Crearea PostgreSQL Arrays
Pentru a realiza același lucru prin pgAdmin, procedați astfel:
Pas 1) Conectați-vă la contul dvs. pgAdmin.
Pas 2)
- Din bara de navigare din stânga, faceți clic pe Baze de date.
- Faceți clic pe butonul Demonstrație.
Pas 3) Introduceți interogarea în editorul de interogări pentru a crea tabelul Angajați:
CREATE TABLE Employees ( id int PRIMARY KEY, name VARCHAR (100), contact TEXT [] );
Pas 4) Faceți clic pe butonul Execute.
Se introduce PostgreSQL Valori matrice
Pas 1) Tastați următoarea interogare în editorul de interogări:
INSERT INTO Employees VALUES ( 1, 'Alice John', ARRAY [ '(408)-743-9045', '(408)-567-7834' ] );
Pas 2) Faceți clic pe butonul Executare:
Pas 3) Pentru a utiliza acolade în interogare, tastați următoarea interogare în editorul de interogări:
INSERT INTO Employees VALUES ( 2, 'Kate Joel', '{"(408)-783-5731"}' ), ( 3, 'James Bush', '{"(408)-745-8965","(408)-567-78234"}' );
Apoi faceți clic pe butonul Executare:
Interogarea datelor matricei
Pas 1) Pentru a vedea conținutul tabelului Angajați, tastați următoarea interogare în editorul de interogări:
SELECT * FROM Employees;
Pas 2) Faceți clic pe butonul Executare:
Ar trebui să returneze următoarele:
Pas 3) Pentru a vedea primele contacte ale angajaților, introduceți următoarea interogare în editorul de interogări și faceți clic pe butonul Executare:
SELECT name, contact[1] FROM Employees;
Ar trebui să returneze următoarele:
Pas 4) Pentru a combina instrucțiunea SELECT cu clauza WHERE, tastați următoarea comandă în editorul de interogări și faceți clic pe butonul Executare:
SELECT name FROM Employees WHERE contact [ 2 ] = '(408)-567-78234';
Ar trebui să returneze următoarele:
Modificatoare PostgreSQL Mulțime
Pas 1) Pentru a actualiza al doilea contact al utilizatorului cu ID-ul 3, executați următoarea comandă:
UPDATE Employees SET contact [ 2 ] = '(408)-589-89347' WHERE id = 3;
Pas 2) Faceți clic pe butonul Execute.
Pas 3) Tastați următoarea comandă în editorul de interogări pentru a verifica dacă modificarea a avut succes, apoi faceți clic pe butonul Executare:
SELECT * FROM Employees;
Ar trebui să returneze următoarele:
Căutând într-un PostgreSQL Mulțime
Pas 1) Tastați următoarea interogare în editorul de interogări:
SELECT name, contact FROM Employees WHERE '(408)-783-5731' = ANY (contact);
Pas 2) Faceți clic pe butonul Execute.
Ar trebui să returneze următoarele:
Extinderea Arrays
Pas 1) Tastați următoarea interogare în editorul de interogări:
SELECT name, unnest(contact) FROM Employees;
Pas 2) Faceți clic pe butonul Execute.
Ar trebui să returneze următoarele:
Descărcați baza de date folosită în acest tutorial































