PostgreSQL Typy danych: bajt, numeryczny, znakowy, binarny

PostgreSQL oferuje bogaty zestaw natywnych typów danych dla użytkowników. Użytkownicy mogą dodawać nowe typy za pomocą polecenia CREATE TYPE. Sprawia również, że zapytania są prostsze i bardziej czytelne.

Typy danych w PostgreSQL

PostgreSQL obsługuje następujące typy danych:

  • Typy tekstu
  • Typy numeryczne
  • Daty i godziny
  • XML
  • JSON
  • Boolean
  • Bity
  • Dane binarne
  • Sieć
  • Tablice
  • Utwórz swój typ danych
  • Boolean
  • Temporal
  • UUID
  • Szyk
  • JSON
  • Specjalne typy danych do przechowywania adresu sieciowego i danych geometrycznych.

Pouczmy się PostgreSQL szczegółowo typy danych

Typy danych znaków

PostgreSQL obsługuje znakowe typy danych do przechowywania wartości tekstowych. PostgreSQL buduje znakowe typy danych na podstawie tych samych struktur wewnętrznych. PostgreSQL oferuje trzy znakowe typy danych: CHAR(n), VARCHAR(n) i TEXT.

Imię Opis
varchar(n) Umożliwia zadeklarowanie zmiennej długości z limitem
Znak (n) Stała długość, pusta wyściółka
Tekst Use może użyć tego typu danych do zadeklarowania zmiennej o nieograniczonej długości

Numeryczne typy danych

PostgreSQL obsługuje dwa różne typy liczb:

  • Liczby całkowite
  • Liczb zmiennoprzecinkowych
Imię Rozmiar sklepu łodzie
małyint 2 bajtów -32768 do + 32767
liczba całkowita 4 bajtów -2147483648 do + 2147483647
bigint 8 bajtów -9223372036854775808 do 9223372036854775807
dziesiętny zmienna Jeśli zadeklarowałeś to jako dziesiętny, typ danych ma zakres od 131072 cyfr przed przecinkiem do 16383 cyfr po przecinku
numeryczna zmienna Jeśli zadeklarujesz to jako liczbę, możesz podać liczbę do 131072 cyfr przed przecinkiem do 16383 cyfr po przecinku
real 4 bajtów Dokładność 6 cyfr dziesiętnych
Podwójna 8 bajtów Dokładność 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 umożliwiają przechowywanie kursów o wartości zero
  • Oktety niedrukowalne

Ciągi znaków nie pozwalają na oktety zerowe, a także na inne wartości i sekwencje oktetów, które są nieprawidłowe zgodnie z regułami kodowania zestawu znaków bazy danych.

Imię 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.

Imię Rozmiar Opis
jabłecznik 7 lub 19 bajty IPV4 i IPv6 sieci
Inet 7 lub 19 bajty Hosty i sieci IPV4 i IPV5
makaddr 6 bajtów Adresy MAC

Korzystanie z typów adresów sieciowych ma następujące zalety

  1. Oszczędność miejsca do przechowywania
  2. Sprawdzanie błędów wejściowych
  3. Funkcje takie jak wyszukiwanie danych według podsieci

Typ wyszukiwania tekstowego

PostgreSQL zapewnia dwa typy danych, które są zaprojektowane do obsługi wyszukiwania pełnotekstowego. Wyszukiwanie pełnotekstowe polega na przeszukiwaniu zbioru dokumentów w języku naturalnym w celu znalezienia tych, które najlepiej pasują do zapytania.

  • Wyszukiwanie tekstu wektorowego PostgreSQL typy zmiennych reprezentują dokument w formie zoptymalizowanej pod kątem wyszukiwania tekstowego
  • Wyszukiwanie tekstowe typu zapytania przechowuje słowa kluczowe, które należy przeszukać

Typy danych daty/godziny

PostgreSQL timestamp oferuje precyzję mikrosekundową zamiast drugiej precyzji. Co więcej, masz również możliwość przechowywania ze strefą czasową lub bez. PostgreSQL skonwertuje znacznik czasu ze strefą czasową na UTC na wejściu i zapisze go.

Wprowadzanie daty i godziny jest akceptowane w różnych formatach, w tym w tradycyjnym Postgres, ISO 8601. Kompatybilny z SQL itp.

PostgreSQL obsługuje porządkowanie dnia/miesiąca/roku. Obsługiwane formaty to DMY, MDY, YMD

