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().

  • 📦 Definiție: Orice PostgreSQL tipul de date are un tip de matrice corespunzător, cum ar fi integer[].
  • 🧱 Creare și inserare: Folosește coloane TEXT[] și constructorul ARRAY sau acolade.
  • 🔎 Solicitare: Elemente de acces cu indici; primul element se află la poziția 1.
  • ✏️ Modificare și căutare: Actualizează elementele individuale și valorile de căutare cu ANY().
  • Extinde: Funcția unnest() împarte valorile unui tablou în rânduri separate.

PostgreSQL Mulțime

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.

Crearea PostgreSQL Arrays

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.

Se introduce PostgreSQL Valori matrice

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.

Se introduce PostgreSQL Valori matrice

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:

Interogarea datelor matricei

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:

Interogarea datelor matricei

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:

Interogarea datelor matricei

Modificatoare PostgreSQL Mulțime

Puteți actualiza toate elementele unui array sau un singur element al acestuia. Iată conținutul tabelului Employees:

Modificatoare PostgreSQL Mulțime

Să actualizăm al doilea număr de telefon al angajatului James Bush, al cărui id este 3:

Modificatoare PostgreSQL Mulțime

Rulați următoarea comandă:

UPDATE Employees
SET contact [ 2 ] = '(408)-589-89347'
WHERE
   id = 3;

Comanda ar trebui să ruleze cu succes:

Modificatoare PostgreSQL Mulțime

Să interogăm tabelul pentru a verifica dacă modificarea a avut succes:

Modificatoare PostgreSQL Mulțime

Schimbarea a avut succes.

Căutând într-un PostgreSQL Mulțime

În prezent, tabelul de angajați este următorul:

Căutând într-un PostgreSQL Mulțime

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:

Căutând într-un PostgreSQL Mulțime

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:

Extinderea Arrays

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)

  1. Din bara de navigare din stânga, faceți clic pe Baze de date.
  2. Faceți clic pe butonul Demonstrație.

Crearea PostgreSQL Matrice folosind pgAdmin

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.

Crearea PostgreSQL Matrice folosind pgAdmin

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:

Se introduce PostgreSQL Valori matrice

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:

Se introduce PostgreSQL Valori matrice

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:

Interogarea datelor matricei utilizând pgAdmin

Ar trebui să returneze următoarele:

Interogarea datelor matricei utilizând pgAdmin

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;

Interogarea datelor matricei utilizând pgAdmin

Ar trebui să returneze următoarele:

Interogarea datelor matricei utilizând pgAdmin

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';

Interogarea datelor matricei utilizând pgAdmin

Ar trebui să returneze următoarele:

Interogarea datelor matricei utilizând pgAdmin

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.

Modificatoare PostgreSQL Array Utilizând pgAdmin

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;

Modificatoare PostgreSQL Array Utilizând pgAdmin

Ar trebui să returneze următoarele:

Modificatoare PostgreSQL Array Utilizând pgAdmin

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.

Căutând într-un PostgreSQL Array Utilizând pgAdmin

Ar trebui să returneze următoarele:

Căutând într-un PostgreSQL Array Utilizând pgAdmin

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.

Extinderea matricelor folosind pgAdmin

Ar trebui să returneze următoarele:

Extinderea matricelor folosind pgAdmin

Descărcați baza de date folosită în acest tutorial

Întrebări frecvente

Da. Asistenții inteligenți artificiali pot scrie instrucțiuni CREATE TABLE cu coloane de tip matrice, comenzi INSERT folosind ARRAY sau acolade și funcții precum unnest() sau ANY(). Testați codul SQL generat pe schema dvs. înainte de a-l rula.

Da. Instrumentele de inteligență artificială vă pot oferi informații despre dacă o coloană matriceală sau un tabel copil normalizat se potrivește datelor dvs. Matricele sunt potrivite pentru liste mici, fixe, în timp ce tabelele separate sunt potrivite pentru relații mari sau interogate frecvent. Validați cu modelele dvs. de interogare.

Folosește funcția array_length(array, dimension). De exemplu, array_length(contact, 1) returnează numărul de elemente din prima dimensiune a matricei de contacte.

Da. Folosește funcția array_append(array, value) sau operatorul de concatenare ||. De exemplu, UPDATE Employees SET contact = array_append(contact, '(408)-000-0000') adaugă un element nou.

Rezumați această postare cu: