PostgreSQL Pole: Funkce, Typ, Příklad

Co je to PostgreSQL pole?

In PostgreSQL, můžeme definovat sloupec jako pole platných datových typů. Datový typ může být vestavěný, uživatelsky definovaný nebo výčtový typ. Kromě toho hrají důležitou roli pole PostgreSQL.

Každý odpovídající PostgreSQL datový typ přichází s relevantním typem pole. Například datový typ integer má typ pole integer[], datový typ znak má typ pole znak[] atd.

Vytvoření PostgreSQL Pole

V následujícím příkladu vytvoříme tabulku s názvem Zaměstnanci se sloupcem kontaktů definovaným jako textové pole:

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

Příkaz by se měl úspěšně spustit.

Vytvoření PostgreSQL Pole

Vkládání PostgreSQL Hodnoty pole

Nechte nás teď INSERT hodnoty do výše uvedené tabulky:

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

Vložení by mělo proběhnout úspěšně.

Vkládání PostgreSQL Hodnoty pole

Hodnoty třetího sloupce, tedy kontakt, byly vloženy jako pole. Toho bylo dosaženo použitím konstruktoru ARRAY.

V tomto příkladu jsme je uzavřeli do hranatých závorek []. Máme dva kontakty na zaměstnankyni Alice John.

Stále je možné použít složené závorky {}, jak je uvedeno níže:

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

Příkaz by se měl úspěšně spustit.

Vkládání PostgreSQL Hodnoty pole

Výše uvedené příkazy vloží dva řádky do tabulky Zaměstnanci. Při použití složených závorek je pole zabaleno do jednoduchých uvozovek ('), zatímco položky textového pole jsou zabaleny do dvojitých uvozovek (“).

Dotazování na data pole

K dotazu na prvky pole používáme příkaz SELECT.

Chcete-li zobrazit obsah naší tabulky Zaměstnanci, spustíme následující příkaz:

SELECT * FROM Employees;

To vrátí následující:

Dotazování na data pole

Prvky sloupce pole, tj. kontakt, byly uzavřeny do složených závorek {}.

Pro přístup k samotným prvkům pole přidáme dolní index v hranatých závorkách []. První prvek v poli je na pozici 1.

Potřebujeme například získat jména zaměstnanců a pouze jejich první kontakt pro zaměstnance s více než jedním kontaktem. Můžeme k tomu přistupovat jako kontakt[1].

Podívejme se na toto:

SELECT name, contact[1]
FROM Employees;

Tím se vrátí následující:

Dotazování na data pole

K filtrování řádků na základě sloupce pole můžeme použít příkaz SELECT spolu s klauzulí WHERE.

Chcete-li například vidět zaměstnance s (408)-567-78234 jako druhým kontaktem, můžeme spustit následující příkaz:

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

Tím se vrátí následující:

Dotazování na data pole

Úprava PostgreSQL Řada

Můžete aktualizovat celý nebo jeden prvek pole.

Zde je obsah tabulky Zaměstnanci:

Úprava PostgreSQL Řada

Upravme druhé telefonní číslo zaměstnance Jamese Bushe, jehož ID je 3:

Úprava PostgreSQL Řada

Spusťte následující příkaz:

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

Příkaz by se měl úspěšně spustit:

Úprava PostgreSQL Řada

Zeptejme se tabulky, abychom zkontrolovali, zda byla změna úspěšná:

Úprava PostgreSQL Řada

Změna byla úspěšná.

Hledání v a PostgreSQL Řada

V současné době je naše tabulka zaměstnanců následující:

Hledání v a PostgreSQL Řada

Předpokládejme, že potřebujeme vědět, kdo vlastní kontakt (408)-783-5731 bez ohledu na pozici v poli kontaktů, můžeme použít funkci ANY(), jak je uvedeno níže:

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

Tím se vrátí následující:

Hledání v a PostgreSQL Řada

Rozšiřující pole

Hodnoty pole můžeme rozdělit do řádků. Tento proces je známý jako rozšíření pole.

V příkladu tabulky Zaměstnanci jsou v poli kontaktů někteří zaměstnanci se dvěma kontakty. Můžeme je rozdělit do samostatných řad.

PostgreSQL poskytuje funkci unnest(), kterou lze k tomu použít.

Například:

SELECT
   name,
   unnest(contact)
FROM
   Employees;

Tím se vrátí následující:

Rozšiřující pole

Zaměstnanci Alice John a James Bush mají dva kontakty. Můžeme rozdělit do samostatných řad.

Pomocí pgAdmin

Vytvoření PostgreSQL Pole

Chcete-li provést totéž prostřednictvím pgAdmin, postupujte takto:

Krok 1) Přihlaste se ke svému účtu pgAdmin.

