PostgreSQL Pole: Funkce, Typ, Příklad
⚡ Chytré shrnutí
PostgreSQL Array umožňuje definovat sloupec tabulky jako pole libovolného platného datového typu. Zahrnuje vytváření sloupců pole, vkládání hodnot pomocí konstruktoru ARRAY nebo složených závorek, dotazování a úpravu prvků a vyhledávání pomocí ANY().

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živatelem definovaný nebo výčtový typ. Kromě toho hrají pole důležitou roli v PostgreSQL.
Každý odpovídající PostgreSQL Datový typ má odpovídající typ pole. Například datový typ integer má typ pole integer[], datový typ character má typ pole character[] 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.
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ě.
Hodnoty třetího sloupce, tedy kontaktu, 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 pro zaměstnance Alici 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.
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
Pro dotazování prvků pole používáme příkaz SELECT. Pro zobrazení obsahu tabulky Employees spustíme následující příkaz:
SELECT * FROM Employees;
To vrátí následující:
Prvky sloupce pole, tj. kontakt, jsou uzavřeny do složených závorek {}. Pro přístup k samotným prvkům pole přidáváme dolní index v hranatých závorkách []. První prvek v poli je na pozici 1.
Například potřebujeme získat jména zaměstnanců a pouze jejich první kontaktní údaje u zaměstnanců s více než jedním kontaktem. K tomuto údaji můžeme přistupovat jako k kontaktu[1]. Podívejme se na to:
SELECT name, contact[1] FROM Employees;
Tím se vrátí následující:
Příkaz SELECT můžeme použít společně s klauzulí WHERE k filtrování řádků na základě sloupce pole. Například pro zobrazení zaměstnance s číslem (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í:
Úprava PostgreSQL Řada
Můžete aktualizovat všechny prvky pole nebo pouze jeden prvek. Zde je obsah tabulky Zaměstnanci:
Upravme druhé telefonní číslo zaměstnance Jamese Bushe, jehož ID je 3:
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:
Zeptejme se tabulky, abychom zkontrolovali, zda byla změna úspěšná:
Změna byla úspěšná.
Hledání v a PostgreSQL Řada
V současné době je naše tabulka zaměstnanců následující:
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 znázorněno níže:
SELECT name, contact FROM Employees WHERE '(408)-783-5731' = ANY (contact);
Tím se vrátí následující:
Rozšiřující pole
Hodnoty pole můžeme rozdělit do řádků. Tento proces se nazývá expanze pole. V příkladu tabulky Zaměstnanci jsou někteří zaměstnanci se dvěma kontakty v poli kontaktů. Ty můžeme rozdělit do samostatných řádků. 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í:
Zaměstnanci Alice John a James Bush mají dva kontakty. Ty můžeme rozdělit do samostatných řádků.
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)
- Na navigační liště vlevo klikněte na Databáze.
- Klikněte na tlačítko Demo.
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.
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:
Krok 3) Chcete-li v dotazu použít složené závorky, zadejte do editoru dotazů následující dotaz:
INSERT INTO Employees VALUES ( 2, 'Kate Joel', '{"(408)-783-5731"}' ), ( 3, 'James Bush', '{"(408)-745-8965","(408)-567-78234"}' );
Poté klikněte na tlačítko Provést:
Dotazování na data pole
Krok 1) Chcete-li zobrazit obsah tabulky Zaměstnanci, zadejte do editoru dotazů následující dotaz:
SELECT * FROM Employees;
Krok 2) Klikněte na tlačítko Provést:
Mělo by vrátit následující:
Krok 3) Chcete-li zobrazit první kontakty zaměstnanců, zadejte do editoru dotazů následující dotaz a klikněte na tlačítko Spustit:
SELECT name, contact[1] FROM Employees;
Mělo by vrátit následující:
Krok 4) Chcete-li zkombinovat příkaz SELECT s klauzulí WHERE, zadejte do editoru dotazů následující příkaz a klikněte na tlačítko Spustit:
SELECT name FROM Employees WHERE contact [ 2 ] = '(408)-567-78234';
Mělo by vrátit následující:
Ú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.
Krok 3) Zadejte do editoru dotazů následující příkaz, abyste zkontrolovali, zda byla změna úspěšná, a poté klikněte na tlačítko Spustit:
SELECT * FROM Employees;
Mělo by vrátit následující:
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.
Mělo by vrátit následující:
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.
Mělo by vrátit následující:
Stáhněte si databázi použitou v tomto kurzu






























