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 SERIALNumeric / 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.3Typy 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(nigdyFLOAT) - Identyfikatory →
BIGSERIALlubUUID - Daty →
TIMESTAMPTZdla zdarzeń,DATEdla 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
- Czym jest RDBMS i dlaczego tabele mają znaczenie
- Klucze główne i unikatowość
- NULL: trzecia wartość logiczna
- Przegląd typów danych: INT VARCHAR DATE BOOLEAN