PostgreSQL Matrice: Funcții, Tip, Exemplu
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 tip enumerat. În afară de aceasta, 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 matrice integer[], tipul de date caracter are tipul matrice caracter[] etc.
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ă contact, au fost inserate ca o matrice. Acest lucru a fost realizat prin utilizarea constructorului ARRAY.
În acest exemplu, le-am inclus între paranteze drepte []. 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 tablou, folosim instrucțiunea SELECT.
Pentru a vedea conținutul tabelului nostru de angajați, rulăm următoarea comandă:
SELECT * FROM Employees;
Aceasta returnează următoarele:
Elementele coloanei matrice, adică contactul, au fost incluse între acolade {}.
Pentru a accesa elementele matricei în sine, adăugăm un indice între paranteze drepte []. Primul element dintr-o matrice se află în poziția 1.
De exemplu, trebuie să obținem numele angajaților și doar primul lor contact pentru acei angajați cu mai multe persoane de contact. Putem accesa aceasta 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 matrice.
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 întregul element sau un singur element al unei matrice.
Iată conținutul tabelului Angajații:
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 din matricea de contacte, putem folosi funcția ANY() după 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 matricei.
În exemplul tabelului de angajați, există câțiva angajați cu două contacte în matricea de contacte. Le putem împărți în rânduri separate.
PostgreSQL furnizează funcția unnest() care poate fi utilizată pentru aceasta.
De exemplu:
SELECT name, unnest(contact) FROM Employees;
Aceasta va returna următoarele:
Angajații Alice John și James Bush, au două contacte. Ne 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 rbase.
- Faceți clic pe butonul Demo
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
Pas 1) 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"}' );
Pasul 2) Faceți clic pe butonul Executare:
Interogarea datelor matricei
Pas 1) Pentru a vedea conținutul tabelului de 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:
- Tastați următoarea interogare în editorul de interogări:
SELECT name, contact[1] FROM Employees;
- Faceți clic pe butonul Execute.
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:
SELECT name FROM Employees WHERE contact [ 2 ] = '(408)-567-78234';
- Faceți clic pe butonul Execute.
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)
1. Tastați următoarea comandă în editorul de interogări pentru a verifica dacă modificarea a avut succes:
SELECT * FROM Employees;
2. Faceți clic pe butonul Execute.
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:
Rezumat
- PostgreSQL ne permite să definim o coloană de tabel ca tip de matrice.
- Matricea trebuie să fie validă tip de date precum numere întregi, caractere sau tipuri definite de utilizator.
- Pentru a insera valori într-o coloană matrice, folosim constructorul ARRAY.
- Dacă există mai mult de un element în același rând al unei coloane de matrice, primul element se află în poziția 1.
- Fiecare valoare poate fi accesată prin trecerea unui indice între paranteze drepte [].
- Elementele matricei pot fi preluate folosind instrucțiunea SELECT.
- Valorile coloanei matrice pot fi incluse între paranteze drepte [] sau acolade {}.
- Putem căuta valorile coloanei matrice folosind funcția ANY().
Descărcați baza de date folosită în acest tutorial