PostgreSQL oferuje użytkownikom bogaty zestaw rodzimych typów danych. Użytkownicy mogą dodawać nowe typy za pomocą polecenia UTWÓRZ TYP. Dzięki temu zapytania są prostsze i bardziej czytelne.
Typy danych w PostgreSQL
PostgreSQL obsługuje następujące typy danych:
- Typy tekstów
- Typy liczbowe
- Daty i godziny
- XML
- JSON
- Boolean
- Bity
- Dane binarne
- Sieć
- Tablice
- Utwórz swój typ danych
- Boolean
- Czasowy
- UUID
- Szyk
- JSON
- Specjalne typy danych do przechowywania adresu sieciowego i danych geometrycznych.
Przeanalizujmy szczegółowo typy danych PostgreSQL
- Typy danych znaków
- Numeryczne typy danych
- Binarne typy danych
- Typ adresu sieciowego
- Typ wyszukiwania tekstowego
- Typy danych daty / godziny
- Typ boolowski
- Geometryczne typy danych
- Wyliczone typy
- Typ zakresu
- Typ UUID
- Typ XML
- Typ JSON
- Pseudo-typy
Typy danych znaków
PostgreSQL obsługuje typy danych znakowych do przechowywania wartości tekstowych. PostgreSQL buduje typy danych znakowych z tych samych struktur wewnętrznych. PostgreSQL oferuje trzy znakowe typy danych: CHAR (n), VARCHAR (n) i TEXT.
Nazwa | Opis |
---|---|
varchar (rzecz.) | Pozwala zadeklarować zmienną długość z ograniczeniem |
Char (n) | O stałej długości, wyściełane |
Tekst | Use może używać tego typu danych do deklarowania zmiennej o nieograniczonej długości |
Numeryczne typy danych
PostgreSQL obsługuje dwa różne typy liczb:
- Liczby całkowite
- Liczb zmiennoprzecinkowych
Nazwa | Rozmiar sklepu | Zasięg |
---|---|---|
smallint | 2 bajty | -32768 do +32767 |
liczba całkowita | 4 bajty | -2147483648 do +2147483647 |
bigint | 8 bajtów | -9223372036854775808 do 9223372036854775807 |
dziesiętny | zmienna | Jeśli zadeklarowałeś, że typ danych dziesiętnych wynosi od 131072 cyfr przed przecinkiem do 16383 cyfr po przecinku |
numeryczny | zmienna | Jeśli zadeklarujesz to jako liczbę, możesz dołączyć liczbę do 131072 cyfr przed kropką dziesiętną do 16383 cyfr po przecinku |
real | 4 bajty | Dokładność do 6 cyfr dziesiętnych |
podwójnie | 8 bajtów | Dokładność do 15 cyfr dziesiętnych |
Binarne typy danych
Ciąg binarny to sekwencja oktetów lub bajtów. Binarne typy danych Postgres są podzielone na dwa sposoby.
- Ciągi binarne pozwalają na przechowywanie kursów o wartości zero
- Oktety niedrukowalne
Ciągi znaków nie zezwalają na zerowe oktety, a także nie zezwalają na żadne inne wartości i sekwencje oktetów, które są nieprawidłowe zgodnie z zasadami kodowania zestawu znaków bazy danych.
Nazwa | Rozmiar pamięci | Opis |
---|---|---|
Bajt | 1 do 4 bajtów plus rozmiar ciągu binarnego | Ciąg binarny o zmiennej długości |
Typ adresu sieciowego
Wiele aplikacji przechowuje informacje sieciowe, takie jak adresy IP użytkowników lub
czujniki. PostgreSQL ma trzy typy natywne, które pomagają zoptymalizować dane sieciowe.
Nazwa | Rozmiar | Opis |
---|---|---|
cydr | 7 lub 19 byes | Sieci IPV4 i IPv6 |
Inet | 7 lub 19 bajtów | Hosty i sieci IPV4 i IPV5 |
macaddr | 6 bajtów | Adresy MAC |
Korzystanie z typów adresów sieciowych ma następujące zalety
- Oszczędność miejsca na dysku
- Sprawdzanie błędów wejściowych
- Funkcje takie jak wyszukiwanie danych według podsieci
Typ wyszukiwania tekstowego
PostgreSQL udostępnia dwa typy danych, które są przeznaczone do obsługi wyszukiwania pełnotekstowego. Wyszukiwanie pełnotekstowe to przeszukiwanie kolekcji dokumentów w języku naturalnym w celu wyszukania tych, które najlepiej pasują do zapytania.
- Wyszukiwanie tekstu Tsvector Typy zmiennych PostgreSQL przedstawiają dokument w formie zoptymalizowanej pod kątem wyszukiwania tekstu
- Wyszukiwanie tekstowe typu zapytania przechowuje słowa kluczowe, które należy wyszukać
Typy danych daty / godziny
Znacznik czasu PostgreSQL oferuje mikrosekundową precyzję zamiast drugiej precyzji. Co więcej, masz również możliwość przechowywania ze strefą czasową lub bez. PostgreSQL na wejściu skonwertuje znacznik czasu ze strefą czasową na UTC i zapisze go.
Wprowadzanie daty i godziny jest akceptowane w różnych formatach, w tym w tradycyjnym Postgresie, ISO 8601. Zgodność z SQL itp.
PostgreSQL obsługuje porządkowanie według dnia / miesiąca / roku. Obsługiwane formaty to DMY, MDY, YMD
Czasowe typy danych
Nazwa | Rozmiar | Zasięg | Rozkład |
---|---|---|---|
Sygnatura czasowa bez strefy czasowej | 8 bajtów | 4713 pne do 294276 ne | 1 mikrosekunda / 14 cyfr |
Sygnatura czasowa ze strefą czasową | 8 bajtów | 4713 pne do 294276 ne | 1 mikrosekunda / 14 cyfr |
data | 4 bajty | 4713 pne do 294276 ne | Pewnego dnia |
Czas bez strefy czasowej | 8 bajtów | 00:00:00 do 24:00:00 | 1 mikrosekunda / 14 cyfr |
Czas ze strefą czasową | 12 bajtów | 00:00:00 + 1459 do 24: 00: 00-1459 | 1 mikrosekunda / 14 cyfr |
Interwał | 12 bajtów | -178000000 do 178000000 lat | 1 mikrosekunda / 14 cyfr |
Przykłady:
Wejście | Opis |
---|---|
2025-09-07 | ISO 8601, 7 września z dowolnym stylem daty (zalecany format) |
7 września 2025 r | 7 września z dowolnym stylem daty |
07.09.2025 | 7 września z MDY, 9 lipca z DMY |
07.09.25 | 7 września 2025 r. Z MDY |
2025-wrzesień-7 | 7 września z dowolnym stylem daty |
7 września 2018 r | 7 września z dowolnym stylem daty |
7 września 25 | 7 września 2025 r. Z YMD |
20250907 | ISO 8601,7 wrzesień 20225 w dowolnym trybie |
2025.250 | rok i dzień roku, w tym przypadku 7 września 2025 r |
J25250 | Data juliańska |
Czas / czas z wejściem strefy czasowej
Wejście | Opis |
---|---|
11: 19: 38.507 11:19:38 11:19 111938 | ISO 8601 |
11:19 | Tak samo jak 11:19 |
23:19 | tak samo jak 23:19 |
23: 19-3 23: 19-03: 00 231900-03 | ISO 8601, to samo co 23:19 EST |
23:19 EST | strefa czasowa określona jako EST, taka sama jak 23:19 EST |
Typ boolowski
Typ danych Boolean może zawierać
- Prawdziwe
- Fałszywy
- zero
wartości.
Użyć bool lub logiczną słowa kluczowego zadeklarować kolumny typu danych Boolean.
Kiedy wstawiasz wartości do kolumny logicznej, Postgre konwertuje wartości, takie jak
- tak
- y
- 1
- t
- prawdziwe
do 1.
Chociaż wartości takie jak
- Nie
- N
- 0
- fa
- Fałszywy
są konwertowane na 0
Podczas wybierania danych wartości są ponownie konwertowane z powrotem na tak, prawda, y itd.
Geometryczne typy danych
Geometryczne typy danych reprezentują dwuwymiarowe obiekty przestrzenne. Pomagają wykonywać operacje takie jak obroty, skalowanie, tłumaczenie itp.
Nazwa | Rozmiar pamięci | Reprezentacja | Opis |
---|---|---|---|
Punkt | 16 bajtów | Wskaż samolot | (x, y) |
Linia | 32 bajty | Nieskończona linia | ((xl.yl). (x2.y2)) |
Lseg | 32 bajty | Segment linii skończonej | ((xl.yl). (x2.y2)) |
Pudełko | 32 bajty | Prostokątne pudełko | ((xl.yl). (x2.y2)) |
Ścieżka | 16n + 16n bajtów | Zamknij i otwórz ścieżkę | ((xl.yl),…) |
Wielokąt | 40 + 16n bajtów | Wielokąt | [(xl.yl)….] |
okrąg | 24 bajty | okrąg | <(xy) .r> (punkt środkowy i promień) |
Wyliczone typy
Wyliczeniowy typ danych PostgreSQL jest przydatny do reprezentowania rzadko zmieniających się informacji, takich jak kod kraju lub identyfikator oddziału. Typ danych wyliczeniowych jest reprezentowany w tabeli z kluczami obcymi w celu zapewnienia integralności danych.
Przykład:
Kolor włosów jest dość statyczny w bazie danych demograficznych
CREATE TYPE hair_color AS ENUM('brown','black','red','grey','blond')
Typ zakresu
Wiele aplikacji biznesowych wymaga danych w zakresach. Zazwyczaj dwie kolumny (na przykład: data rozpoczęcia, data zakończenia) są definiowane w celu uwzględnienia zakresów. Jest to nieefektywne i trudne do utrzymania.
Postgre zbudował następujące typy zakresów
- int4range - Wyświetl zakres liczby całkowitej
- int8range - Wyświetl zakres biginta
- numrange - pokazuje zakres liczbowy
- tstrange - Pomaga wyświetlić sygnaturę czasową bez strefy czasowej
- dziwne - umożliwia wyświetlenie znacznika czasu ze strefą czasową
- zakres dat - zakres dat
Typ UUID
Universally Unique Identify (UUID) to 128-bitowa liczba generowana przez algorytm. Jest bardzo mało prawdopodobne, że ten sam identyfikator zostanie wygenerowany przez inną osobę na świecie przy użyciu tego samego algorytmu. Dlatego w przypadku systemów rozproszonych identyfikatory te są idealnym wyborem, ponieważ zapewniają wyjątkowość w ramach jednej bazy danych. Identyfikator UUID jest zapisywany jako grupa małych cyfr szesnastkowych, z różnymi grupami oddzielonymi myślnikami.
PostgreSQL ma własny typ danych UUID, który zajmuje 16 bajtów pamięci… UUID jest idealnym typem danych dla kluczy głównych.
Przykład:
d5f28c97-b962-43be-9cf8-ca1632182e8e
Postgre akceptuje również alternatywne formy danych wejściowych UUID, takie jak wszystkie wielkie litery, bez myślników, nawiasów klamrowych itp.
Typ XML
PostgreSQL umożliwia przechowywanie danych XML w typie danych, ale jest to nic innego jak rozszerzenie typu danych tekstowych. Ale zaletą jest to, że sprawdza, czy wejściowy XML jest poprawnie sformułowany.
Przykład:
XMLPARSE (DOCUMENT '') Data Type …
Typ JSON
Do przechowywania danych JSON PostgreSQL oferuje 2 typy danych
- JSON
- JSONB
json | Jsonb |
---|---|
Proste rozszerzenie typu danych tekstowych z walidacją JSON | Binarna reprezentacja danych JSON |
Wstawianie jest szybkie, ale pobieranie danych jest stosunkowo wolne. | Wstawianie jest powolne, ale wybierz (pobieranie danych jest szybkie) |
Zapisuje wprowadzone dane dokładnie w taki sam sposób, w jaki zawiera spacje. | Obsługuje indeksowanie. Może zoptymalizować białe znaki, aby przyspieszyć pobieranie. |
Ponowne przetwarzanie po odzyskaniu danych | Nie jest wymagane ponowne przetwarzanie przy pobieraniu danych |
Najczęściej używany typ danych JSON używał nas jsonb, chyba że istnieje jakaś specjalistyczna potrzeba użycia typu danych JSON.
Przykład:
CREATE TABLE employee (id integer NOT NULL,age integer NOT NULL,data jsonb);
INSERT INTO employee VALUES (1, 35, '{"name": "Tom Price", "tags": ["Motivated", "SelfLearner"], "onboareded": true}');
Pseudo-typy
PostgreSQL ma wiele wpisów specjalnego przeznaczenia, nazywanych pseudo typami. Nie możesz używać pseudo-typów jako typów kolumn PostgreSQL. Są używane do deklarowania lub argumentu funkcji lub zwracanego typu.
Każdy z dostępnych pseudo-typów jest pomocny w sytuacjach, gdy dokumentacja zachowania funkcji nie odpowiada prostemu pobieraniu lub zwracaniu wartości określonego typu danych SQL.
Nazwa | Opis |
---|---|
Każdy | Funkcja akceptuje wszystkie typy danych wejściowych. |
Tablica | Funkcja akceptuje dowolny typ danych tablicowych. |
Dowolny element | Funkcja akceptuje dowolny typ danych. |
Dowolny wyliczenie | Funkcja akceptuje dowolny typ danych wyliczeniowych. |
Nonarray | Funkcja akceptuje dowolny typ danych niebędący tablicą. |
Ciąg c | Funkcja akceptuje lub zwraca ciąg znaków w języku C zakończony znakiem null. |
Wewnętrzny | Funkcja wewnętrzna akceptuje lub zwraca wewnętrzny typ danych serwera. |
Language_handler | Zadeklarowano, że zwraca program obsługi języka. |
Rekord | Znajdź funkcję, która zwraca nieokreślony typ wiersza. |
Cyngiel | Funkcja wyzwalacza służy do zwracania wyzwalacza. |
Ważne jest, aby użytkownik korzystający z tej funkcji musiał upewnić się, że funkcja będzie zachowywać się bezpiecznie, gdy jako typ argumentu zostanie użyty pseudo-typ.
Najlepsze rozwiązania dotyczące korzystania z typów danych
- Użyj typu danych „tekst”, chyba że chcesz ograniczyć wprowadzanie
- Nigdy nie używaj „char”.
- Liczby całkowite używają „int”. Używaj biginta tylko wtedy, gdy masz naprawdę duże liczby
- Prawie zawsze używaj „liczb”
- Użyj float w PostgreSQL, jeśli masz źródło danych IEEE 754
Podsumowanie
- PostgreSQL oferuje użytkownikom bogaty zestaw rodzimych typów danych
- PostgreSQL obsługuje typy danych znakowych do przechowywania wartości tekstowych
- PostgreSQL obsługuje dwa różne typy liczb: 1. Liczby całkowite, 2. Liczby zmiennoprzecinkowe
- Ciąg binarny to sekwencja bajtów lub oktetów
- PostgreSQL ma typ adresu sieciowego, który pomaga zoptymalizować przechowywanie danych sieciowych
- Wyszukiwanie tekstowe Struktury danych PostgreSQL są zaprojektowane do obsługi wyszukiwania pełnotekstowego
- Typy danych Data / Godzina PSQL umożliwiają informacje o dacie i godzinie w różnych formatach
- Typy pól typu Boolean Postgres mogą zawierać trzy wartości: 1. Prawda 2. Fałsz 3. Null
- Geometryczne typy danych PostgreSQL reprezentują dwuwymiarowe obiekty przestrzenne
- Wyliczeniowe typy danych w PostgreSQL są przydatne do przedstawiania rzadko zmieniających się informacji, takich jak kod kraju lub identyfikator oddziału
- Universally Unique Identify (UUID) to 128-bitowa liczba generowana przez algorytm
- PostgreSQL ma wiele wpisów specjalnego przeznaczenia, nazywanych pseudo typami
- Najlepszą praktyką jest używanie typu danych „tekst”, chyba że chcesz ograniczyć wprowadzanie