Her er et hurtigt overblik over forskellen mellem SQL og T-SQL (Transact-SQL). Ikke så meget forskellene som sådan, men mere en forklaring på T-SQL og hvor den sidder i forhold til SQL.
Hvis du har lavet nogen databaseudvikling eller -administration, er du sikkert bekendt med SQL. SQL, som står for Structured Query Language, er et standard forespørgselssprog til at arbejde med databaser. De fleste af de store relationelle databasestyringssystemer såsom MySQL, Oracle, SQL Server, PostgreSQL osv. understøtter SQL på den ene eller anden måde.
Selvom SQL-standarden giver klare specifikationer, giver den også databaseleverandører mulighed for at tilføje deres egne udvidelser. Dette giver leverandører mulighed for at levere ekstra funktioner og funktionalitet til deres kunder, som måske ikke tilbydes af deres konkurrenter.
Det er her, T-SQL kommer ind i billedet.
Hvad er Transact-SQL?
Transact-SQL, ofte forkortet til T-SQL eller endda TSQL, er Microsofts og Sybases proprietære udvidelse til SQL. Transact-SQL udvider SQL-standarden til at inkludere ekstra funktioner, der ikke er inkluderet i SQL-standarden.
Selvom Transact-SQL (og SQL Server) oftest er kendt som en Microsoft-ting, er det faktisk resultatet af et partnerskab mellem Microsoft og Sybase, der startede i 1987. Dette partnerskab blev opløst i 1994. Efter dette fortsatte T-SQL med at være understøttet af databaseprodukter udgivet af begge virksomheder, men hver virksomhed udviklede deres databaseprodukter i sin egen retning. Derfor er der nogle forskelle mellem Sybase T-SQL og Microsoft T-SQL.
Transact-SQL er central for SQL Server. De fleste operationer i SQL Server udføres ved hjælp af T-SQL. Dette er sandt, selvom du bruger et GUI-værktøj (såsom SSMS eller DBeaver), og du faktisk ikke laver nogen programmering. Hver gang du bruger et program til at interagere med SQL Server, bruger programmet T-SQL bag kulisserne til at udføre den angivne opgave.
Men SQL Server er ikke det eneste databasestyringssystem, der understøtter Transact-SQL. Microsoft Azure SQL Database understøtter også T-SQL. De fleste T-SQL-funktioner, som applikationer bruger, understøttes fuldt ud i både Microsoft SQL Server og Azure SQL Database (selvom der er nogle undtagelser).
T-SQL-funktioner
Nogle af funktionerne i T-SQL inkluderer:
- Procedurel programmering
- Lokale variabler
- Forskellige støttefunktioner til strengbehandling, datobehandling, matematik osv.
- Ændringer af
DELETE
ogUPDATE
udsagn. De tillader især, at der tilføjes en FROM-klausul, som gør det muligt at inkludere joins. - T-SQL har en
BULK INSERT
sætning, der giver dig mulighed for at importere en datafil til en databasetabel eller visning i et brugerspecificeret format.
En af de vigtigste fordele ved ovenstående udvidelser er, at du har meget mere programmerbarhed, når du bruger T-SQL vs SQL. Lagrede procedurer giver dig for eksempel mulighed for at inkorporere programmeringslogik i din database. Du kan overføre en eller flere parametre til en lagret procedure, og den lagrede procedure vil returnere et output, der varierer afhængigt af parametrenes værdier.
Om GO-kommandoen
Enhver, der har brugt T-SQL, vil sandsynligvis være bekendt med GO
kommando. Dette søgeord er ofte placeret i slutningen af en batch af udsagn.
Men GO
kommandoen er faktisk ikke en del af Transact-SQL. Faktisk er GO
kommando kan ikke engang optage den samme linje som en Transact-SQL-sætning.
GO
er en af de kommandoer, der genkendes af sqlcmd og osql hjælpeprogrammer samt SQL Server Management Studio Code Editor for at lette læsbarheden og udførelsen af batches og scripts. GO
kommandoen signalerer slutningen af en batch af Transact-SQL-sætninger til SQL Server-værktøjerne.
SQL Server-værktøjer fortolker GO
som et signal om, at de skal sende den aktuelle batch af Transact-SQL-sætninger til en forekomst af SQL Server. Den aktuelle batch af udsagn er sammensat af alle udsagn, der er indtastet siden sidste GO
, eller siden starten af ad hoc-sessionen eller scriptet, hvis dette er den første GO
.
Andre proprietære SQL-udvidelser
Transact-SQL er ikke den eneste udvidelse til SQL-standarden. Forskellige databasesystemer har deres egne udvidelser. Oracle bruger f.eks. et proprietært proceduresprog kaldet PL/SQL, og PostgreSQL bruger et proceduresprog kaldet PL/pgSQL.
Selvom proprietære SQL-udvidelser har deres fordele (såsom udvidet funktionalitet), har de deres ulemper. En stor ulempe er, at de kan gøre tingene vanskelige, hvis du nogensinde har brug for at portere en database fra et system til et andet. For eksempel, hvis din organisation pludselig beslutter, at den skal bruge Oracle i stedet for SQL Server, skal du muligvis gennemgå al SQL Server-koden og omskrive den til Oracle. Dette kræver også, at du kommer op på hastigheden med syntaksen for begge systemer.