Ce este PostgreSQL Array?
În PostgreSQL, putem defini o coloană ca o serie de tipuri de date valide. Tipul de date poate fi încorporat, definit de utilizator sau tip enumerat. În afară de aceasta, matricile joacă un rol important în PostgreSQL.
Fiecare tip de date PostgreSQL corespunzător vine cu un tip de matrice relevant. De exemplu, tipul de date întregi are tipul întreg [] matrice, tipul de date caracter are tipul matrice caracter [] etc.
În acest tutorial PostgreSQL, veți învăța:
- Ce este PostgreSQL Array?
- Crearea matricilor PostgreSQL
- Inserarea valorilor matricei PostgreSQL
- Interogarea datelor de matrice
- Modificarea matricei PostgreSQL
- Căutarea într-o matrice PostgreSQL
- Extinderea matricilor
- Folosind pgAdmin
Crearea matricilor PostgreSQL
Î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.
Inserarea valorilor matricei PostgreSQL
Să introducem acum valori în tabelul de mai sus:
INSERT INTO EmployeesVALUES(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 în paranteze pătrate []. Avem două contacte pentru angajata Alice John.
Este încă posibil pentru noi să folosim acolade {} așa cum se arată mai jos:
INSERT INTO EmployeesVALUES(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ților. Când se utilizează acolade, matricea este înfășurată în ghilimele simple (') în timp ce elementele matricei de text sunt înfășurate în ghilimele duble (").
Interogarea datelor de matrice
Pentru a interoga elementele unui tablou, folosim instrucțiunea SELECT.
Pentru a vedea conținutul tabelului Angajați, executăm următoarea comandă:
SELECT * FROM Employees;
Aceasta returnează următoarele:
Elementele coloanei matrice, adică contactul, au fost închise în paranteze {}.
Pentru a accesa ele însele elementele matricei, adăugăm un indice între paranteze pătrate []. Primul element dintr-o matrice este î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 contacte. Putem accesa acest lucru ca persoană de contact [1].
Să vedem acest lucru:
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 pe baza coloanei matrice.
De exemplu, pentru a vedea angajatul cu (408) -567-78234 ca al doilea contact, putem rula următoarea comandă:
SELECTnameFROMEmployeesWHEREcontact [ 2 ] = '(408)-567-78234';
Aceasta va returna următoarele:
Modificarea matricei PostgreSQL
Puteți actualiza tot sau un singur element dintr-o matrice.
Iată conținutul tabelului Angajați:
Să actualizăm al doilea număr de telefon al angajatului James Bush, al cărui cod este 3:
Rulați următoarea comandă:
UPDATE EmployeesSET contact [ 2 ] = '(408)-589-89347'WHEREid = 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ăutarea într-o matrice PostgreSQL
În prezent, tabelul angajaților noștri este după cum urmează:
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 () așa cum se arată mai jos:
SELECTname,contactFROMEmployeesWHERE'(408)-783-5731' = ANY (contact);
Aceasta va returna următoarele:
Extinderea matricilor
Putem împărți valorile unui tablou în rânduri. Acest proces este cunoscut sub numele de extindere matrice.
În exemplul tabelului Angajați, există unii angajați cu două contacte în matricea de contacte. Le putem împărți în rânduri separate.
PostgreSQL oferă funcția unnest () care poate fi utilizată pentru aceasta.
De exemplu:
SELECTname,unnest(contact)FROMEmployees;
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 matricilor PostgreSQL
Pentru a realiza același lucru prin pgAdmin, procedați astfel:
Pasul 1) Conectați-vă la contul dvs. pgAdmin.
Pasul 2)
- Din bara de navigare din stânga - Faceți clic pe rbases.
- Faceți clic pe butonul Demo
Pasul 3) Tastaț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 []);
Pasul 4) Faceți clic pe butonul Executare.
Inserarea valorilor matricei PostgreSQL
Pasul 1) Tastați următoarea interogare în editorul de interogări:
INSERT INTO EmployeesVALUES(1,'Alice John',ARRAY [ '(408)-743-9045','(408)-567-7834' ]);
Pasul 2) Faceți clic pe butonul Executare:
Pasul 3)
Pentru a utiliza aparate dentare în interogare
Pasul 1) Tastați următoarea interogare în editorul de interogări:
INSERT INTO EmployeesVALUES(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 de matrice
Pasul 1) Pentru a vedea conținutul tabelului Angajați, tastați următoarea interogare în editorul de interogări:
SELECT * FROM Employees;
Pasul 2) Faceți clic pe butonul Executare:
Ar trebui să returneze următoarele:
Pasul 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 Executare.
Ar trebui să returneze următoarele:
Pasul 4) Pentru a combina instrucțiunea SELECT cu clauza WHERE:
- Tastați următoarea comandă în editorul de interogări:
SELECTnameFROMEmployeesWHEREcontact [ 2 ] = '(408)-567-78234';
- Faceți clic pe butonul Executare.
Ar trebui să returneze următoarele:
Modificarea matricei PostgreSQL
Pasul 1) Pentru a actualiza al doilea contact al utilizatorului cu ID-ul 3, rulați următoarea comandă:
UPDATE EmployeesSET contact [ 2 ] = '(408)-589-89347'WHEREid = 3;
Pasul 2) Faceți clic pe butonul Executare.
Pasul 3)
1. Tastați următoarea comandă din editorul de interogări pentru a verifica dacă modificarea a avut succes:
SELECT * FROM Employees;
2. Faceți clic pe butonul Executare.
Ar trebui să returneze următoarele:
Căutarea într-o matrice PostgreSQL
Pasul 1) Tastați următoarea interogare în editorul de interogări:
SELECTname,contactFROMEmployeesWHERE'(408)-783-5731' = ANY (contact);
Pasul 2) Faceți clic pe butonul Executare.
Ar trebui să returneze următoarele:
Extinderea matricilor
Pasul 1) Tastați următoarea interogare în editorul de interogări:
SELECTname,unnest(contact)FROMEmployees;
Pasul 2) Faceți clic pe butonul Executare.
Ar trebui să returneze următoarele:
Rezumat:
- PostgreSQL ne permite să definim o coloană de tabel ca un tip de matrice.
- Matricea trebuie să aibă un tip de date valid, cum ar fi numărul întreg, caracter sau tipuri definite de utilizator.
- Pentru a insera valori într-o coloană matrice, folosim constructorul ARRAY.
- Dacă există mai multe elemente în același rând al unei coloane matrice, primul element este în poziția 1.
- Fiecare valoare poate fi accesată prin trecerea unui indiciu între paranteze pătrate [].
- Elementele matricei pot fi recuperate folosind instrucțiunea SELECT.
- Valorile coloanei matricei pot fi încadrate între paranteze pătrate [] sau acolade {}.
- Putem căuta valorile coloanei matrice utilizând funcția ANY ().
Descărcați baza de date utilizată în acest tutorial