Archív rubriky: SQL návody

T-SQL je jazyk, který se používá k práci s databázemi na platformě MS SQL Server.  V této sekci naleznete řadu článků a návodů na tématiku pro začátečníky. Pokud se chcete T-SQL naučit nebo si chcete něco zopakovat, koukněte na příslušný SQL tutoriál. Snažím se o to, aby každý článek obsahoval i příklad použítí a ukázku kódu

Pro začátečníky – jak se postupně seznámit s T-SQL

Níže najdete základní chronologickou osnovu, kterou bych doporučil následovat pro osvojení SQLka. Při studiu používejte pro doplnění a rozšíření znalostí i jiné zdroje. Pokud se těmito tématy buď zde na webu nebo jinde prokoušete a osvojíte si je, dá vám to dobrý základ pro efektivní práci s databázemi, řešit automatizace, BI, reporting, aplikace a podobně. Můžete položit základy

Před studiem doporučuju nainstalovat (v tomto pořadí) potřebné nástroje abyste si mohli nově nabyté znalosti rovnou zkoušet.

  • SQL Server (Express nebo Developer)
  • SQL Server Management studio
  • AdventureWorks databázi (cvičná databáze microsoftu)

1) Úvod do T-SQL – seznámení, základní orientace

Po prostudování těchto článků se seznámíme se základní syntaxí jazyka T-SQL sestavíme si jednoduché SQL dotazy.

2) Základní SQL klauzule – základní konstrukční prvky SQL dotazu

Po prostudování těchto článků budete umět napsat samostatně jednoduché dotazovací skripty do 1 tabulky

3) Spojování tabulek (FROM) – joinování

Typicky se v relační databázi nepřipojujeme pouze k 1 tabulce, ale několika (v klauzuli FROM). Existuje několik typů spojení mezi tabulkami. Po prostudování těchto článků pochopíte rozdíl mezi jednotlivými typy joinů a budete schopni psát složitější skripty s pomocí spojení více tabulek. V praxi je pochopení a bezchybná volba joinů v různých situacích asi největší problém při osvojení SQL jazyka (přehoupnutí od věčného začátečníka k mírně pokročilému)

  • INNER JOIN – společné záznamy z obou tabulek na základě join kritéria
  • LEFT JOIN – vše z levé tabulky a shoda u pravé tabulky na základě join kritéria
  • RIGHT JOIN – vše z pravé tabulky a shoda z levé tabulky na základě join kritéria
  • FULL JOIN – vše z obou tabulek
  • CROSS JOIN – kartézský join všechny kombinace záznamů v obou tabulkách

4) Seznámení s SQL funkcemi (kategorie SQL funkce)

Po pochopení základní konstrukce jazyka se můžeme podívat, jakým způsobem můžeme s daty pracovat (stejně jako třeba v Excelu) prostřednictvím funkcí. Ty nejčastěji používáme v klauzuli SELECT. Níže pár příkladů těch nejpoužívanějších funkcí, další najdete v příslušné kategorii na webu.

5) DDL (vytváření, mazání, čištění tabulek) a DML (změna záznamů v tabulkách)

Do teď jsme se zabývali tzv. DQL (data query language) – dotazováním. Po pochopení jak se do tabulek dotazovat se můžeme vrhnout do samotného zakládání tabulek a příkazů, které záznamy v tabulce nějakým způsobem mění nebo rovnou mažou.

6) Napojení dat do Excelu nebo reporting platformy

Pokud umíme data v databázi připravit a efektivně se do nich dotazovat, můžeme si výsledek dotazů natáhnout třeba do Excelu nebo Power BI

Optimalizace a zrychlení SQL dotazů – 10 tipů s ukázkou

Optimalizace sql dotazů je věčný boj, který začíná už při návrhu architektury databáze a škálování prostředků serveru. Při správném návrhu architektury se můžeme vyvarovat spoustě výkonových problému v budoucnu. V neposlední řadě výkon skriptů můžeme ovlivnit strukturou SQL dotazů a správně nastavenými indexy. Článek rozdělím na 2 hlavnní části: Jak optimalizovat pomocí SQL Architektury Jak… Čtěte více »

SQL Počet řádků a velikost tabulek v databázi + skript

