PostgreSQL Tablica: funkcje, typ, przykład

Co to jest PostgreSQL Szyk?

In PostgreSQL, możemy zdefiniować kolumnę jako tablicę prawidłowych typów danych. Typ danych może być wbudowany, zdefiniowany przez użytkownika lub wyliczeniowy. Poza tym tablice odgrywają ważną rolę PostgreSQL.

Każdy odpowiedni PostgreSQL typ danych ma odpowiedni typ tablicy. Na przykład typ danych całkowitych ma typ tablicowy integer[], typ danych znakowych ma typ tablicowy znak[] itd.

Tworzenie PostgreSQL Tablice

W poniższym przykładzie utworzymy tabelę o nazwie Pracownicy, w której kolumna kontaktów będzie zdefiniowana jako tablica tekstowa:

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

Polecenie powinno działać pomyślnie.

Tworzenie PostgreSQL Tablice

Wstawianie PostgreSQL Wartości tablicy

Pozwól nam teraz wstawić wartości do powyższej tabeli:

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

Wstawianie powinno przebiegać pomyślnie.

Wstawianie PostgreSQL Wartości tablicy

Wartości trzeciej kolumny, czyli kontaktu, zostały wstawione jako tablica. Osiągnięto to za pomocą konstruktora ARRAY.

W tym przykładzie umieściliśmy je w nawiasach kwadratowych []. Mamy dwa kontakty do pracownika Alice John.

Nadal możemy używać nawiasów klamrowych {}, jak pokazano poniżej:

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

Polecenie powinno zostać pomyślnie uruchomione.

Wstawianie PostgreSQL Wartości tablicy

Powyższe polecenia wstawią dwa wiersze do tabeli Employees. Podczas używania nawiasów klamrowych tablica jest ujęta w pojedyncze cudzysłowy ('), a elementy tablicy tekstowej są ujęte w podwójne cudzysłowy (“).

Zapytanie o dane tablicy

Aby wysłać zapytanie do elementów tablicy, używamy instrukcji SELECT.

Aby zobaczyć zawartość naszej tabeli Pracownicy, uruchamiamy następujące polecenie:

SELECT * FROM Employees;

To zwraca następujące informacje:

Zapytanie o dane tablicy

Elementy kolumny tablicy, czyli kontaktu, zostały ujęte w nawiasy klamrowe {}.

Aby uzyskać dostęp do samych elementów tablicy, dodajemy indeks dolny w nawiasach kwadratowych []. Pierwszy element w tablicy znajduje się na pozycji 1.

Na przykład musimy uzyskać nazwiska pracowników i tylko ich pierwszy kontakt w przypadku pracowników mających więcej niż jeden kontakt. Możemy uzyskać do tego dostęp jako kontakt[1].

Zobaczmy to:

SELECT name, contact[1]
FROM Employees;

Spowoduje to zwrócenie następujących informacji:

Zapytanie o dane tablicy

Możemy użyć instrukcji SELECT wraz z klauzulą ​​WHERE do filtrowania wierszy na podstawie kolumny tablicy.

Na przykład, aby zobaczyć pracownika o numerze (408)-567-78234 jako drugi kontakt, możemy uruchomić następujące polecenie:

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

Spowoduje to zwrócenie następujących informacji:

Zapytanie o dane tablicy

Modyfikacja PostgreSQL Szyk

Możesz zaktualizować cały lub pojedynczy element tablicy.

Oto zawartość tabeli Pracownicy:

Modyfikacja PostgreSQL Szyk

Zaktualizujmy drugi numer telefonu pracownika Jamesa Busha, którego identyfikator to 3:

Modyfikacja PostgreSQL Szyk

Uruchom następujące polecenie:

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

Polecenie powinno działać pomyślnie:

Modyfikacja PostgreSQL Szyk

Zapytajmy tabelę, czy zmiana się powiodła:

Modyfikacja PostgreSQL Szyk

Zmiana się powiodła.

Wyszukiwanie w PostgreSQL Szyk

Aktualnie nasza tabela Pracowników przedstawia się następująco:

Wyszukiwanie w PostgreSQL Szyk

Załóżmy, że musimy wiedzieć, kto jest właścicielem kontaktu (408)-783-5731, niezależnie od pozycji w tablicy kontaktów, możemy użyć funkcji ANY(), jak pokazano poniżej:

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

Spowoduje to zwrócenie następujących informacji:

Wyszukiwanie w PostgreSQL Szyk

Rozszerzanie tablic

Możemy podzielić wartości tablicy na wiersze. Proces ten nazywany jest rozszerzaniem tablicy.

W przykładzie tabeli Pracownicy niektórzy pracownicy mają dwa kontakty w tablicy kontaktów. Możemy podzielić je na osobne wiersze.

PostgreSQL udostępnia funkcję unnest(), której można w tym celu użyć.

Na przykład:

SELECT
   name,
   unnest(contact)
FROM
   Employees;

Spowoduje to zwrócenie następujących informacji:

Rozszerzanie tablic

Pracownicy Alice John i James Bush mają dwa kontakty. Możemy podzielić na osobne rzędy.

Korzystanie z pgAdmina

Tworzenie PostgreSQL Tablice

Aby osiągnąć to samo poprzez pgAdmin, wykonaj następujące czynności:

Krok 1) Zaloguj się na swoje konto pgAdmin.

