Transact-SQL, často zkrácený na T-SQL nebo dokonce TSQL, je proprietární rozšíření SQL společností Microsoft a Sybase. Transact-SQL rozšiřuje standard SQL o další funkce, které nejsou součástí standardu SQL.
Zde je příklad jednoduchého příkazu T-SQL:
CREATE DATABASE Movies;
To je tak jednoduché, jak by mohl příklad T-SQL dostat. Tím se vytvoří nová databáze s názvem Movies
.
T-SQL však poskytuje další možnosti, které mají být zahrnuty do tohoto příkazu, například kde by měly být umístěny databázové soubory, velikost těchto souborů, jaká by měla být jejich maximální velikost a další.
Funkce T-SQL
Některé z funkcí T-SQL zahrnují:
- Procedurální programování
- Místní proměnné
- Různé podpůrné funkce pro zpracování řetězců, zpracování data, matematiku atd.
- Změny na
DELETE
aUPDATE
prohlášení. Zejména umožňují přidání klauzule FROM, která umožňuje zahrnout spojení. - T-SQL má
BULK INSERT
příkaz, který umožňuje importovat datový soubor do databázové tabulky nebo zobrazení v uživatelem zadaném formátu.
Jednou z hlavních výhod výše uvedených rozšíření je, že máte mnohem větší programovatelnost při použití T-SQL vs SQL. Uložené procedury vám například umožňují začlenit programovací logiku do vaší databáze. Uložené proceduře můžete předat jeden nebo více parametrů a uložená procedura vrátí výstup, který se liší v závislosti na hodnotách parametrů.
T-SQL také obsahuje velké množství vestavěných funkcí a také podpůrných funkcí definovaných uživatelem.
Příklad vestavěné funkce
Zde je další základní příklad, tentokrát s použitím jedné z integrovaných funkcí T-SQL:
SELECT GETDATE();
Výsledek:
2018-05-06 23:30:37.003
V tomto případě používáme GETDATE()
T-SQL funkce pro vrácení aktuálního data a času. Toto se používá spolu s SELECT
příkaz, což je běžný příkaz SQL pro vracení dat.
Tuto funkci můžeme také použít jako argument pro jinou funkci. Zde je příklad:
SELECT FORMAT(GETDATE(), 'MMM');
Výsledek:
May
V tomto případě použijeme T-SQL FORMAT()
funkce extrahovat pouze část měsíce z data a prezentovat ji v určitém formátu. Další příklady data/času můžete vidět v Jak formátovat datum a čas na serveru SQL.
Historie T-SQL
Ačkoli je Transact-SQL (a SQL Server) nejběžněji známý jako věc Microsoftu, ve skutečnosti je výsledkem partnerství mezi Microsoftem a Sybase, které začalo v roce 1987. Toto partnerství bylo zrušeno v roce 1994.
V návaznosti na to byl T-SQL nadále podporován databázovými produkty vydanými oběma společnostmi, nicméně každá společnost vyvíjela své databázové produkty svým vlastním směrem. Proto existují určité rozdíly mezi Sybase T-SQL a Microsoft T-SQL.
Nástroje T-SQL a GUI
Transact-SQL je ústředním prvkem SQL Serveru. Většina operací na serveru SQL se provádí pomocí T-SQL. To platí i v případě, že používáte nástroj GUI (jako je SSMS nebo DBeaver) a ve skutečnosti neprovádíte žádné programování. Kdykoli použijete aplikaci k interakci se serverem SQL Server, aplikace v zákulisí použije T-SQL k provedení zadaného úkolu.
Ale SQL Server není jediný systém pro správu databází, který podporuje Transact-SQL. Microsoft Azure SQL Database také podporuje T-SQL. Většina funkcí T-SQL, které aplikace používají, je plně podporována v Microsoft SQL Server i Azure SQL Database (i když existují určité výjimky).
O příkazu GO
Každý, kdo používal T-SQL, pravděpodobně zná GO
příkaz. Toto klíčové slovo je často umístěno na konci dávky příkazů. Například první příklad výše by mohl být také napsán takto:
CREATE DATABASE Movies; GO
Nicméně GO
příkaz není ve skutečnosti součástí Transact-SQL. Ve skutečnosti GO
příkaz nemůže ani zabírat stejný řádek jako příkaz Transact-SQL.
GO
je jedním z příkazů, které rozpozná sqlcmd a osql nástroje a také editor kódu SQL Server Management Studio pro usnadnění čitelnosti a provádění dávek a skriptů. GO
příkaz signalizuje konec dávky příkazů Transact-SQL obslužným programům serveru SQL Server.
Nástroje SQL Server interpretují GO
jako signál, že by měli odeslat aktuální dávku příkazů Transact-SQL do instance SQL Server. Aktuální dávka výpisů se skládá ze všech výpisů zadaných od posledního GO
, nebo od začátku ad hoc relace nebo skriptu, pokud se jedná o první GO
.
Další proprietární rozšíření SQL
Transact-SQL není jediným rozšířením standardu SQL. Různé databázové systémy mají svá vlastní rozšíření. Například Oracle používá proprietární procedurální jazyk zvaný PL/SQL a PostgreSQL používá procedurální jazyk zvaný PL/pgSQL.
Ačkoli proprietární rozšíření SQL mají své výhody (například rozšířenou funkčnost), mají své nevýhody. Jednou z hlavních nevýhod je, že mohou věci zkomplikovat, pokud někdy potřebujete přenést databázi z jednoho systému do druhého. Pokud se například vaše organizace náhle rozhodne, že bude používat Oracle místo SQL Serveru, možná budete muset projít veškerý kód SQL Server a přepsat jej pro Oracle. To také vyžaduje, abyste se rychle seznámili se syntaxí obou systémů.