Tymczasowe typy danych

Imię Rozmiar łodzie Rozkład
Znacznik czasu bez strefy czasowej 8 bajtów 4713 pne do 294276 ne 1 mikrosekunda/14 cyfr
Znacznik czasu ze strefą czasową 8 bajtów 4713 pne do 294276 ne 1 mikrosekunda/14 cyfr
dane 4 bajtów 4713 pne do 294276 ne Pewnego dnia
Czas bez strefy czasowej 8 bajtów 00:00:00 to 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
Przedział 12 bajtów -178000000 do 178000000 lat 1 mikrosekunda/14 cyfr

Przykłady

Wkład Opis
2025-09-07 ISO 8601, 7 września z dowolnym stylem daty (zalecany format)
7 września 2025 r. 7 września w dowolnym stylu daty
9/7/2025 7 września z MDY, 9 lipca z DMY
9/7/25 7 września 2025 r. z MDY
2025-Sep-7 7 września w dowolnym stylu daty
7-wrzesień-2018 7 września w dowolnym stylu daty
7-Sep-25 7 września 2025 r. z YMD
20250907 ISO 8601,7 września 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 wprowadzeniem strefy czasowej

Wkład Opis
11:19:38.507
11:19:38
11:19
111938
ISO 8601
11: 19 AM Tak samo jak o 11:19
11: 19 PM tak samo jak 23:19
23: 19-3
23: 19-03: 00
231900-03
ISO 8601, tak samo jak o 11:19 EST
23: 19 EST strefa czasowa określona jako EST, taka sama jak 11:19 EST

Typ logiczny

Typ danych Boolean może przechowywać

  • Prawdziwy
  • Fałszywy
  • zero

wartości.

Używasz bool or boolean słowo kluczowe służące do zadeklarowania kolumny o typie danych Boolean.

Kiedy wstawisz wartości do kolumny logicznej, Postgre konwertuje wartości takie jak

  • Tak
  • y
  • 1
  • t
  • prawdziwy

do 1.

Chociaż wartości takie jak

  • Nie
  • N
  • 0
  • F
  • Fałszywy

są konwertowane na 0

Podczas wybierania danych wartości są ponownie konwertowane na tak, prawda, y itd.

Geometryczne typy danych

Typy danych geometrycznych reprezentują dwuwymiarowe obiekty przestrzenne. Pomagają wykonywać operacje takie jak obroty, skalowanie, translacje itp.

