Transact-SQL, vaak afgekort tot T-SQL of zelfs TSQL, is de eigen extensie van Microsoft en Sybase op SQL. Transact-SQL breidt de SQL-standaard uit met extra functies die niet zijn opgenomen in de SQL-standaard.
Hier is een voorbeeld van een eenvoudig T-SQL-statement:
CREATE DATABASE Movies;
Dit is zo eenvoudig als een T-SQL-voorbeeld zou kunnen krijgen. Dit creëert een nieuwe database met de naam Movies
.
T-SQL voorziet echter in andere opties die in deze verklaring moeten worden opgenomen, zoals waar de databasebestanden zich moeten bevinden, de grootte van die bestanden, wat hun maximale grootte zou moeten zijn en meer.
T-SQL-functies
Enkele van de functies van T-SQL zijn:
- Procedureel programmeren
- Lokale variabelen
- Verschillende ondersteuningsfuncties voor stringverwerking, datumverwerking, wiskunde, enz.
- Wijzigingen in de
DELETE
enUPDATE
verklaringen. Ze laten met name toe een FROM-clausule toe te voegen, waardoor joins kunnen worden opgenomen. - T-SQL heeft een
BULK INSERT
statement waarmee u een gegevensbestand in een databasetabel of weergave in een door de gebruiker gespecificeerd formaat kunt importeren.
Een van de belangrijkste voordelen van de bovenstaande extensies is dat je veel meer programmeerbaarheid hebt bij het gebruik van T-SQL versus SQL. Met opgeslagen procedures kunt u bijvoorbeeld programmeerlogica in uw database opnemen. U kunt een of meer parameters doorgeven aan een opgeslagen procedure, en de opgeslagen procedure retourneert een uitvoer die varieert afhankelijk van de waarden van de parameters.
T-SQL bevat ook een groot aantal ingebouwde functies en ondersteunt door de gebruiker gedefinieerde functies.
Een voorbeeld van een ingebouwde functie
Hier is nog een eenvoudig voorbeeld, dit keer met een van de ingebouwde functies van T-SQL:
SELECT GETDATE();
Resultaat:
2018-05-06 23:30:37.003
In dit geval gebruiken we T-SQL's GETDATE()
functie om de huidige datum en tijd te retourneren. Dit wordt gebruikt samen met de SELECT
statement, een veelgebruikte SQL-statement voor het retourneren van gegevens.
We kunnen die functie ook gebruiken als argument voor een andere functie. Hier is een voorbeeld:
SELECT FORMAT(GETDATE(), 'MMM');
Resultaat:
May
In dit geval gebruiken we de T-SQL FORMAT()
functie om alleen het maandgedeelte van de datum te extraheren en in een bepaald formaat te presenteren. U kunt meer datum/tijd-voorbeelden zien op Hoe de datum en tijd in SQL Server te formatteren.
Geschiedenis van T-SQL
Hoewel Transact-SQL (en SQL Server) het meest bekend staat als een Microsoft-ding, is het eigenlijk het resultaat van een samenwerking tussen Microsoft en Sybase die begon in 1987. Deze samenwerking werd in 1994 ontbonden.
Hierna bleef T-SQL ondersteund worden door databaseproducten die door beide bedrijven werden uitgebracht, maar elk bedrijf ontwikkelde zijn databaseproducten in zijn eigen richting. Daarom zijn er enkele verschillen tussen Sybase T-SQL en Microsoft T-SQL.
T-SQL en GUI-tools
Transact-SQL staat centraal in SQL Server. De meeste bewerkingen in SQL Server worden uitgevoerd met T-SQL. Dit geldt zelfs als u een GUI-tool gebruikt (zoals SSMS of DBeaver) en u niet echt programmeert. Elke keer dat u een applicatie gebruikt om te communiceren met SQL Server, gebruikt de applicatie T-SQL achter de schermen om de gespecificeerde taak uit te voeren.
Maar SQL Server is niet het enige databasebeheersysteem dat Transact-SQL ondersteunt. Microsoft Azure SQL Database ondersteunt ook T-SQL. De meeste T-SQL-functies die toepassingen gebruiken, worden volledig ondersteund in zowel Microsoft SQL Server als Azure SQL Database (hoewel er enkele uitzonderingen zijn).
Over het GO-commando
Iedereen die T-SQL heeft gebruikt, zal waarschijnlijk bekend zijn met de GO
opdracht. Dit trefwoord wordt vaak aan het einde van een reeks uitspraken geplaatst. Het eerste voorbeeld hierboven kan bijvoorbeeld ook als volgt worden geschreven:
CREATE DATABASE Movies; GO
Echter, de GO
commando is eigenlijk geen onderdeel van Transact-SQL. In feite is de GO
commando kan zelfs niet dezelfde regel bezetten als een Transact-SQL-statement.
GO
is een van de opdrachten die worden herkend door de sqlcmd en osql hulpprogramma's, evenals SQL Server Management Studio Code Editor om de leesbaarheid en uitvoering van batches en scripts te vergemakkelijken. De GO
commando signaleert het einde van een batch Transact-SQL-instructies aan de SQL Server-hulpprogramma's.
SQL Server-hulpprogramma's interpreteren GO
als een signaal dat ze de huidige batch Transact-SQL-instructies naar een exemplaar van SQL Server moeten sturen. De huidige batch met verklaringen is samengesteld uit alle verklaringen die zijn ingevoerd sinds de laatste GO
, of sinds de start van de ad-hocsessie of het script als dit de eerste GO
. is .
Andere propriëtaire SQL-extensies
Transact-SQL is niet de enige uitbreiding op de SQL-standaard. Verschillende databasesystemen hebben hun eigen extensies. Oracle gebruikt bijvoorbeeld een eigen proceduretaal genaamd PL/SQL en PostgreSQL gebruikt een proceduretaal genaamd PL/pgSQL.
Hoewel propriëtaire SQL-extensies hun voordelen hebben (zoals uitgebreide functionaliteit), hebben ze ook hun nadelen. Een groot nadeel is dat ze dingen moeilijk kunnen maken als je ooit een database van het ene systeem naar het andere moet overzetten. Als uw organisatie bijvoorbeeld plotseling besluit dat het Oracle gaat gebruiken in plaats van SQL Server, moet u mogelijk alle SQL Server-code doornemen en deze voor Oracle herschrijven. Dit vereist ook dat je op de hoogte bent van de syntaxis van beide systemen.