Typy danych PostgreSQL: Znak - Numeryczne - Binarny - Boolean

Spisie treści:

Anonim

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

  1. Oszczędność miejsca na dysku
  2. Sprawdzanie błędów wejściowych
  3. 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

  1. JSON
  2. 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