Datové typy

Každý sloupec tabulky STRICT má jeden z pěti typů:

  • INTEGER (nebo INT) – celá čísla: ceny v celých korunách, počty kusů, ID, roky.
  • REAL – desetinná čísla, třeba 4.25 nebo 1.5. V SQL se píšou s desetinnou tečkou, ne s čárkou.
  • TEXT – text libovolné délky: jména, e-maily, komentáře.
  • BLOB – syrové bajty, třeba obrázek nebo jiný soubor, uložené tak, jak jsou. Budete ho potřebovat jen zřídka.
  • ANY – jakákoli hodnota, jako v tabulce bez STRICT. Použijte ho, jen když sloupec opravdu musí obsahovat hodnoty různých druhů.

Typ pro datum SQLite nemá. Datum se ukládá jako TEXT ve tvaru 'RRRR-MM-DD', jako ve sloupcích vydano a datum obchodu. Proč, to víte z dřívějších lekcí: data v tomto tvaru se správně řadí i porovnávají a rozumí jim funkce jako strftime() a date(). Datum s časem se píše jako '2025-11-28 14:30:00'.

Nemá ani typ pro pravdu a nepravdu. Sloupec typu ano/ne je INTEGER s 1 pro ano a 0 pro ne a dotaz se ptá WHERE pouzito = 1 nebo WHERE pouzito = 0. Dárkové karty by obchod mohl ukládat takhle:

CREATE TABLE darkove_karty (
    kod TEXT,
    castka INTEGER,
    prodano TEXT,
    pouzito INTEGER
) STRICT;

INSERT INTO darkove_karty (kod, castka, prodano, pouzito)
VALUES ('DAR-7Q2X', 500, '2025-12-01', 1),
       ('DAR-K9LM', 1000, '2025-12-18', 0),
       ('DAR-3RTP', 500, '2025-12-21', 0);

SELECT kod, castka, prodano
FROM darkove_karty
WHERE pouzito = 0;
kodcastkaprodano
DAR-K9LM10002025-12-18
DAR-3RTP5002025-12-21

Proč je castka typu INTEGER, a ne REAL? Dárkové karty jsou stejně jako ceny obchodu v celých korunách. A když obchod potřebuje haléře, často je ukládá také jako celé číslo: 99,90 Kč jako 9990 haléřů. Desetinná čísla nejsou v počítači přesná (0.1 + 0.2 je o maličko víc než 0.3) a u peněz záleží na každém haléři. REAL se hodí pro hodnoty, které se spíš měří, než počítají na kusy: průměrné hodnocení, odehrané hodiny, hmotnost. Sloupec typu REAL udělá z celého čísla desetinné, takže 3 se vrátí jako 3.0.

Jiné databáze mají typů víc a potkáte je v jiných kurzech i v práci:

  • VARCHAR(n) – text o nejvýš n znacích, třeba VARCHAR(100) pro jméno.
  • DATE, TIME, TIMESTAMP – data a časy.
  • BOOLEAN – TRUE (pravda) nebo FALSE (nepravda).
  • DECIMAL(p, s) – přesná desetinná čísla, třeba DECIMAL(10, 2) pro částky s haléři.

Tabulka STRICT v SQLite přijme jen pět typů uvedených výše (a INT); jakýkoli jiný typ je chyba:

CREATE TABLE darkove_karty (
    kod VARCHAR(20),
    castka INTEGER
) STRICT;
Error on line 1: unknown datatype for darkove_karty.kod: "VARCHAR(20)"

V SQLite tedy pište TEXT pro text, data a časy, INTEGER pro celá čísla a hodnoty ano/ne a REAL pro desetinná čísla.

Typická chyba: datum v jiném tvaru, třeba '28.11.2025'. Je to text, takže ho databáze bez chyby uloží, ale neřadí se jako datum ('28.11.2025' je před '30.01.2024') a funkce pro data pro něj vrátí NULL. Data pište vždycky jako 'RRRR-MM-DD'.

Pokyny

Obchod pořádá pro hráče akce. Vytvořte tabulku akce (STRICT) s těmito čtyřmi sloupci v tomto pořadí, každý se správným typem:

  • nazev – název akce,
  • zacatek – den, kdy se koná,
  • delka – jak dlouho trvá, v hodinách (může to být třeba 1,5),
  • online – jestli je online (ano, nebo ne).

Vložte tyto čtyři akce a pak ukažte všechny sloupce všech akcí seřazené podle data:

  • Retro večer, v obchodě 30. ledna 2026, na 2,5 hodiny,
  • Logický maraton, online 21. února 2026, na 6 hodin,
  • Speedrunový pohár, online 14. března 2026, na 3 hodiny,
  • Křest nové hry, v obchodě 2. dubna 2026, na 1,5 hodiny.

Výsledek:

nazevzacatekdelkaonline
Retro večer2026-01-302.50
Logický maraton2026-02-216.01
Speedrunový pohár2026-03-143.01
Křest nové hry2026-04-021.50

Přidejte dotaz, který ukáže název a datum akcí, které jsou online, seřazené podle data:

nazevzacatek
Logický maraton2026-02-21
Speedrunový pohár2026-03-14

Začněte programovat zdarma

Registrací souhlasíte s provozními podmínkami a zásadami ochrany osobních údajů.

Nebo se registrujte pomocí:

2/10