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().

  • ???? Definice: Žádný PostgreSQL Datový typ má odpovídající typ pole, například integer[].
  • 🧱 Vytvořit a vložit: Použijte sloupce TEXT[] a konstruktor ARRAY nebo složené závorky.
  • 🔎 Dotaz: Přistupujte k prvkům s dolními indexy; první prvek je na pozici 1.
  • ✏️ Upravit a vyhledat: Aktualizujte jednotlivé prvky a vyhledávejte hodnoty pomocí ANY().
  • Rozšířit: Funkce unnest() rozděluje hodnoty pole do samostatných řádků.

PostgreSQL Řada

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.

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 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.

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

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í:

Dotazování na data pole

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í:

Dotazování na data pole

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í:

Dotazování na data pole

Úprava PostgreSQL Řada

Můžete aktualizovat všechny prvky pole nebo pouze jeden prvek. 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 znázorněno 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 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í:

Rozšiřující pole

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)

  1. Na navigační liště vlevo klikněte na Databáze.
  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, 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:

Vkládání PostgreSQL Hodnoty pole

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:

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ů, zadejte do editoru dotazů následující dotaz a klikněte na tlačítko Spustit:

SELECT name, contact[1]
FROM Employees;

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, 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';

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) 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;

Ú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

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

Nejčastější dotazy

Ano. Asistenti s umělou inteligencí mohou psát příkazy CREATE TABLE s polem sloupců, příkazy INSERT pomocí ARRAY nebo složených závorek a funkce jako unnest() nebo ANY(). Před spuštěním otestujte vygenerovaný SQL kód na vašem schématu.

Ano. Nástroje umělé inteligence mohou poradit, zda se k vašim datům hodí sloupec pole nebo normalizovaná podřízená tabulka. Pole se hodí pro malé, pevné seznamy, zatímco samostatné tabulky se hodí pro velké nebo často dotazované vztahy. Ověřte to pomocí svých dotazovacích vzorů.

Použijte funkci array_length(array, dimension). Například array_length(contact, 1) vrací počet prvků v první dimenzi pole kontaktů.

Ano. Použijte funkci array_append(array, value) nebo operátor zřetězení ||. Například UPDATE Employees SET contact = array_append(contact, '(408)-000-0000') přidá nový prvek.

Shrňte tento příspěvek takto: