0Pricing
SQL Academy · Lekcja

Przegląd typów danych: INT VARCHAR DATE BOOLEAN

Poznaj podstawowe typy danych SQL: liczby całkowite, varchar/text, daty i znaczniki czasu, wartości logiczne oraz liczby dziesiętne, a także dowiedz się, jak wybrać właściwy typ dla każdej kolumny.

Przegląd typów danych: INT VARCHAR DATE BOOLEAN to bezpłatna lekcja SQL Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej SQL Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs SQL Academy zawiera 4 lekcji w sumie.

Dlaczego typy mają znaczenie

Każda kolumna ma określony typ. Typ definiuje:

  • Jakie wartości są prawidłowe
  • Ile miejsca zajmuje każdy wiersz
  • Jakie operatory i funkcje można stosować
  • Jak planer wybiera indeksy i złączenia

Typy całkowitoliczbowe

PostgreSQL ma trzy rozmiary typów całkowitoliczbowych:

SMALLINT  -- 2 bytes,  -32768 to 32767
INTEGER   -- 4 bytes,  ±2.1 billion       (alias: INT)
BIGINT    -- 8 bytes,  ±9.2 quintillion

-- Auto-incrementing variants:
SMALLSERIAL  BIGSERIAL  SERIAL

Numeric / Decimal

Do pieniędzy i dokładnych wartości dziesiętnych należy używać NUMERIC(precision, scale) — nigdy FLOAT.

CREATE TABLE invoices (
  id BIGSERIAL PRIMARY KEY,
  amount NUMERIC(12, 2) NOT NULL,   -- up to 10 digits + 2 decimals
  tax_rate NUMERIC(5, 4) NOT NULL   -- 0.0875 = 8.75%
);

Float a Numeric

REAL (4 bajty) i DOUBLE PRECISION (8 bajtów) są niedokładne — zaokrąglają ułamki binarne. Sprawdzają się w nauce, ale są fatalnym wyborem dla pieniędzy.

-- Inexact:
SELECT 0.1::FLOAT + 0.2::FLOAT;   -- 0.30000000000000004

-- Exact:
SELECT 0.1::NUMERIC + 0.2::NUMERIC;  -- 0.3

Typy tekstowe: VARCHAR a TEXT

PostgreSQL ma dwa główne typy tekstowe:

-- VARCHAR(n) — variable-length, max n characters
email VARCHAR(255)

-- TEXT — variable-length, no declared limit
description TEXT

-- In PostgreSQL both have the same performance.
-- VARCHAR(n) just adds a length check.
-- CHAR(n) (fixed-length, blank-padded) — avoid.

Data i czas

Należy używać typów daty i czasu — nigdy nie przechowywać dat jako ciągów znaków:

DATE         -- 2024-03-15
TIME         -- 14:30:00
TIMESTAMP    -- 2024-03-15 14:30:00      (no time zone)
TIMESTAMPTZ  -- 2024-03-15 14:30:00+02   (recommended)
INTERVAL     -- 1 day, 3 hours

-- Prefer TIMESTAMPTZ unless you have a strong reason not to.

Wartości logiczne

BOOLEAN przechowuje wartości TRUE, FALSE lub NULL.

CREATE TABLE tasks (
  id BIGSERIAL PRIMARY KEY,
  done BOOLEAN NOT NULL DEFAULT false
);

SELECT * FROM tasks WHERE done;        -- shorthand for done = true
SELECT * FROM tasks WHERE NOT done;

UUID

Do globalnie unikalnych identyfikatorów:

CREATE TABLE api_keys (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  user_id BIGINT NOT NULL,
  created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

JSON i JSONB

Do dokumentów o częściowo ustrukturyzowanej postaci:

-- JSON   — text, preserves whitespace, no index
-- JSONB  — binary, deduplicated keys, indexable with GIN

CREATE TABLE events (
  id BIGSERIAL PRIMARY KEY,
  payload JSONB NOT NULL
);

Tablice

Kolumny PostgreSQL mogą być tablicami dowolnego typu bazowego:

CREATE TABLE posts (
  id BIGSERIAL PRIMARY KEY,
  title TEXT NOT NULL,
  tags TEXT[] NOT NULL DEFAULT '{}'
);

INSERT INTO posts (title, tags) VALUES
  ('Hello', ARRAY['sql', 'intro']);

SELECT * FROM posts WHERE 'sql' = ANY(tags);

Wybór właściwego typu

Praktyczne reguły:

  • Pieniądze → NUMERIC (nigdy FLOAT)
  • Identyfikatory → BIGSERIAL lub UUID
  • Daty → TIMESTAMPTZ dla zdarzeń, DATE dla dni kalendarzowych
  • Krótkie kody → VARCHAR(n); długi tekst → TEXT
  • Flagi → BOOLEAN

Podsumowanie

Należy wybrać najwęższy typ, który pasuje do danych.

  • Właściwe typy = mniejsze indeksy, lepsze statystyki i mniej błędów
  • NUMERIC do dokładnych wartości dziesiętnych
  • TIMESTAMPTZ do znaczników czasu zdarzeń
  • Należy unikać przechowywania typowanych danych jako ciągów znaków — traci się wtedy walidację i możliwość indeksowania

Szybkie sprawdzenie

Trzeba przechowywać cenę produktu. Jaki typ należy wybrać?

Często zadawane pytania

Czy lekcja „Przegląd typów danych: INT VARCHAR DATE BOOLEAN” jest bezpłatna?

Tak — pełny tekst „Przegląd typów danych: INT VARCHAR DATE BOOLEAN” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu SQL Academy, przejdź na CoddyKit PRO. Kurs SQL Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Przegląd typów danych: INT VARCHAR DATE BOOLEAN”?

Poznaj podstawowe typy danych SQL: liczby całkowite, varchar/text, daty i znaczniki czasu, wartości logiczne oraz liczby dziesiętne, a także dowiedz się, jak wybrać właściwy typ dla każdej kolumny. Ćwiczysz SQL Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć SQL Academy?

Nie wymagamy żadnego doświadczenia. SQL Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Przegląd typów danych: INT VARCHAR DATE BOOLEAN”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji SQL Academy?

Tak. Każda lekcja SQL Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Czym jest RDBMS i dlaczego tabele mają znaczenie
  2. Klucze główne i unikatowość
  3. NULL: trzecia wartość logiczna
  4. Przegląd typów danych: INT VARCHAR DATE BOOLEAN
← Powrót do SQL Academy