Krok 2)

  1. Na navigační liště vlevo klikněte na rbases.
  2. Klikněte na tlačítko Demo

Vytvoření PostgreSQL Pole pomocí pgAdmin

Krok 3) Zadejte dotaz do editoru dotazů a vytvořte tabulku Zaměstnanci:

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

Krok 4) Klepněte na tlačítko Spustit.

Vytvoření PostgreSQL Pole pomocí pgAdmin

Vkládání PostgreSQL Hodnoty pole

Krok 1) V editoru dotazů zadejte následující dotaz:

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

Krok 2) Klikněte na tlačítko Provést:

Vkládání PostgreSQL Hodnoty pole

Krok 3)

Chcete-li v dotazu použít složené závorky

Krok 1) V editoru dotazů zadejte následující dotaz:

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

Krok 2) Klikněte na tlačítko Execute:

Vkládání PostgreSQL Hodnoty pole

Dotazování na data pole

Krok 1) Chcete-li zobrazit obsah tabulky Zaměstnanci, zadejte v editoru dotazů následující dotaz:

SELECT * FROM Employees;

Krok 2) Klikněte na tlačítko Provést:

Dotazování na data pole pomocí pgAdmin

Mělo by vrátit následující:

Dotazování na data pole pomocí pgAdmin

Krok 3) Chcete-li zobrazit první kontakty zaměstnanců:

  1. V editoru dotazů zadejte následující dotaz:
    SELECT name, contact[1]
    FROM Employees;
    
  2. Klepněte na tlačítko Spustit.

Dotazování na data pole pomocí pgAdmin

Mělo by vrátit následující:

Dotazování na data pole pomocí pgAdmin

Krok 4) Chcete-li zkombinovat příkaz SELECT s klauzulí WHERE:

  1. V editoru dotazů zadejte následující příkaz:
    SELECT
       name
    FROM
       Employees
    WHERE
       contact [ 2 ] = '(408)-567-78234';
    
  2. Klepněte na tlačítko Spustit.

Dotazování na data pole pomocí pgAdmin

Mělo by vrátit následující:

Dotazování na data pole pomocí pgAdmin

Úprava PostgreSQL Řada

Krok 1) Chcete-li aktualizovat druhý kontakt uživatele s ID 3, spusťte následující příkaz:

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

Krok 2) Klepněte na tlačítko Spustit.

Úprava PostgreSQL Pole Pomocí pgAdmin

Krok 3)

1. Zadáním následujícího příkazu do editoru dotazů zkontrolujte, zda byla změna úspěšná:

SELECT * FROM Employees;

2. Klikněte na tlačítko Execute.

Úprava PostgreSQL Pole Pomocí pgAdmin

Mělo by vrátit následující:

Úprava PostgreSQL Pole Pomocí pgAdmin

Hledání v a PostgreSQL Řada

Krok 1) V editoru dotazů zadejte následující dotaz:

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

Krok 2) Klepněte na tlačítko Spustit.

Hledání v a PostgreSQL Pole Pomocí pgAdmin

Mělo by vrátit následující:

Hledání v a PostgreSQL Pole Pomocí pgAdmin

Rozšiřující pole

Krok 1) V editoru dotazů zadejte následující dotaz:

SELECT
   name,
   unnest(contact)
FROM
   Employees;

Krok 2) Klepněte na tlačítko Spustit.

Rozšiřování polí pomocí pgAdmin

Mělo by vrátit následující:

Rozšiřování polí pomocí pgAdmin

Shrnutí

  • PostgreSQL nám umožňuje definovat sloupec tabulky jako typ pole.
  • Pole musí být platné datový typ jako jsou celočíselné, znakové nebo uživatelem definované typy.
  • Pro vložení hodnot do sloupce pole používáme konstruktor ARRAY.
  • Pokud je ve stejném řádku sloupce pole více než jeden prvek, první prvek je na pozici 1.
  • Ke každé hodnotě lze přistupovat předáním dolního indexu v hranatých závorkách [].
  • Prvky pole lze načíst pomocí příkazu SELECT.
  • Hodnoty sloupce pole mohou být uzavřeny do hranatých závorek [] nebo složených závorek {}.
  • Hodnoty sloupců pole můžeme hledat pomocí funkce ANY().

Stáhněte si databázi použitou v tomto kurzu