Jednou za čas je potřeba se podívat na to, jak vypadají DB objekty v databázi s ohledem na velikost tabulek (počet řádků a storage). Jak zkontrolovat velikost tabulek v SQL databázi Pokud objektů v databázi není mnoho, tak můžeme kontrolu provést přímo ve vlastnostech jednotlivých tabulek v poli Data space a index space. Velikost tabulky… Čtěte více »

SQL Hierarchie Díl 4 – Úroveň hierarchie, cesta (Path) + skript

V předešlých dílech tohoto miniseriálu o hierarchiích jsme zapomněli na jednu věc, která se může hodit a tou je způsob jak zmapovat v hierarchii hloubku jednotlivých členů neboli úroveň hierarchie. Stejně tak může být užitečné umět zobrazit Path – cestu jednotlivých členů hierarchie. Vycházet budu opět z prvního dílu o úvodu do parent – child… Čtěte více »

SQL Hierarchie Díl 2 – Rekurzivní dotaz do parent-child hierarchie

V minulém článku jsem popisoval, jak správně založit do sql tabulky hierarchii se zaměstnanci (viz. článek Jak správně vytvořit parent-child strukturu). Nyní bude řeč o tom, jak se do hierarchií dotazovat a jak s nimi pracovat. Můžete na to jít bláznivými skripty nebo od lesa. Způsob od lesa zahrnuje rekurzivní dotaz. Rekurzivní dotaz na hierarchie… Čtěte více »

SQL Hierarchie Díl 1 – jak správně vytvořit parent-child strukturu v tabulce?

Někdy potřebujeme v SQL vytvořit tabulku, která obsahuje hierarchii. Hierarchie je struktura (někdy se označuje jako parent-child hierarchie), která obsahuje závislosti mezi jednotlivými členy. Můžeme si to představit jako organizaci ve firmě. Firma má zaměstnance a ti mají svého nadřízeného. Nadřízení zaměstnanci mají opět svého nadřízeného a takto můžeme pokračovat až k CEO firmy, který… Čtěte více »

SQL Automatická oprava indexů v SQL Server + skript

V minulém článku (viz. Fragmentace indexů) jsem popisoval, jak zjistit fragmentaci indexů přes skript využívající systémové tabulky. Podle doporučení Microsoftu bychom měli indexy s fragmentací mezi 5 – 30 % reorganizovat (REORGANIZE) a indexy nad 30 % rebuildovat (REBUILD). Využijeme zde skript z minulého článku a vytvoříme automatický skript. Oprava sql indexů provedená tímto způsobem je… Čtěte více »

SQL # Tempová tabulka – Rozdíl mezi # a ## temp tabulkou

Tempová tabulka s hashtagem # nebo ## je dočasná tabulka, která je uložena v systémové databázi tempdb. Tabulka existuje pouze po dobu, po kterou je otevřena user session ID. Rozeznáváme 2 typy tempových tabulek: Lokální # tempová tabulka – je přístupná pouze v rámci dané session, tzn vidí ji pouze uživatel vykonávající skript Globální ## tempová… Čtěte více »

SQL GO separátor – Vysvětlení příkazu a účelu GO

Možná jste si všimli, že se při generování skriptů v SQL Server používá v syntaxi příkaz nebo lépe řečeno separátor GO. Tento separátor se používá k oddělení dávek v rámci skriptu. Syntaxe, která se nachází v separátoru, je realizována v rámci jednoho exekučního plánu a až poté je realizována další dávka. Příklad na separátor GO… Čtěte více »

SQL OPENJSON funkce – Jak parsovat JSON soubory?

Jedna z novinek, která přišla v nedávných SQL Server verzích je nativní podpora pro JSON formáty. Tato novinka přišla s SQL verzí 2016 (psal jsem o tom v tomto článku). JSON soubor je strukturovaný zápis dat pomocí jednoduché notace (podobně jako např. XML). Podívejme se blíže na novou funkci – OPENJSON. Příklad na SQL funkci… Čtěte více »

SQL příkaz BULK INSERT – import dat ze souboru

V minulém článku jsem popisoval jak funguje bcp utilita, která slouží k import a exportu dat nad SQL Server. Příkaz BULK INSERT funguje na podobném principu a jeho prostřednictvím můžeme provádět importy ze souboru a definovat oddělovače. Syntaxe příkazu BULK INSERT BULK INSERT databaze.schema.tabulka FROM‘zdrojovy soubor’ WITH ( FIELDTERMINATOR = ‘<oddělovač sloupců>’, ROWTERMINATOR = ‘<oddělovač… Čtěte více »