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.
Ecco un esempio di una semplice istruzione T-SQL:
CREATE DATABASE Movies;
Questo è semplice come potrebbe ottenere un esempio T-SQL. Questo crea un nuovo database chiamato Movies
.
Tuttavia, T-SQL prevede altre opzioni da includere in questa dichiarazione, come la posizione dei file di database, la dimensione di tali file, quale dovrebbe essere la loro dimensione massima e altro ancora.
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.
T-SQL include anche un gran numero di funzioni integrate, oltre a supportare funzioni definite dall'utente.
Un esempio di una funzione incorporata
Ecco un altro esempio di base, questa volta utilizzando una delle funzioni integrate di T-SQL:
SELECT GETDATE();
Risultato:
2018-05-06 23:30:37.003
In questo caso utilizziamo GETDATE()
di T-SQL funzione per restituire la data e l'ora correnti. Questo è usato insieme a SELECT
istruzione, che è un'istruzione SQL comune per la restituzione di dati.
Possiamo anche usare quella funzione come argomento per un'altra funzione. Ecco un esempio:
SELECT FORMAT(GETDATE(), 'MMM');
Risultato:
May
In questo caso utilizziamo il T-SQL FORMAT()
funzione per estrarre solo la parte del mese della data e presentarla in un determinato formato. Puoi vedere altri esempi di data/ora in Come formattare la data e l'ora in SQL Server.
Cronologia di T-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 a essere supportato 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.
T-SQL e strumenti GUI
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).
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. Ad esempio, il primo esempio sopra potrebbe anche essere scritto in questo modo:
CREATE DATABASE Movies; GO
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.