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.

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ă 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.

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 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:

Interogarea datelor matricei

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:

Interogarea datelor matricei

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:

Interogarea datelor matricei

Modificatoare PostgreSQL Mulțime

Puteți actualiza întregul element sau un singur element al unei matrice.

Iată conținutul tabelului Angajații:

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 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:

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 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:

Extinderea Arrays

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)

  1. Din bara de navigare din stânga - Faceți clic pe rbase.
  2. Faceți clic pe butonul Demo

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

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:

Se introduce PostgreSQL Valori matrice

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:

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:

  1. Tastați următoarea interogare în editorul de interogări:
    SELECT name, contact[1]
    FROM Employees;
    
  2. Faceți clic pe butonul Execute.

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:

  1. Tastați următoarea comandă în editorul de interogări:
    SELECT
       name
    FROM
       Employees
    WHERE
       contact [ 2 ] = '(408)-567-78234';
    
  2. Faceți clic pe butonul Execute.

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)

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.

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

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