Home > Fragmenty szkoleń > Hstore w PostgreSQL

Hstore w PostgreSQL

Hstore w PostgreSQL to jeden z pierwszych nieustrukturyzowanych typów danych obsługiwanych przez tą bazę danych (od wersji 8.3). Ułatwia przechowywanie pary: klucz-wartość i uzyskiwanie do nich dostępu w bazie danych. Pod względem funkcjonalności hstore jest dobrym rozwiązaniem, ale nieco mniej optymalnym niż JSON, ponieważ hstore w Postgres pozwala na przechowywania jedynie ciągu znaków i nie umożliwia zagnieżdżania. Typ danych hstore jest bardzo przydatny w wielu przypadkach, takich jak dane częściowo ustrukturyzowane lub wiersze z wieloma atrybutami, o które rzadko wykonuje się zapytania.

To co na początku musimy zrobić aby móc korzystać z typu danych hstore w PostgreSQL, to włączyć rozszerzenie hstore:

Hstore przechowuje parę: klucz i wartość, w której musimy dodać podwójny cudzysłów wokół pól: klucza i wartości w następujący sposób:

Przykład 1

Aby lepiej zrozumieć zastosowanie typu danych hstore, tworzymy tabelę o nazwie „pracownik” zawierającą typ danych hstore:

Kolumna datatype (typ danych hstore) będzie zawierała dane pracownika, takie jak: stanowisko, wynagrodzenie i numer telefonu. Wstawiamy dane do tabeli pracownik:

Dodajemy również dane kolejnego pracownika:

Nasza tabela wygląda w następujący sposób:

Przykład 2

Pobieranie danych typu hstore za pomocą zapytania:

Jako wynik otrzymujemy:

a) Pobieranie danych dla określonego klucza hstore:Aby pobrać konkretny klucz z kolumny typu hstore, możemy użyć operatora strzałki (->) w następujący sposób:

Jako wynik zapytania otrzymujemy:

b) Użycie klauzuli WHERE z parą klucz:wartość:

Jako wynik otrzymujemy:

UPDATE

Ponieważ w jednym polu możemy mieć wiele wartości, opcja aktualizacji pól hstore Postgres wymaga więcej pracy. Nie zawsze chcemy aktualizować całe pole a jedynie jego część.

Przykład 3

Dodanie kolejnej pary klucz – wartość do istniejącego już wiersza:

Aby dodać kolejną parę klucz-wartość do istniejącego pola hstore w Postgres, możemy użyć operatora || który służy konkatenacji w stringach, a następnie operatora :: do konwersji wyniku na typ hstore.

Wynik:

Modyfikacja pary klucz – wartość w istniejącym wierszu:

Wynik:

DELETE

Przykład 4

Usunięcie pary klucz – wartość:

Wynik:

Zapytania

Zapytanie o wartość określonego klucza – operator ->

Wynik:

Sprawdzenie czy podany klucz istnieje w polu hstore – operator ?

Jeżeli podany klucz istnieje wiersze zostaną wyświetlone:

Użycie funkcji PostgreSQL

Funkcja akeys() pozwala nam pobrać wszystkie klucze przechowywane w kolumnie typu hstore:

Wynik:

Funkcja skeys() pozwala nam pobrać wszystkie klucze przechowywane w kolumnie typu hstore jako zestaw:

Inne funkcje, których możemy użyć to np.: avals() – pozwala na pobranie samych wartości;svals() – pozwala na pobranie samych wartości w formie zestawu;

Zapraszamy na szkolenia PostgreSQLDokumentacja PostgreSQL

Może Cię również zainteresować: