Ecco una rapida panoramica della differenza tra SQL e T-SQL (Transact-SQL). Non tanto le differenze in quanto tale, ma più una spiegazione di T-SQL e dove si trova in relazione a SQL.
Se hai svolto attività di sviluppo o amministrazione di database, probabilmente hai familiarità con SQL. SQL, che sta per Structured Query Language, è un linguaggio di query standard per lavorare con i database. La maggior parte dei principali sistemi di gestione di database relazionali come MySQL, Oracle, SQL Server, PostgreSQL, ecc. supportano SQL in un modo o nell'altro.
Tuttavia, mentre lo standard SQL fornisce specifiche chiare, consente anche ai fornitori di database di aggiungere le proprie estensioni. Ciò consente ai fornitori di fornire ai propri clienti caratteristiche e funzionalità aggiuntive che potrebbero non essere offerte dai concorrenti.
È qui che entra in gioco T-SQL.
Cos'è Transact-SQL?
Transact-SQL, spesso abbreviato in T-SQL o anche TSQL, è l'estensione proprietaria di Microsoft e Sybase per SQL. Transact-SQL si espande sullo standard SQL per includere funzionalità extra che non sono incluse nello standard SQL.
Sebbene Transact-SQL (e SQL Server) sia più comunemente noto come una cosa Microsoft, in realtà è il risultato di una partnership tra Microsoft e Sybase iniziata nel 1987. Questa partnership è stata sciolta nel 1994. In seguito, T-SQL ha continuato ad essere supportata da prodotti di database rilasciati da entrambe le società, tuttavia, ciascuna società ha sviluppato i propri prodotti di database nella propria direzione. Pertanto, ci sono alcune differenze tra Sybase T-SQL e Microsoft T-SQL.
Transact-SQL è fondamentale per SQL Server. La maggior parte delle operazioni in SQL Server viene eseguita utilizzando T-SQL. Questo è vero anche se usi uno strumento GUI (come SSMS o DBeaver) e in realtà non esegui alcuna programmazione. Ogni volta che utilizzi un'applicazione per interagire con SQL Server, l'applicazione utilizza T-SQL dietro le quinte per eseguire l'attività specificata.
Ma SQL Server non è l'unico sistema di gestione del database che supporta Transact-SQL. Il database SQL di Microsoft Azure supporta anche T-SQL. La maggior parte delle funzionalità T-SQL utilizzate dalle applicazioni sono completamente supportate sia in Microsoft SQL Server che nel database SQL di Azure (sebbene vi siano alcune eccezioni).
Caratteristiche di T-SQL
Alcune delle funzionalità di T-SQL includono:
- Programmazione procedurale
- Variabili locali
- Varie funzioni di supporto per elaborazione di stringhe, elaborazione di dati, matematica, ecc.
- Modifiche a
DELETE
eUPDATE
dichiarazioni. In particolare, consentono di aggiungere una clausola FROM, che consente l'inclusione di join. - T-SQL ha un
BULK INSERT
istruzione che consente di importare un file di dati in una tabella di database o visualizzarlo in un formato specificato dall'utente.
Uno dei principali vantaggi delle estensioni di cui sopra è che hai molta più programmabilità quando usi T-SQL rispetto a SQL. Le stored procedure, ad esempio, consentono di incorporare la logica di programmazione nel database. Puoi passare uno o più parametri a una procedura memorizzata e la procedura memorizzata restituirà un output che varia a seconda dei valori dei parametri.
Informazioni sul comando GO
Chiunque abbia utilizzato T-SQL avrà probabilmente familiarità con GO
comando. Questa parola chiave viene spesso inserita alla fine di un batch di istruzioni.
Tuttavia, il GO
il comando non fa effettivamente parte di Transact-SQL. Infatti, il GO
il comando non può nemmeno occupare la stessa riga di un'istruzione Transact-SQL.
GO
è uno dei comandi riconosciuti da sqlcmd e osql utilità, nonché SQL Server Management Studio Code Editor per facilitare la leggibilità e l'esecuzione di batch e script. Il GO
Il comando segnala la fine di un batch di istruzioni Transact-SQL alle utilità di SQL Server.
Le utilità di SQL Server interpretano GO
come segnale che devono inviare il batch corrente di istruzioni Transact-SQL a un'istanza di SQL Server. L'attuale batch di estratti conto è composto da tutti gli estratti conto immessi dall'ultimo GO
o dall'inizio della sessione o dello script ad hoc se questo è il primo GO
.
Altre estensioni SQL proprietarie
Transact-SQL non è l'unica estensione dello standard SQL. Vari sistemi di database hanno le proprie estensioni. Ad esempio, Oracle utilizza un linguaggio procedurale proprietario chiamato PL/SQL e PostgreSQL utilizza un linguaggio procedurale chiamato PL/pgSQL.
Sebbene le estensioni SQL proprietarie abbiano i loro vantaggi (come funzionalità estese), hanno i loro svantaggi. Uno dei principali svantaggi è che possono rendere le cose difficili se è necessario trasferire un database da un sistema all'altro. Ad esempio, se la tua organizzazione decide improvvisamente che utilizzerà Oracle invece di SQL Server, potrebbe essere necessario esaminare tutto il codice di SQL Server e riscriverlo per Oracle. Ciò richiede anche di essere al passo con la sintassi di entrambi i sistemi.