Imię Rozmiar pamięci Reprezentacja Opis
punkt 16 bajtów Punkt na płaszczyźnie (x, y)
Linia 32 bajtów Nieskończona linia ((xl.yl).(x2.y2))
Lseg 32 bajtów Skończony odcinek linii ((xl.yl).(x2.y2))
Box 32 bajtów Prostokątny Box ((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łe 24 bajtów Okrągłe <(xy).r> (punkt środkowy i promień)

Wyliczone typy

Wyliczone PostgreSQL typ danych jest przydatny do reprezentowania rzadko zmieniających się informacji, takich jak kod kraju lub identyfikator oddziału. Wyliczeniowy typ danych jest reprezentowany w tabeli z kluczami obcymi, aby zapewnić integralność 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')

Wyliczone typy

Typ zakresu

Wiele aplikacji biznesowych wymaga danych w zakresach. Zwykle definiuje się dwie kolumny (przykład: data początkowa, data końcowa) w celu obsługi zakresów. Jest to zarówno nieefektywne, jak i trudne w utrzymaniu.

Postgre zbudował typy zakresów w następujący sposób

  • int4range — Zakres wyświetlania liczby całkowitej
  • int8range — Zakres wyświetlania biginta
  • numrange — Pokazuje zakres liczbowy
  • tstrange — Pomaga wyświetlić znacznik czasu bez strefy czasowej
  • dziwne — umożliwia wyświetlenie znacznika czasu ze strefą czasową
  • zakres dat — zakres dat

Typ UUID

Uniwersalnie unikalne identyfikatory (UUID) to 128-bitowa wielkość 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ą unikalność w ramach jednej bazy danych. Identyfikator UUID zapisywany jest jako grupa małych cyfr w formacie szesnastkowym, rozdzielonych łącznikami.

PostgreSQL ma natywny typ danych UUID, który zajmuje 16 bajtów pamięci. UUID jest idealnym typem danych dla kluczy podstawowych.

Przykład

d5f28c97-b962-43be-9cf8-ca1632182e8e

Postgre akceptuje również alternatywne formy danych wejściowych UUID, takie jak wielkie litery, bez łącznikó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. Zaletą jest jednak to, że sprawdza, czy wejściowy kod XML jest poprawnie sformułowany.

Przykład

XMLPARSE (DOCUMENT '<?xml version="1.0"?><tutorial><chapter>Data Type</chapter><chapter>...</chapter></tutorial>')

Typ JSON

Do przechowywania danych JSON PostgreSQL oferuje 2 typy danych

  1. JSON
  2. JSONB
json Jsonba
Proste rozszerzenie typu danych tekstowych z walidacją JSON Binarna reprezentacja danych JSON
Wstawianie jest szybkie, ale pobieranie danych jest stosunkowo powolne. Wstawianie jest powolne, ale wybierz (pobieranie danych jest szybkie)
Zapisuje wprowadzone dane dokładnie w takiej postaci, w jakiej są, łącznie z białymi znakami. Obsługuje indeksowanie. Może zoptymalizować białe znaki, aby przyspieszyć pobieranie.
Ponowne przetwarzanie przy pobieraniu danych Przy pobieraniu danych nie jest wymagane ponowne przetwarzanie

Najpopularniejszym typem danych JSON był używany przez nas jsonb, chyba że istnieje 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}'); 

Pseudotypy

PostgreSQL zawiera wiele wpisów specjalnego przeznaczenia, zwanych pseudotypami. Nie można używać pseudotypów jako PostgreSQL typy kolumn. Służy do deklarowania argumentu lub typu zwracanego przez funkcję.

Każdy z dostępnych pseudotypów jest pomocny w sytuacjach, gdy dokumentacja zachowania funkcji nie odpowiada prostemu przyjęciu lub zwróceniu wartości określonego Typ danych SQL.

Imię Opis
Każdy Funkcja akceptuje wszystkie typy danych wejściowych.
Tablica Funkcja akceptuje dowolny typ danych tablicowych.
Dowolny element Funkcja akceptuje dowolny typ danych.
Dowolne wyliczenie Funkcja akceptuje dowolny typ danych wyliczeniowych.
Brak układu Funkcja akceptuje dowolny typ danych inny niż tablicowy.
Ciąg c Funkcja akceptuje lub zwraca ciąg C zakończony znakiem null.
Wewnętrzne Funkcja wewnętrzna akceptuje lub zwraca typ danych wewnętrznych serwera.
Obsługa_języka Zadeklarowano zwrócenie procedury 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 upewnił się, że funkcja będzie zachowywać się bezpiecznie, gdy jako argument zostanie użyty pseudotyp.

Najlepsze praktyki przy użyciu typów danych

  • Użyj typu danych „tekst”, chyba że chcesz ograniczyć wprowadzane dane
  • Nigdy nie używaj „char”.
  • Do liczb całkowitych używa się „int”. Używaj bigint tylko wtedy, gdy masz naprawdę duże liczby.
  • Prawie zawsze używaj słowa „numeryczny”.
  • Użyj pływaka PostgreSQL jeśli masz źródło danych IEEE 754

Podsumowanie

  • PostgreSQL oferuje użytkownikom bogaty zestaw natywnych typów danych
  • PostgreSQL obsługuje znakowe typy danych 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 tekstu PostgreSQL Struktury danych są zaprojektowane do obsługi wyszukiwania pełnotekstowego
  • Data/godzina Typy danych PSQL umożliwiają podanie daty i godziny w różnych formatach
  • Typy pól Boolean Postgres mogą przechowywać trzy wartości 1. Prawda 2. Fałsz 3. Null
  • Geometryczne PostgreSQL typy danych reprezentują dwuwymiarowe obiekty przestrzenne
  • Wyliczone typy danych w PostgreSQL jest przydatny do reprezentowania rzadko zmieniających się informacji, takich jak kod kraju lub identyfikator oddziału
  • Uniwersalnie unikalne identyfikatory (UUID) to 128-bitowa wielkość generowana przez algorytm
  • PostgreSQL zawiera wiele wpisów specjalnego przeznaczenia, zwanych pseudotypami
  • Najlepszą praktyką jest używanie typu danych „tekst”, chyba że chcesz ograniczyć wprowadzane dane

Codzienny biuletyn Guru99

Rozpocznij dzień od najnowszych i najważniejszych wiadomości na temat sztucznej inteligencji, dostarczanych już teraz.