Category Archives: SQL tutorial

Datový skladT-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 tutoriálů na tématiku TSQL. Pokud se chcete SQL naučit nebo si chcete jen připomenout jak nějaká SQL funkce funguje, koukněte na příslušný SQL tutorial. Snažím se o to, aby každý článek obsahoval i příklad použítí a ukázku kódu… Mapa článků v rubrice dle abecedy »

SQL, SSRS | Jak vytvořit kalkulačku pro splátkový kalendář v SQL Server – Včetně reportu s parametry

V poslední době jsem věnoval spoustu času finanční matematice v Excelu. Zkusím toho trošku využít a přetočím téma z Excelu do SQL Serveru. Třeba někdo uvažuje o tom, že si udělá aplikaci pro výpočet splátkového kalendáře. Výsledkem mého počínání bude SQL procedura [Get_Amortization_schedule], která přijímá parametry @Loan_Value, @Loan_Term_Years, @Interest_rate,  @Payment_frequency. Tato procedura vrací tabulku =>… Read More »

SQL Dotazy – Nejčastější chyby začátečníků v SQL příkazech při dotazování

Články pro začátečníky zde na webu mají docela velký úspěch a návštěvnost a proto jsem se rozhodl na ně navázat. I ten nejlepší profík v jakémkoliv oboru někdy začínal a ze začátku dělal chyby. S úplnými základy SQL (není potřeba mít předchozí znalosti) se můžete seznámit v článcích: Základní SQL dotazy Základy SQL – Nejpoužívanější… Read More »

SQL Export tabulky ze SQL Serveru do Excelu

V jednom z předchozích článků jsme zkoušeli, jak se dají dostat data z Excelu do SQL tabulky (Import Excelu do SQL databáze). Nyní si ukážeme jak udělat opak – tedy chceme dostat data z SQL databáze do Excelu. Obecně tento postup téměř nevyužívám, protože při exportu do excelu (ale i z Excelu) je poměrně velké… Read More »

SQL THROW zavolání výjimky – alternativa k RAISERROR a rozdíly

Před časem jsem zde na webu zveřejnil článek o RAISERROR příkazu, který vyvolá exception s tím, že jsme schopni přes severity (závažnost) ovlivnit, jestli skript bude nebo nebude pokračovat dále. Příkaz THROW je alternativní příkaz, který byl poprvé uveden v rámci SQL Server 2012. Syntaxe THROW Syntaxe THROW je v porovnání s RAISERROR jednodušší. Pro… Read More »

SQL RAISERROR – Jak zavolat ve skriptu error a přerušit skript

V určitých situacích potřebujeme uvnitř SQL skriptu zavolat chybu a skript přerušit. Typickým případe je třeba nesplnění nějakého data quality checku nebo potřeba zavilat příkaz uvnitř BEGIN /END TRY BEGIN/END CATCH konstrukce. V podobných případech můžeme použít příkaz RAISERROR nebo novější příkaz THROW. V tomto článku se podíváme na první zmíněný příkaz. Příkaz THROW je… Read More »

SQL Přehledně zformátovaný kód – Chováme se ke kolegům zodpovědně!

