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.
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.
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.
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:
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:
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:
Modyfikacja PostgreSQL Szyk
Możesz zaktualizować cały lub pojedynczy element tablicy.
Oto zawartość tabeli Pracownicy:
Zaktualizujmy drugi numer telefonu pracownika Jamesa Busha, którego identyfikator to 3:
Uruchom następujące polecenie:
UPDATE Employees SET contact [ 2 ] = '(408)-589-89347' WHERE id = 3;
Polecenie powinno działać pomyślnie:
Zapytajmy tabelę, czy zmiana się powiodła:
Zmiana się powiodła.
Wyszukiwanie w PostgreSQL Szyk
Aktualnie nasza tabela Pracowników przedstawia się następująco:
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:
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:
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)
- Na pasku nawigacyjnym po lewej stronie kliknij rbases.
- Kliknij przycisk Demo
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.
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:
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:
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:
Powinno zostać zwrócone:
Krok 3) Aby zobaczyć pierwsze kontakty pracowników:
- Wpisz następujące zapytanie w edytorze zapytań:
SELECT name, contact[1] FROM Employees;
- Kliknij przycisk Wykonaj.
Powinno zostać zwrócone:
Krok 4) Aby połączyć instrukcję SELECT z klauzulą WHERE:
- Wpisz następujące polecenie w edytorze zapytań:
SELECT name FROM Employees WHERE contact [ 2 ] = '(408)-567-78234';
- Kliknij przycisk Wykonaj.
Powinno zostać zwrócone:
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.
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.
Powinno zostać zwrócone:
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.
Powinno zostać zwrócone:
Rozszerzanie tablic
Krok 1) Wpisz następujące zapytanie w edytorze zapytań:
SELECT name, unnest(contact) FROM Employees;
Krok 2) Kliknij przycisk Wykonaj.
Powinno zostać zwrócone:
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