PostgreSQL Tablica: funkcje, typ, przykład
⚡ Inteligentne podsumowanie
PostgreSQL Array pozwala zdefiniować kolumnę tabeli jako tablicę dowolnego prawidłowego typu danych. Obejmuje to tworzenie kolumn tablicowych, wstawianie wartości za pomocą konstruktora ARRAY lub nawiasów klamrowych, wykonywanie zapytań i modyfikowanie elementów oraz wyszukiwanie za pomocą ANY().

Czym jest PostgreSQL Szyk?
In PostgreSQLMoż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ę w… PostgreSQL.
Każdy odpowiedni PostgreSQL Typ danych ma odpowiedni typ tablicowy. Na przykład, typ danych całkowitych ma typ tablicowy integer[], typ danych znakowych ma typ tablicowy character[] i tak dalej.
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 zostać pomyślnie uruchomione.
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 „kontakt”, 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 dla 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 wyszukać elementy tablicy, używamy polecenia SELECT. Aby wyświetlić zawartość tabeli „Pracownicy”, uruchamiamy następujące polecenie:
SELECT * FROM Employees;
To zwraca następujące informacje:
Elementy kolumny tablicy, czyli „kontakt”, 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, jeśli mamy więcej niż jednego pracownika, potrzebujemy uzyskać imiona i nazwiska oraz tylko jego pierwszy kontakt. Możemy to uzyskać, wpisując kontakt[1]. Zobaczmy:
SELECT name, contact[1] FROM Employees;
Spowoduje to zwrócenie następujących informacji:
Możemy użyć polecenia SELECT wraz z klauzulą WHERE, aby filtrować wiersze na podstawie kolumny tablicy. Na przykład, aby zobaczyć pracownika z numerem kontaktowym (408)-567-78234 jako drugim kontaktem, 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 element tablicy lub tylko jego pojedynczy element. 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 chcemy wiedzieć, kto jest właścicielem kontaktu (408)-783-5731, niezależnie od jego 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. Ten proces nazywa się rozszerzaniem tablicy. W przykładzie tabeli „Pracownicy” w tablicy kontaktów znajdują się pracownicy z dwoma kontaktami. Możemy podzielić je na osobne wiersze. PostgreSQL udostępnia funkcję unnest(), której można użyć w tym celu. 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 je rozdzielić na osobne wiersze.
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 opcję Bazy danych.
- 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 użyć nawiasów klamrowych w zapytaniu, 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"}' );
Następnie 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 poniższe zapytanie w edytorze zapytań i kliknij przycisk Wykonaj:
SELECT name, contact[1] FROM Employees;
Powinno zostać zwrócone:
Krok 4) Aby połączyć instrukcję SELECT z klauzulą WHERE, wpisz następujące polecenie w edytorze zapytań i kliknij przycisk Wykonaj:
SELECT name FROM Employees WHERE contact [ 2 ] = '(408)-567-78234';
Powinno zostać zwrócone:
Modyfikacja PostgreSQL Szyk
Krok 1) Aby zaktualizować drugi kontakt użytkownika o identyfikator 3, uruchom następujące polecenie:
UPDATE Employees SET contact [ 2 ] = '(408)-589-89347' WHERE id = 3;
Krok 2) Kliknij przycisk Wykonaj.
Krok 3) Wpisz poniższe polecenie w edytorze zapytań, aby sprawdzić, czy zmiana została wprowadzona pomyślnie, a następnie kliknij przycisk Wykonaj:
SELECT * FROM Employees;
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:
Pobierz bazę danych używaną w tym samouczku






























