PostgreSQL Taulukko: Funktiot, Tyyppi, Esimerkki

โšก ร„lykรคs yhteenveto

PostgreSQL Array-funktiolla voit mรครคrittรครค taulukon sarakkeen minkรค tahansa kelvollisen tietotyypin taulukkona. Se kattaa taulukkosarakkeiden luomisen, arvojen lisรครคmisen ARRAY-konstruktorilla tai aaltosulkeilla, elementtien kyselyn ja muokkaamisen sekรค haun ANY()-funktiolla.

  • ๐Ÿ“ฆ Mรครคritelmรค: mitรครคn PostgreSQL tietotyypillรค on vastaava taulukkotyyppi, kuten integer[].
  • ๐Ÿงฑ Luo ja lisรครค: Kรคytรค TEXT[]-sarakkeita ja ARRAY-konstruktoria tai aaltosulkeita.
  • ๐Ÿ”Ž kysely: Kรคytรค elementtejรค alaindekseillรค; ensimmรคinen elementti on kohdassa 1.
  • โœ๏ธ Muokkaa ja hae: Pรคivitรค yksittรคisiรค elementtejรค ja hae arvoja ANY()-funktiolla.
  • โž— Laajentaa: unnest()-funktio jakaa taulukon arvot erillisille riveille.

PostgreSQL Ryhmรค

Mikรค on PostgreSQL Array?

In PostgreSQL, voimme mรครคritellรค sarakkeen kelvollisten tietotyyppien taulukkona. Tietotyyppi voi olla sisรครคnrakennettu, kรคyttรคjรคn mรครคrittรคmรค tai luetteloitu tyyppi. Tรคmรคn lisรคksi taulukoilla on tรคrkeรค rooli PostgreSQL.

Jokainen vastaava PostgreSQL Tietotyypille on liitetty asiaankuuluva taulukkotyyppi. Esimerkiksi kokonaislukutietotyypillรค on integer[]-taulukkotyyppi, merkkitietotyypillรค on character[]-taulukkotyyppi ja niin edelleen.

Luominen PostgreSQL taulukot

Seuraavassa esimerkissรค luomme taulukon nimeltรค Tyรถntekijรคt, jonka yhteystietosarake on mรครคritelty tekstitaulukoksi:

CREATE TABLE Employees (
   id int PRIMARY KEY,
   name VARCHAR (100),
   contact TEXT []
);

Komennon pitรคisi toimia onnistuneesti.

Luominen PostgreSQL taulukot

asettaminen PostgreSQL Array-arvot

Anna meidรคn nyt lisรคtรค arvot yllรค olevaan taulukkoon:

INSERT INTO Employees
VALUES
   (
      1,
      'Alice John',
      ARRAY [ '(408)-743-9045',
      '(408)-567-7834' ]
   );

Lisรคyksen pitรคisi toimia onnistuneesti.

asettaminen PostgreSQL Array-arvot

Kolmannen sarakkeen arvot eli yhteystiedot on lisรคtty taulukkona. Tรคmรค on tehty ARRAY-konstruktorin avulla. Tรคssรค esimerkissรค ne on suljettu hakasulkeisiin []. Tyรถntekijรคllรค Alice Johnilla on kaksi yhteystietoa.

Voimme edelleen kรคyttรครค kiharoita {} alla olevan kuvan mukaisesti:

INSERT INTO Employees
VALUES
   (
    2,
      'Kate Joel',
      '{"(408)-783-5731"}'
   ),
   (
      3,
      'James Bush',
      '{"(408)-745-8965","(408)-567-78234"}'
   );

Komennon pitรคisi toimia onnistuneesti.

asettaminen PostgreSQL Array-arvot