Krok 2)

  1. Na pasku nawigacyjnym po lewej stronie kliknij rbases.
  2. Kliknij przycisk Demo

Tworzenie PostgreSQL Tablice przy użyciu pgAdmin

Krok 3) Wpisz zapytanie w edytorze zapytań, aby utworzyć tabelę Pracownicy:

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

Krok 4) Kliknij przycisk Wykonaj.

Tworzenie PostgreSQL Tablice przy użyciu pgAdmin

Wstawianie PostgreSQL Wartości tablicy

Krok 1) Wpisz następujące zapytanie w edytorze zapytań:

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

Krok 2) Kliknij przycisk Wykonaj:

Wstawianie PostgreSQL Wartości tablicy

Krok 3)

Aby w zapytaniu użyć nawiasów klamrowych

Krok 1) Wpisz następujące zapytanie w edytorze zapytań:

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

Krok 2) Kliknij przycisk Wykonaj:

Wstawianie PostgreSQL Wartości tablicy

Zapytanie o dane tablicy

Krok 1) Aby zobaczyć zawartość tabeli Pracownicy, wpisz następujące zapytanie w edytorze zapytań:

SELECT * FROM Employees;

Krok 2) Kliknij przycisk Wykonaj:

Zapytanie o dane tablicy za pomocą pgAdmin

Powinno zostać zwrócone:

Zapytanie o dane tablicy za pomocą pgAdmin

Krok 3) Aby zobaczyć pierwsze kontakty pracowników:

  1. Wpisz następujące zapytanie w edytorze zapytań:
    SELECT name, contact[1]
    FROM Employees;
    
  2. Kliknij przycisk Wykonaj.

Zapytanie o dane tablicy za pomocą pgAdmin

Powinno zostać zwrócone:

Zapytanie o dane tablicy za pomocą pgAdmin

Krok 4) Aby połączyć instrukcję SELECT z klauzulą ​​WHERE:

  1. Wpisz następujące polecenie w edytorze zapytań:
    SELECT
       name
    FROM
       Employees
    WHERE
       contact [ 2 ] = '(408)-567-78234';
    
  2. Kliknij przycisk Wykonaj.

Zapytanie o dane tablicy za pomocą pgAdmin

Powinno zostać zwrócone:

Zapytanie o dane tablicy za pomocą pgAdmin

Modyfikacja PostgreSQL Szyk

Krok 1) Aby zaktualizować drugi kontakt użytkownika o identyfikatorze 3, uruchom następujące polecenie:

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

Krok 2) Kliknij przycisk Wykonaj.

Modyfikacja PostgreSQL Tablica przy użyciu pgAdmin

Krok 3)

1. Wpisz następujące polecenie w edytorze zapytań, aby sprawdzić, czy zmiana się powiodła:

SELECT * FROM Employees;

2. Kliknij przycisk Wykonaj.

Modyfikacja PostgreSQL Tablica przy użyciu pgAdmin

Powinno zostać zwrócone:

Modyfikacja PostgreSQL Tablica przy użyciu pgAdmin

Wyszukiwanie w PostgreSQL Szyk

Krok 1) Wpisz następujące zapytanie w edytorze zapytań:

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

Krok 2) Kliknij przycisk Wykonaj.

Wyszukiwanie w PostgreSQL Tablica przy użyciu pgAdmin

Powinno zostać zwrócone:

Wyszukiwanie w PostgreSQL Tablica przy użyciu pgAdmin

Rozszerzanie tablic

Krok 1) Wpisz następujące zapytanie w edytorze zapytań:

SELECT
   name,
   unnest(contact)
FROM
   Employees;

Krok 2) Kliknij przycisk Wykonaj.

Rozwijanie tablic za pomocą pgAdmin

Powinno zostać zwrócone:

Rozwijanie tablic za pomocą pgAdmin

Podsumowanie

  • PostgreSQL pozwala nam zdefiniować kolumnę tabeli jako typ tablicy.
  • Tablica musi być poprawna typ danych takie jak liczby całkowite, znakowe lub typy zdefiniowane przez użytkownika.
  • Aby wstawić wartości do kolumny tablicy, używamy konstruktora ARRAY.
  • Jeśli w tym samym wierszu kolumny tablicy znajduje się więcej niż jeden element, pierwszy element znajduje się na pozycji 1.
  • Dostęp do każdej wartości można uzyskać poprzez podanie indeksu dolnego w nawiasach kwadratowych [].
  • Elementy tablicy można pobrać za pomocą instrukcji SELECT.
  • Wartości kolumny tablicy mogą być ujęte w nawiasy kwadratowe [] lub nawiasy klamrowe {}.
  • Wartości kolumn tablicy możemy wyszukiwać za pomocą funkcji ANY().

Pobierz bazę danych używaną w tym samouczku