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.
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 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.
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í:
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í:
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í:
Úprava PostgreSQL Řada
Můžete aktualizovat celý nebo jeden prvek pole.
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 uvedeno 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 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í:
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)
- Na navigační liště vlevo klikněte na rbases.
- 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
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:
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:
Mělo by vrátit následující:
Krok 3) Chcete-li zobrazit první kontakty zaměstnanců:
- V editoru dotazů zadejte následující dotaz:
SELECT name, contact[1] FROM Employees;
- Klepněte na tlačítko Spustit.
Mělo by vrátit následující:
Krok 4) Chcete-li zkombinovat příkaz SELECT s klauzulí WHERE:
- V editoru dotazů zadejte následující příkaz:
SELECT name FROM Employees WHERE contact [ 2 ] = '(408)-567-78234';
- Klepněte na tlačítko Spustit.
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)
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.
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í:
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