Každý ví, že by to měl dělat, ale málokdo to skutečně dělá. Řeč je formátování kódu a jeho přehlednosti. Zejména ve větších týmech dokážou pravidla ohledně formátování zjednodušit a zefektivnit práci. Mnohdy i o několik desítek procent/mnoho man days v případě revizí/úprav kódu a refaktoringu kódu. Proč je správně naformátovaný kód důležitý Každý kód (nejen… Read More »

SQL Synonym – alternativní název objektu v databázi

SQL Synonym je příkaz, který je v SQL Server již od verze SQL Server 2005. Tato funkce slouží k tomu, že můžeme vytvořit referenci (alternativní jméno) na objekt v jeho kompletní cestě – four part name, tedy [Server].[Databáze].[schéma].[objekt]. To je velmi pohodlné, protože nemusíme tolik psát a je to i výhodné pokud pracujeme v databázi,… Read More »

SQL Seznam tabulek bez primárního klíče – skript

Tabulce bez clusterovaného indexu se říká heap (hromada), protože je to jen hromada neuspořádaných dat. Naopak tabulka s clusterovaným indexem je lépe strukturovaná do balanced tree. Primární klíč je sám o sobě clusterovaným indexem a měla by ho mít každá tabulka. Tabulka uspořádaná do balanced tree daleko lépe v rámci datového modelu performuje při dotazech.… Read More »

SQL Seznam sloupců s určitým datovým typem – INFORMATION_SCHEMA.COLUMNS

Denním chlebem db admina je sledovat v jaké kondici se nachází jeho databáze a SQL Server instance. Často je v rámci politiky stanoveno, že některé sloupce musí mít určitý datový typ – například že se nesmí z určitých důvodů používat (n)varchar (max) a potřebujeme získat seznam sloupců a datové typy, které se v naší databázi… Read More »

SQL Datum – Dnešní datum, číslo týdne, měsíce a další skripty

Operace nad datumovými datovými typy jsou hodně frekventované a často potřebujeme pomocí SQL funkcí získat datum nebo nějakou jinou informaci, která z datumu vychází – například číslo týdne, měsíce, roku, posledního dne v měsíci a podobně. Dnešní datum – GETDATE(), SYSDATETIME() Dnešní datum a čas k okamžiku realizace dotazu můžeme získat dvěma způsoby. Prvním je… Read More »

SQL Chyba – Conversion failed when converting the varchar value to data type int

Chybu Conversion failed when converting the varchar value to data type int vypíše SQL Server v momentě, kdy se snažíme hodnotu, která je uložena jako datový typ varchar (text) konvertovat na datový typ INTEGER. To nemusí být problém pokud máme jako varchar uložena čísla, ale problém nastane pokud se nám mezi tato čísla zamíchá nějaký text. Pokud… Read More »

SQL Duplikace hodnot v tabulce s příkladem – Jak vypsat seznam duplicitních hodnot?

V některých situacích si potřebujeme udělat přehled o tom, jaká data se nacházejí v tabulce. Nebo si třeba chceme zkontrolovat jestli se v tabulce nenachází duplikace hodnot, které tam nechceme. Jak vypsat seznam takových duplicitních hodnot? Jak zjistit duplikaci řádků v tabulce? Úlohu budu demonstrovat na jednoduchém příkladu. Mějme tabulku se zákazníky, která se jmenuje… Read More »

SQL IDENTITY (Auto increment) – Automatické zvýšení hodnoty, popis argumentů příkazu

IDENTITY je v SQL Server vlastnost atributu (sloupce), která umožňuje automatické číslování záznamů, které jsou vkládány do tabulky. Tuto vlastnost lze využít na číselné datové typy. Typické využítí je pro identifikátory a primární klíče. K automatickému číslování lze využít také jiných možností, např SEQUENCE. Syntaxe IDENTITY Identity připojujeme jako vlastnost sloupce např. při založení tabulky… Read More »

DBCC (Database console commands) – Velký přehled

DBCC je zkratka pro database console commands, kdy jsou příkazy prováděné nad určitou databází. Sada DBCC příkazů umožňuje vykonávat určité administrační operace nebo dotazy nad databázemi formou skriptování místo používání grafického rozhraní management studia. Pro exekuci těchto příkazů musíte mít většinou velmi silnou roli (sysadmin, serveradmin, db_owner, atp). Příkazy se dělí do několika skupin: Údržba… Read More »

SQL Schema – Užitečné skripty

Schéma je prostor (kontejner), který sdružuje databázové objekty – tabulky, pohledy, procedury, atd. Primárním důvodem pro zakládání schémat je logické oddělení určitých objektů od jiných a možnost upravovat přístupová práva pro jednotlivá schémata uživatelům. CREATE a DROP SQL Schema 1) Vytvoření SQL schéma: CREATE SCHEMA trzby; 2) Založení SQL schématu s ověřením existence: Pokud chceme… Read More »

SQL CONCAT_WS – spojení textových řetězců se separátorem

Jednou z novinek ve verzi SQL Server 2017 je nasazení nové funkce CONCAT_WS. Funkce dělá to samé jako CONCAT (viz velký článek o string funkcích), ale narozdíl od ní umožňuje zadat v prvním argumentu separátor – znak, kterým jsou jednotlivé stringy odděleny. Typickým využitím funkce může být generování csv souborů. Syntaxe CONCAT_WS CONCAT_WS ( separátor, argument1,… Read More »

SQL TRIM, LTRIM, RTRIM funkce – očištění mezer z textu

Když se pár chytrých hlav z Microsoftu dá dohromady, může z toho vzniknout nějaké to vylepšení :). Jedním z těchto vylepšení, které přišlo s edici SQL Server 2017 je funkce TRIM. Tato funkce umožňuje na obou stranách nějakého textu (stringu) odstranit mezery. Edice před SQL Server 2017 obsahovaly pouze funkce LTRIM A RTRIM Dlouhodou dobu… Read More »

SQL Server edice a verze – Jak jednoduše zjistit verzi a edici SQL Server

Způsobů jak zjistit verzi, na které běží SQL Server instance vč. edice je více. Jedním ze způsobů je zobrazit si vlastnosti (properities) nad SQL Server instancí. Tam uvidíme identifikátor verze. Jak z čísla poznat verzi SQL Serveru? Moje verze SQL serveru viz screenshot je 14.0.2002.14. Důležité je první předčíslí, které udává verzi, která je v… Read More »

SQL STRING_AGG – spojení řádků do jedné hodnoty (concat string)

Nedávno jsem řešil úlohu, když jsem potřeboval v tabulce spojit řádky v nějaké tabulce do 1 string hodnoty. To nebylo u SQL Server ještě nedávno úplně jednoduché, protože narozdíl od třeba mysql neobsahoval speciální funkci k tomu určenou (muselo se na to jít přes příkaz FOR XML PATH). V SQL Server 2017 byla ale nasazena… Read More »

SQL XML – Základy XML – Struktura, tagy, elementy a atributy (Díl 2.)

Pokračujeme v sérii článků věnované práci se XML v prostředí SQL Server. V tomto článku shrnu základy XML (Extensible Markup Language) jako předpoklad pro pokračování v dalších dílech. XML je velmi jednoduché na pochopení takže se není čeho bát. Zde se tedy dozvíte: co je to XML a k čemu slouží jak vypadá XML dokument a… Read More »