Yllรค olevat lauseet lisรครคvรคt kaksi riviรค Tyรถntekijรคt-taulukkoon. Kรคytettรคessรค aaltosulkuja, taulukko rivitetรครคn lainausmerkkien (') sisรครคn, kun taas tekstitaulukon kohteet rivitetรครคn lainausmerkkien (โ€œ) sisรครคn.

Kyselyt taulukon tiedoista

Taulukon elementtien kyselyyn kรคytรคmme SELECT-lauseketta. Tyรถntekijรคt-taulukon sisรคllรถn nรคkemiseksi suoritamme seuraavan komennon:

SELECT * FROM Employees;

Tรคmรค palauttaa seuraavan:

Kyselyt taulukon tiedoista

Taulukon sarakkeen elementit, eli yhteystieto, on suljettu aaltosulkeisiin {}. Pรครคstรคksemme kรคsiksi itse taulukon elementteihin, lisรครคmme alaindeksin hakasulkeisiin []. Taulukon ensimmรคinen elementti on kohdassa 1.

Esimerkiksi meidรคn on saatava tyรถntekijรถiden nimet ja vain heidรคn ensimmรคinen yhteystietonsa niiltรค tyรถntekijรถiltรค, โ€‹โ€‹joilla on useampi kuin yksi yhteystieto. Voimme kรคyttรครค tรคtรค muodossa contact[1]. Katsotaanpa tรคtรค:

SELECT name, contact[1]
FROM Employees;

Tรคmรค palauttaa seuraavat tiedot:

Kyselyt taulukon tiedoista

Voimme kรคyttรครค SELECT-lausetta yhdessรค WHERE-lauseen kanssa suodattamaan rivejรค taulukon sarakkeen perusteella. Jos esimerkiksi haluat nรคhdรค tyรถntekijรคn, jonka numero on (408)-567-78234, toisena yhteyshenkilรถnรค, voimme suorittaa seuraavan komennon:

SELECT
   name
FROM
   Employees
WHERE
   contact [ 2 ] = '(408)-567-78234';

Tรคmรค palauttaa seuraavat tiedot:

Kyselyt taulukon tiedoista

Muokkaaminen PostgreSQL Ryhmรค

Voit pรคivittรครค kaikki taulukon elementit tai vain yhden niistรค. Tรคssรค on Employees-taulukon sisรคltรถ:

Muokkaaminen PostgreSQL Ryhmรค

Pรคivitetรครคnpรค tyรถntekijรคn James Bushin, jonka tunnus on 3, toinen puhelinnumero:

Muokkaaminen PostgreSQL Ryhmรค

Suorita seuraava komento:

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

Komennon pitรคisi toimia onnistuneesti:

Muokkaaminen PostgreSQL Ryhmรค

Kysytรครคn taulukosta, onko muutos onnistunut:

Muokkaaminen PostgreSQL Ryhmรค

Muutos onnistui.

Haku a PostgreSQL Ryhmรค

Tรคllรค hetkellรค tyรถntekijรคtaulukkomme on seuraava:

Haku a PostgreSQL Ryhmรค

Oletetaan, ettรค meidรคn on tiedettรคvรค, kuka omistaa yhteystiedon (408)-783-5731 riippumatta sen sijainnista yhteystietotaulukossa. Voimme kรคyttรครค ANY()-funktiota alla olevan mukaisesti:

SELECT
   name,
   contact
FROM
   Employees
WHERE
   '(408)-783-5731' = ANY (contact);

Tรคmรค palauttaa seuraavat tiedot:

Haku a PostgreSQL Ryhmรค

Laajentuvat taulukot

Voimme jakaa taulukon arvot riveihin. Tรคtรค prosessia kutsutaan taulukon laajennukseksi. Tyรถntekijรคt-taulukon esimerkissรค yhteystietotaulukossa on tyรถntekijรถitรค, joilla on kaksi yhteystietoa. Voimme jakaa nรคmรค erillisille riveille. PostgreSQL tarjoaa tรคhรคn kรคytettรคvรคn unnest()-funktion. Esimerkiksi:

SELECT
   name,
   unnest(contact)
FROM
   Employees;

Tรคmรค palauttaa seuraavat tiedot:

Laajentuvat taulukot

Tyรถntekijรถillรค Alice Johnilla ja James Bushilla on kaksi yhteystietoa. Voimme jakaa nรคmรค erillisille riveille.

pgAdminin avulla

Luominen PostgreSQL taulukot

Suorita sama pgAdminin kautta seuraavasti:

Vaihe 1) Kirjaudu sisรครคn pgAdmin-tilillesi.

Vaihe 2)

  1. Napsauta vasemmalla olevasta navigointipalkista Tietokannat.
  2. Napsauta Demo-painiketta.

Luominen PostgreSQL Taulukot pgAdminilla

Vaihe 3) Kirjoita kysely kyselyeditoriin luodaksesi Tyรถntekijรคt-taulukon:

CREATE TABLE Employees (
   id int PRIMARY KEY,
   name VARCHAR (100),
   contact TEXT []
);

Vaihe 4) Napsauta Suorita-painiketta.

Luominen PostgreSQL Taulukot pgAdminilla

asettaminen PostgreSQL Array-arvot

Vaihe 1) Kirjoita seuraava kysely kyselyeditoriin:

INSERT INTO Employees
VALUES
   (
      1,
      'Alice John',
      ARRAY [ '(408)-743-9045',
      '(408)-567-7834' ]
   );

Vaihe 2) Napsauta Suorita-painiketta:

asettaminen PostgreSQL Array-arvot

Vaihe 3) Jos haluat kรคyttรครค aaltosulkeita kyselyssรค, kirjoita seuraava kysely kyselyeditoriin:

INSERT INTO Employees
VALUES
   (
    2,
      'Kate Joel',
      '{"(408)-783-5731"}'
   ),
   (
      3,
      'James Bush',
      '{"(408)-745-8965","(408)-567-78234"}'
   );

Napsauta sitten Suorita-painiketta:

asettaminen PostgreSQL Array-arvot

Kyselyt taulukon tiedoista

Vaihe 1) Jos haluat nรคhdรค Tyรถntekijรคt-taulukon sisรคllรถn, kirjoita seuraava kysely kyselyeditoriin:

SELECT * FROM Employees;

Vaihe 2) Napsauta Suorita-painiketta:

Array-tietojen kysely pgAdminilla

Sen pitรคisi palauttaa seuraavat tiedot:

Array-tietojen kysely pgAdminilla

Vaihe 3) Nรคhdรคksesi tyรถntekijรถiden ensimmรคiset yhteystiedot, kirjoita seuraava kysely kyselyeditoriin ja napsauta Suorita-painiketta:

SELECT name, contact[1]
FROM Employees;

Array-tietojen kysely pgAdminilla

Sen pitรคisi palauttaa seuraavat tiedot:

Array-tietojen kysely pgAdminilla

Vaihe 4) Yhdistรครคksesi SELECT-lausekkeen WHERE-lausekkeen kanssa, kirjoita seuraava komento kyselyeditoriin ja napsauta Suorita-painiketta:

SELECT
   name
FROM
   Employees
WHERE
   contact [ 2 ] = '(408)-567-78234';

Array-tietojen kysely pgAdminilla

Sen pitรคisi palauttaa seuraavat tiedot:

Array-tietojen kysely pgAdminilla

Muokkaaminen PostgreSQL Ryhmรค

Vaihe 1) Pรคivittรครคksesi kรคyttรคjรคn, jonka id on 3, toisen yhteystiedon, suorita seuraava komento:

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

Vaihe 2) Napsauta Suorita-painiketta.

Muokkaaminen PostgreSQL Taulukko pgAdminilla

Vaihe 3) Kirjoita seuraava komento kyselyeditoriin tarkistaaksesi, onnistuiko muutos, ja napsauta sitten Suorita-painiketta:

SELECT * FROM Employees;

Muokkaaminen PostgreSQL Taulukko pgAdminilla

Sen pitรคisi palauttaa seuraavat tiedot:

Muokkaaminen PostgreSQL Taulukko pgAdminilla

Haku a PostgreSQL Ryhmรค

Vaihe 1) Kirjoita seuraava kysely kyselyeditoriin:

SELECT
   name,
   contact
FROM
   Employees
WHERE
   '(408)-783-5731' = ANY (contact);

Vaihe 2) Napsauta Suorita-painiketta.

Haku a PostgreSQL Taulukko pgAdminilla

Sen pitรคisi palauttaa seuraavat tiedot:

Haku a PostgreSQL Taulukko pgAdminilla

Laajentuvat taulukot

Vaihe 1) Kirjoita seuraava kysely kyselyeditoriin:

SELECT
   name,
   unnest(contact)
FROM
   Employees;

Vaihe 2) Napsauta Suorita-painiketta.

Taulukon laajentaminen pgAdminilla

Sen pitรคisi palauttaa seuraavat tiedot:

Taulukon laajentaminen pgAdminilla

Lataa tรคssรค opetusohjelmassa kรคytetty tietokanta

UKK

Kyllรค. Tekoรคlyavustajat voivat kirjoittaa CREATE TABLE -lausekkeita taulukkosarakkeilla, INSERT-komentoja kรคyttรคmรคllรค ARRAY-metodia tai aaltosulkeita ja funktioita, kuten unnest() tai ANY(). Testaa luotu SQL-komento skeemassasi ennen sen suorittamista.

Kyllรค. Tekoรคlytyรถkalut voivat neuvoa, sopiiko tietoihisi taulukkosarake vai normalisoitu alitaulukko. Taulukot sopivat pienille, kiinteille listoille, kun taas erilliset taulukot sopivat suurille tai usein haettaville suhteille. Vahvista kyselymalliesi avulla.

Kรคytรค funktiota array_length(array, dimension). Esimerkiksi array_length(contact, 1) palauttaa kontaktitaulukon ensimmรคisen ulottuvuuden alkioiden lukumรครคrรคn.

Kyllรค. Kรคytรค funktiota array_append(array, value) tai ketjutusoperaattoria ||. Esimerkiksi UPDATE Employees SET contact = array_append(contact, '(408)-000-0000') lisรครค uuden elementin.

Tiivistรค tรคmรค viesti seuraavasti: