Qual è la differenza tra SQL e T-SQL?

Datamaze
26.01.22 02:10 PM Comment(s)

SQL e T-SQL sono due linguaggi basati principalmente sulle query ed utilizzati per i database relazionali, nelle attività di realizzazione e gestione di tali database.

SQL: Standard SQL

SQL è il nome che si usa comunemente per Standard SQL, un linguaggio standard sia per l’International Organization for Standards (ISO) sia per l’American National Standards Institure (ANSI) basato su query ed utilizzato per aggiungere, recuperare, aggiornare e cancellare dati nei database che lo utilizzano, oltre a creare oggetti, gestire utenti e gestire database.

SQL continua ad evolversi nel tempo. Ecco la lista delle revisioni principali rilasciate fino ad oggi:
 Anno di rilascio Nome
 1986 SQL-86
 1989 SQL-89
 1992 SQL-92
 1999 SQL:1999
 2003 SQL:2003
 2006 SQL:2006
 2008 SQL:2008
2011 SQL:2011
 2016 SQL:2016
 2019 SQL:2019

SQL è un linguaggio open source, che consente a tutti i produttori di motori di database di aggiungere le proprie specifiche. In questo modo si vanno a differenziare i vari linguaggi utilizzati dalle diverse aziende produttrici di DBMS. MySQL e Sybase utilizzano Standard SQL per la manipolazione dei dati nei database.


SQL è un linguaggio dichiarativo (non-procedurale), ovvero non specifica la sequenza di operazioni da compiere per ottenere il risultato richiesto.


Ecco gli elementi principali del linguaggio SQL:

  • Clausole: i componenti delle Dichiarazioni e delle Query.
  • Espressioni: producono valori scalari o tabelle.
  • Predicati:  specificano le condizioni da rispettare secondo la logica a tre valori o il valore vero degli operatori Booleani e servono per limitare gli effetti delle dichiarazioni e delle query o per cambiare il flusso del programma.
  • ·Query: recuperano i dati secondo precisi criteri.
  • Dichiarazioni: possono avere effetti persistenti sugli schemi e i dati oppure possono controllare transazioni, flussi del programma, connessioni, sessioni o diagnostiche.

T-SQL: Transact-SQL

Tutti i principali vendor di database, incluso Microsoft, implementano un dialetto di SQL Standard come linguaggio principale per la gestione dei dati nelle loro piattaforme database. Anche nel caso di T-SQL, si tratta di un’estensione del linguaggio Standard SQL, un’implementazione che viene utilizzata per i prodotti Microsoft.


T-SQL è il principale linguaggio utilizzato per la gestione e la manipolazione dei dati all’interno dei sistemi di gestione dei database relazionali di Microsoft (RDBMSs), SQL Server (prodotto box) e Azure SQL (la piattaforma cloud che comprende varie tipologie di servizi). T-SQL è  stato creato e viene aggiornato da Microsoft, che ne è anche il proprietario. 


Ecco uno schema che riassume l’evoluzione di T-SQL:

Evoluzione di T-SQL

Rispetto a Standard SQL presenta, come visto, alcune differenze ed alcune aggiunte che lo distinguono in parte, in modo simile ad un dialetto rispetto ad una lingua nazionale. T-SQL espande SQL Standard per includere programmazione procedurale (il codice viene processato in blocchi logici e con un ordine strutturato che definisce come le azioni devono essere effettuate per arrivare al risultato richiesto), variabili locali, varie funzioni di supporto per la manipolazione delle stringhe e per le operazioni matematiche. Inoltre, modifica le Dichiarazioni DELETE e UPDATE. Essendo un’estensione, T-SQL è dotato inoltre di alcune funzionalità che non sono presenti in Standard SQL, come ad esempio la funzione ISNULL.


Come abbiamo visto, T-SQL, scritto anche TSQL, viene utilizzato per manipolare i dati in SQL Server e per creare le applicazioni che comunicano con i database SQL Server. 


Un consiglio dei nostri DBA

Nonostante le potenzialità rappresentate dalle funzionalità aggiuntive rispetto al linguaggio SQL Standard, è bene ricordare che la scrittura di codice in modalità standard è considerata una best practice. Infatti questa modalità di lavoro permette di rendere il codice molto più portabile.

Quando il “dialetto” di SQL Standard utilizzato, come nel caso di T-SQL, supporta sia la modalità standard sia quella non-standard per eseguire un comando, si dovrebbe sempre preferire la modalità standard come scelta predefinita. La modalità non-standard dovrebbe essere presa in considerazione solamente quando presenta un importante beneficio che non è compreso dall’alternativa standard.

di Alice Sella, pubblicato il 26 gennaio 2022