PostgreSQL obsługuje typ danych XMLChociaż może to być dla nas bardzo przydatne, wiele razy pojawia się krytyka, ponieważ może to prowadzić do złamania wielu zasad relacyjnych baz danych, takich jak normalizacja, chociaż nie przeszkodziło to we wszystkich sterownikach i silnikach z baz danych High-end zapewnić obsługę tego typu danych.
Ładowanie danych w XML
Zanim zobaczymy, jak to działa z teoretycznego punktu widzenia, zobaczmy przykład, jak możemy załadować pole z tego typu danymi.
WSTAW W web_sessions (session_id, session_state) WARTOŚCI ('robe', 'colorredbackgroundsnoopy' :: xml);Jak widzimy drugie pole do którego wstawiamy to pole XML co oznaczamy umieszczając go :: xml na końcu informacji, które chcemy wstawić.
Odpytywanie XML
Aby zapytać o XML możemy użyć funkcji xścieżka () ponieważ jest to całkiem przydatne do tego celu, pierwszym otrzymanym argumentem jest zapytanie typu XPath, a drugim ciąg znaków zawierający XML, odpowiedzią jest tablica obiektów XML, które spełniają warunki zapytania XPath. Zobaczmy przykład, jak to zrobić, łącząc to z funkcją rozgnieździć () aby pokazać wyniki tak, jakby były wierszami tabeli.
POWIĘKSZAĆ
Rozłóżmy wymienione punkty:
1. Subskrybujemy tablicę, ponieważ XPath zawsze zwraca tablicę, nawet jeśli jest to pojedynczy element, który pojawia się w odpowiedzi na zapytanie.
2. Otrzymujemy pierwiastek tekst zarówno w nazwie, jak i wartości każdego elementu prop.
3. Przechodzimy przez znaczniki,,,,, XML.
Jak widać dość łatwo jest wykonać zapytania w celu uzyskania wartości pól o typie danych XML.
Złożone i niestandardowe typy danych
Rodzaj obiektu złożonego złożony jest specjalnym typem w PostgreSQL ponieważ jest często używany do konstruowania obiektu, a następnie jest powiązany z typem niestandardowym lub jako zwrot funkcji, która musi zwrócić wiele kolumn.
PostgreSQL automatycznie tworzy niestandardowy typ dla wszystkich tabel, w dowolnym celu możemy użyć niestandardowych typów, takich jak te zdefiniowane domyślnie w PostgreSQL, możemy nawet utworzyć tablicę tych typów.
Zobaczmy mały kod na ten temat:
CREATE TABLE user_facts (user_id varchar (30) PRIMARY KEY, fakty census.facts []);Następnie tworzymy rekord:
WIERSZ (86, '25001010206', 2012, 123, NULL) :: census.factsI na koniec wstawiamy go do naszej niestandardowej tabeli:
INSERT INTO user_facts (user_id, facts) VALUES ('szata', ARRAY [ROW (86, '25001010206', 2012, 123, NULL) :: census.facts]);Możemy nawet włączyć więcej danych do naszego typu w następujący sposób, używając konkatenacji:
UPDATE user_facts SET facts = facts || tablica (SELECT F FROM census.facts AS F WHERE fact_type_id = 86) WHERE user_id = 'szata';Następnie wykonując zapytanie widzimy jak wszystko ma sens jak na poniższym obrazku:
POWIĘKSZAĆ
Na tym kończymy ten samouczek dotyczący typów danych XML i niestandardowych typów danych, jak zawsze, warto zalecić przećwiczenie przedstawionych tutaj tematów w ten sposób, aby ta wiedza była jak najświeższa dla Twojej aplikacji.