PostgreSQL Taulukko: Funktiot, Tyyppi, Esimerkki

Mikรค on PostgreSQL Array?

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

Jokainen vastaava PostgreSQL tietotyypin mukana tulee asiaankuuluva taulukkotyyppi. Esimerkiksi kokonaislukutietotyypillรค on integer[]-taulukko, merkkitietotyypillรค on merkki[]-taulukko jne.

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 eli kontaktin arvot on lisรคtty taulukkona. Tรคmรค on saavutettu kรคyttรคmรคllรค ARRAY-konstruktoria.

Tรคssรค esimerkissรค olemme kirjoittaneet ne hakasulkeisiin []. Meillรค on kaksi tyรถntekijรครค Alice Johnia varten.

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

Kรคytรคmme SELECT-kรคskyรค taulukon elementtien kyselyyn.

Nรคhdรคksemme Tyรถntekijรคt-taulukon sisรคllรถn suoritamme seuraavan komennon:

SELECT * FROM Employees;

Tรคmรค palauttaa seuraavan:

Kyselyt taulukon tiedoista

Taulukossarakkeen elementit, eli kontakti, on suljettu aaltosulkeisiin {}.

Voit kรคyttรครค itse taulukon elementtejรค lisรครคmรคllรค alaindeksin hakasulkeisiin []. Matriisin ensimmรคinen elementti on paikassa 1.

Meidรคn on esimerkiksi saatava tyรถntekijรถiden nimet ja vain heidรคn ensimmรคinen yhteystietonsa niille tyรถntekijรถille, joilla on useampi kuin yksi yhteystieto. Voimme kรคyttรครค tรคtรค yhteyshenkilรถnรค[1].

Katsotaanpa tรคmรค:

SELECT name, contact[1]
FROM Employees;

Tรคmรค palauttaa seuraavat tiedot:

Kyselyt taulukon tiedoista

Voimme kรคyttรครค SELECT-kรคskyรค yhdessรค WHERE-lauseen kanssa rivien suodattamiseen taulukkosarakkeen perusteella.

Jos esimerkiksi haluat nรคhdรค tyรถntekijรคn, jolla 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รครค taulukon kaikki tai yksittรคisen elementin.

Tรคssรค on Tyรถntekijรคt-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 yhteyshenkilรถn (408)-783-5731 riippumatta sijainnista yhteystietotaulukossa, voimme kรคyttรครค ANY()-funktiota alla esitetyllรค tavalla:

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รคmรค prosessi tunnetaan taulukon laajentamisena.

Tyรถntekijรคt-taulukon esimerkissรค yhteystietotaulukossa on tyรถntekijรถitรค, joilla on kaksi yhteyshenkilรถรค. Voimme jakaa nรคmรค erillisiin riveihin.

PostgreSQL tarjoaa unnest()-funktion, jota voidaan kรคyttรครค tรคhรคn.

Esimerkiksi:

SELECT
   name,
   unnest(contact)
FROM
   Employees;

Tรคmรค palauttaa seuraavat tiedot:

Laajentuvat taulukot

Tyรถntekijรถillรค Alice Johnilla ja James Bushilla on kaksi kontaktia. Voimme jakaa erillisiin riveihin.

pgAdminin avulla

Luominen PostgreSQL taulukot

Suorita sama pgAdminin kautta seuraavasti:

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

Vaihe 2)

  1. Vasemmalla olevasta navigointipalkista - Napsauta rbases.
  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)

Kiharan aaltosulkeiden kรคyttรคminen kyselyssรค

Vaihe 1) Kirjoita seuraava kysely kyselyeditoriin:

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

Vaihe 2) Napsauta Suorita-painiketta:

asettaminen PostgreSQL Array-arvot

Kyselyt taulukon tiedoista

Vaihe 1) Nรคet Tyรถntekijรคt-taulukon sisรคllรถn kirjoittamalla seuraavan kyselyn 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:

  1. Kirjoita seuraava kysely kyselyeditoriin:
    SELECT name, contact[1]
    FROM Employees;
    
  2. Napsauta Suorita-painiketta.

Array-tietojen kysely pgAdminilla

Sen pitรคisi palauttaa seuraavat tiedot:

Array-tietojen kysely pgAdminilla

Vaihe 4) Voit yhdistรครค SELECT-lauseen WHERE-lauseeseen seuraavasti:

  1. Kirjoita seuraava komento kyselyeditoriin:
    SELECT
       name
    FROM
       Employees
    WHERE
       contact [ 2 ] = '(408)-567-78234';
    
  2. Napsauta Suorita-painiketta.

Array-tietojen kysely pgAdminilla

Sen pitรคisi palauttaa seuraavat tiedot:

Array-tietojen kysely pgAdminilla

Muokkaaminen PostgreSQL Ryhmรค

Vaihe 1) Pรคivitรค kรคyttรคjรคn toinen yhteystieto, jonka tunnus on 3, suorittamalla seuraava komento:

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

Vaihe 2) Napsauta Suorita-painiketta.

Muokkaaminen PostgreSQL Taulukko pgAdminilla

Vaihe 3)

1. Kirjoita seuraava komento kyselyeditoriin tarkistaaksesi, onnistuiko muutos:

SELECT * FROM Employees;

2. Napsauta Suorita-painiketta.

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

Yhteenveto

  • PostgreSQL antaa meille mahdollisuuden mรครคrittรครค taulukon sarakkeen taulukkotyypiksi.
  • Taulukon on oltava kelvollinen tietotyyppi kuten kokonaisluku-, merkki- tai kรคyttรคjรคn mรครคrittรคmรคt tyypit.
  • Arvojen lisรครคmiseksi taulukkosarakkeeseen kรคytรคmme ARRAY-konstruktoria.
  • Jos taulukkosarakkeen samalla rivillรค on useampi kuin yksi elementti, ensimmรคinen elementti on paikassa 1.
  • Jokaiseen arvoon pรครคsee kรคsiksi syรถttรคmรคllรค alaindeksi hakasulkeisiin [].
  • Taulukon elementit voidaan hakea SELECT-kรคskyllรค.
  • Taulukossarakkeen arvot voidaan sulkea hakasulkeisiin [] tai aaltosulkeisiin {}.
  • Voimme etsiรค taulukon sarakearvoja kรคyttรคmรคllรค ANY()-funktiota.

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

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