Här är en snabb översikt över skillnaden mellan SQL och T-SQL (Transact-SQL). Inte så mycket skillnaderna som sådan, men mer en förklaring av T-SQL och var den sitter i förhållande till SQL.
Om du har gjort någon databasutveckling eller administration är du förmodligen bekant med SQL. SQL, som står för Structured Query Language, är ett standardfrågespråk för att arbeta med databaser. De flesta av de stora relationsdatabashanteringssystemen som MySQL, Oracle, SQL Server, PostgreSQL etc stöder SQL på ett eller annat sätt.
Men även om SQL-standarden ger tydliga specifikationer, tillåter den också databasleverantörer att lägga till sina egna tillägg. Detta gör det möjligt för leverantörer att tillhandahålla extra funktioner och funktionalitet för sina kunder som kanske inte erbjuds av deras konkurrenter.
Det är här T-SQL kommer in.
Vad är Transact-SQL?
Transact-SQL, ofta förkortat till T-SQL eller till och med TSQL, är Microsofts och Sybases egenutvecklade tillägg till SQL. Transact-SQL utvidgar SQL-standarden för att inkludera extra funktioner som inte ingår i SQL-standarden.
Även om Transact-SQL (och SQL Server) är mest känd som en Microsoft-grej, är det faktiskt resultatet av ett partnerskap mellan Microsoft och Sybase som startade 1987. Detta partnerskap upplöstes 1994. Efter detta fortsatte T-SQL att vara med stöd av databasprodukter som släppts av båda företagen utvecklade dock varje företag sina databasprodukter i sin egen riktning. Därför finns det vissa skillnader mellan Sybase T-SQL och Microsoft T-SQL.
Transact-SQL är centralt för SQL Server. De flesta operationer i SQL Server görs med T-SQL. Detta är sant även om du använder ett GUI-verktyg (som SSMS eller DBeaver) och du faktiskt inte gör någon programmering. Varje gång du använder en applikation för att interagera med SQL Server, använder applikationen T-SQL bakom kulisserna för att utföra den angivna uppgiften.
Men SQL Server är inte det enda databashanteringssystemet som stöder Transact-SQL. Microsoft Azure SQL Database stöder också T-SQL. De flesta T-SQL-funktioner som applikationer använder stöds fullt ut i både Microsoft SQL Server och Azure SQL Database (även om det finns några undantag).
T-SQL-funktioner
Några av funktionerna i T-SQL inkluderar:
- Procedurprogrammering
- Lokala variabler
- Olika stödfunktioner för strängbearbetning, datumbearbetning, matematik, etc.
- Ändringar av
DELETE
ochUPDATE
uttalanden. I synnerhet tillåter de att en FROM-sats läggs till, vilket gör att anslutningar kan inkluderas. - T-SQL har en
BULK INSERT
uttalande som låter dig importera en datafil till en databastabell eller vy i ett användarspecificerat format.
En av de främsta fördelarna med ovanstående tillägg är att du har mycket mer programmerbarhet när du använder T-SQL vs SQL. Lagrade procedurer låter dig till exempel införliva programmeringslogik i din databas. Du kan skicka en eller flera parametrar till en lagrad procedur, och den lagrade proceduren returnerar en utdata som varierar beroende på parametrarnas värden.
Om kommandot GO
Alla som har använt T-SQL kommer förmodligen att känna till GO
kommando. Det här nyckelordet placeras ofta i slutet av en sats med uttalanden.
Men GO
kommandot är faktiskt inte en del av Transact-SQL. Faktum är att GO
kommandot kan inte ens uppta samma rad som en Transact-SQL-sats.
GO
är ett av kommandona som känns igen av sqlcmd och osql verktyg, samt SQL Server Management Studio Code Editor för att underlätta läsbarheten och exekveringen av batcher och skript. GO
kommandot signalerar slutet på en sats av Transact-SQL-satser till SQL Server-verktygen.
SQL Server-verktyg tolkar GO
som en signal om att de ska skicka den aktuella batchen av Transact-SQL-satser till en instans av SQL Server. Den aktuella satsen med satser består av alla satser som skrivits in sedan den senaste GO
, eller sedan starten av ad hoc-sessionen eller skriptet om detta är den första GO
.
Andra proprietära SQL-tillägg
Transact-SQL är inte det enda tillägget till SQL-standarden. Olika databassystem har sina egna tillägg. Till exempel använder Oracle ett proprietärt procedurspråk som heter PL/SQL, och PostgreSQL använder ett procedurspråk som heter PL/pgSQL.
Även om proprietära SQL-tillägg har sina fördelar (som utökad funktionalitet), har de sina nackdelar. En stor nackdel är att de kan göra saker svåra om du någonsin behöver porta en databas från ett system till ett annat. Till exempel, om din organisation plötsligt bestämmer sig för att den ska använda Oracle istället för SQL Server, kan du behöva gå igenom all SQL Server-kod och skriva om den för Oracle. Detta kräver också att du kommer igång med syntaxen för båda systemen.