1. SQL (Structured Query Language)

    Článek: AN0002377Aktualizováno:: 16.09.2021

    SQL (Structured Query Language) je  de facto standardem pro práci se strukturovanými daty. Používá se v relačních databázích pro čtení a zápis dat z/do databáze a zároveň se používá pro definici vlastních databázových objektů (databázová struktura). Více informací k jazyku SQL doporučujeme získat na Wikipedii a ve w3schools.

    Podívejme se na pár příkladů.

    Mějme tabulku objednávek, která se nazývá Objednavky.

    Id Cislo_obj Castka Mena Datum Dodavatel
    1 4200000353 20.000 CZK 1.10.2018 2
    2 4200000354 5.000 EUR 3.10.2018 3
    3 4200000355 2.100 CZK 29.10.2018 3
    4 4200000356 10.500 CZK 3.11.2018 3

    Provedeme výběr tří sloupců z tabulky.

    SELECT Cislo_obj, Castka, Mena
    FROM Objednavky

    Uvedený dotaz nám vrátí tyto záznamy.

    Cislo_obj Castka Mena
    4200000353 20.000 CZK
    4200000354 5.000 EUR
    4200000355 2.100 CZK
    4200000356 10.500 CZK

    Nyní uvažujme další tabulku s údaji o dodavatelích, která se nazývá Dodavatelé. Data máme v různých tabulkách z důvodu normalizace, která nám zajistí integritu dat. V tabulce objednávek nechceme opakovat u každé objednávky ty samé údaje o dodavatelích a navíc riskovat, že u různých objednávek na stejného dodavatele uvedeme různé informace o dodavateli. U objednávky tedy uvedeme pouze odkaz na dodavatele (jeho Id) a veškeré informace o dodavateli budou uloženy pouze na jednom místě - v jednom řádku tabulky dodavatelů.

    Id Nazev Adresa Komodita Segmentace
    1 Fastcom a.s. Na Bělidle 35, Praha 5, 150 00 IT A
    2 TOP Catering, s.r.o. Na Pankráci 109, Praha 4, 140 00 Catering B
    3 SoftFusion s.r.o. Pobřežní 37, Praha 8, 180 00 IT B
    4 Paperless a.s. Sokolovská 89, Praha 8, 180 00 Consulting B

    Výše uvedený příklad doplníme o data z této další tabulky, která je s první tabulkou propojena. Všimněte si, že jsme tabulkám dali aliasy obj a dod, které pak můžeme použít. Vidíme také, že tabulka Objednávky se ve sloupci Dodavatel odkazuje na tabulku Dodavatelů. Hodnoty ve sloupci Dodavatel (v tabulce Objednávky) odpovídají hodnotám ve sloupci Id (v tabulce Dodavatelé). To nám umožní data propojit a získat přehled kombinující data z obou tabulek.

    SELECT obj.cislo_obj, obj.castka, obj.mena, dod.nazev
    FROM objednavky obj
    LEFT JOIN dodavatele dod ON obj.dodavatel = dod.id

    Všiměte si, že v dotazu jsme uvedli objednavky a dodavatele místo Objednavky a Dodavatele. Je to v pořádku, protože SQL není senzitivní na (nerozlišuje) malé a velké písmo v názvech objektů (tabulek a sloupců).

    Uvedený dotaz nám vrátí tyto záznamy.

    cislo_obj castka mena dodavatel
    4200000353 20.000 CZK TOP Catering, s.r.o.
    4200000354 5.000 EUR SoftFusion s.r.o.
    4200000355 2.100 CZK SoftFusion s.r.o.
    4200000356 10.500 CZK SoftFusion s.r.o.

    Nyní budeme chtít vybrat pouze objednávky v CZK. Data proto omezíme pomocí klauzule WHERE.

    SELECT obj.cislo_obj AS Cislo_objednavky, obj.castka AS Castka, obj.mena AS Mena, dod.nazev AS Dodavatel
    FROM objednavky obj
    LEFT JOIN dodavatele dod ON obj.dodavatel = dod.id
    WHERE obj.mena = 'CZK'

    Text CZK jsme v SQL uvedli v uvozovkách, aby databázový stroj poznal, že jde o hledaný řetězec a ne název nějakého objektu. Za klíčovým slovem AS jsme uvedli název sloupce, jak nám ho má databázový stroj zobrazit.

    Uvedený dotaz nám vrátí tyto záznamy.

    Cislo_objednavky Castka Mena Dodavatel
    4200000353 20.000 CZK TOP Catering, s.r.o.
    4200000355 2.100 CZK SoftFusion s.r.o.
    4200000356 10.500 CZK SoftFusion s.r.o.

    V následujícím příkladu budeme chtít zobrazit souhrn všech objednávek u všech dodavatelů a rozlišit měnu. Budeme tedy chtít zobrazit seznam dodavatelů a celkou sumu objednávek, které jsme na ně vystavili, členěnou podle měny.

    SELECT dod.nazev AS Název, obj.mena AS Mena, Sum (obj.castka) AS Celkova_castka
    FROM dodavatele dod
    LEFT JOIN objednavky obj ON obj.dodavatel = dod.id
    GROUP BY dod.nazev, obj.mena

    Všiměte si, že jsme nyní vyhledávání zahájili v tabulce dodavatelů a k ní připojili údaje z tabulky objednávek. Kdybychom klauzule FROM a LEFT JOIN ponechali jako v předchozím příkladě, výsledky by neobsahovaly údaje o dodavatelích, kteří žádnou objednávku nemají.

    Název Mena Celkova_castka
    Fastcom a.s.    
    TOP Catering, s.r.o. CZK 20.000
    SoftFusion s.r.o. EUR 5.000
    SoftFusion s.r.o. CZK 12.600
    Paperless a.s.    

    V ObjectGears máte možnost pracovat s SQL v dotazech nebo ve skriptu (např. pro přímý zápis do databáze). Ukázky použití SQL v ObjectGears najdete v příkladech.

    Vysvětlení použitých pojmů:

    Databázový stroj - Software, který představuje systém řízení báze dat.

    Databáze - Systém uspořádáných dat ve formě záznamů.

    Tabulka - Struktura obsahující záznamy. Každému záznamu odpovídá jeden řádek. Každý sloupec obsahuje určitou vlastnost záznamu.

    Select - Klauzule jazyka SQL definující, jaká data se mají z tabulek vybrat (zobrazit).

    Join - Klauzule jazyka SQL definující, jak se mají při našem zpracování propojit data z více tabulek mezi sebou.

×