Torna all'elenco degli articoli Articoli
Tempo di lettura: 7 minuti

SQL è un linguaggio di programmazione?

SQL è un potente strumento per comunicare con i sistemi di gestione dei database. Quando si scrivono query SQL, si danno istruzioni al computer, che le esegue: sembra una programmazione. Tuttavia, non è possibile creare un'applicazione con SQL come con Python o Java. Quindi, l'SQL è un linguaggio di programmazione?

Che cos'è l'SQL?

Cominciamo con la definizione di base. SQL, o Structured Query Language, è un linguaggio utilizzato per comunicare con i database relazionali. Nonostante l'importanza di questo ruolo, si tratta di un compito piuttosto limitato rispetto a quello per cui vengono utilizzati Python, Java, C++, ecc. Naturalmente c'è un lungo dibattito intorno alla domanda: SQL è un linguaggio di programmazione? Non è possibile creare un'applicazione o costruire una pagina web con SQL, ma è sicuramente un linguaggio di programmazione quando si usa SQL per parlare con i database.

Per affrontare questa questione controversa, suggerisco di iniziare a riconoscere le differenze tra diversi concetti chiave. Non avremo problemi a rispondere se SQL è un linguaggio di programmazione dopo aver definito il termine "linguaggio di programmazione" e aver compreso chiaramente le differenze tra linguaggi di programmazione generici e linguaggi di programmazione specifici per il dominio.

Linguaggio di programmazione vs. linguaggio di programmazione per uso generale

Secondo Webopedia, "un linguaggio di programmazione è un vocabolario e un insieme di regole grammaticali per istruire un computer o un dispositivo informatico a eseguire compiti specifici". In base a questa definizione, SQL è sicuramente un linguaggio di programmazione.

Ha un determinato vocabolario e una sintassi rigorosa da seguire. Ad esempio, tutte le istruzioni SQL iniziano con parole chiave specifiche (ad esempio, SELECT, INSERT, CREATE, UPDATE, DELETE) e terminano con un punto e virgola. Anche l'ordine delle clausole è importante. Ad esempio, GROUP BY deve seguire la clausola WHERE e precedere la clausola ORDER BY:

SELECT column_one, column_two
FROM table
WHERE column_one > 2000
GROUP BY column_one, column_two
ORDER BY column_one;

Inoltre, i messaggi scritti utilizzando questo vocabolario e questa sintassi istruiscono il computer a eseguire compiti specifici, come l'accesso a determinati dati nel database, la creazione, l'aggiornamento o la cancellazione di tabelle nel database, ecc.

Allora perché c'è tutta questa polemica sul riconoscimento di SQL come linguaggio di programmazione? Il problema è che spesso quando si parla di "linguaggio di programmazione" si intende "linguaggio di programmazione per scopi generali". E c'è una grande differenza tra questi termini.

Wikipedia dice che "un linguaggio di programmazione di uso generale è un linguaggio di programmazione progettato per essere utilizzato per scrivere software nella più ampia varietà di domini applicativi". In pratica, con un linguaggio di programmazione general-purpose si possono creare tutti i tipi di applicazioni, comprese quelle desktop, mobili o web. I linguaggi di programmazione più utilizzati in questa categoria sono Java, JavaScript, Python, C++ e Ruby.

A differenza di questi linguaggi, SQL ha un ruolo di nicchia: comunicare con i database relazionali. Pertanto, non è possibile creare un'applicazione utilizzando solo SQL. Questo ci porta a concludere che SQL non è un linguaggio di programmazione di uso generale.

SQL come linguaggio specifico per il dominio

Ora sappiamo che SQL soddisfa la definizione di linguaggio di programmazione, ma non quella di linguaggio di programmazione generale. Quindi, dove si colloca SQL?

Oltre ai linguaggi di programmazione generici, esistono anche linguaggi specifici per il dominio (DSL). Wikipedia definisce un linguaggio specifico per il dominio come "un linguaggio informatico specializzato per un particolare dominio applicativo". L'HTML, o Hypertext Markup Language, è uno dei più diffusi linguaggi specifici per il dominio utilizzati per strutturare le pagine web.

Allo stesso modo, SQL, con il suo specifico dominio applicativo, può essere definito un linguaggio specifico per il dominio. Structured Query Language è un linguaggio altamente mirato per "parlare" con i database. Pur essendo uno strumento efficace e potente per la gestione e l'accesso ai dati, SQL ha un utilizzo limitato rispetto ai linguaggi di programmazione generici. Tuttavia, questo inconveniente comporta alcuni vantaggi.

A causa del suo dominio applicativo ristretto, SQL è solitamente più facile da imparare rispetto a un linguaggio di programmazione generale. Non è necessario un background informatico per iniziare il corso. SQL Basics corso. Inoltre, anche se si parte da zero conoscenze di programmazione, si può diventare esperti di SQL in pochi mesi dopo aver seguito il corso. SQL from A to Z corso.

SQL e la completezza di Turing

Se non siete ancora convinti che SQL sia un linguaggio di programmazione, ecco un altro punto da considerare.

Per valutare la "potenza" di un certo linguaggio di programmazione, gli informatici utilizzano spesso il concetto di completezza di Turing. Secondo la definizione di Wikipedia, un linguaggio di programmazione "si dice completo o universale dal punto di vista computazionale se può essere usato per simulare qualsiasi macchina di Turing". In parole povere, una macchina di Turing è una macchina ipotetica, chiamata così dall'informatico Alan Turing, che può accettare qualsiasi programma di qualsiasi complessità ed eseguirlo.

Quindi, potremmo dire che SQL è completo per Turing se qualsiasi programma che può essere scritto per essere eseguito da una macchina di Turing può essere scritto anche in SQL. E in effetti SQL, con l'aggiunta delle query ricorsive, soddisfa questa condizione.

Se siete interessati, potete saperne di più sulle query ricorsive SQL in questa guida completa. È inoltre possibile imparare a creare query ricorsive o espressioni di tabella comuni (CTE) nel nostro Recursive Queries corso.

Ora sapete che SQL è completo per Turing e quindi universale dal punto di vista computazionale. Ma questa non è ancora la fine della storia...

SQL e linguaggi procedurali

SQL può essere esteso con linguaggi procedurali che consentono agli utenti di definire le proprie funzioni e procedure. Pertanto, i linguaggi procedurali sono linguaggi di programmazione in entrambi i sensi del termine.

Tutti i sistemi di gestione dei database (DBMS) accettano uno o più dialetti di linguaggi procedurali. Vediamo alcuni esempi.

PL/SQL, o linguaggio procedurale per SQL, è un'estensione di SQL nel sistema di gestione di database Oracle. Simile ai linguaggi di programmazione generici, PL/SQL include elementi come condizioni e cicli. Con PL/SQL è possibile dichiarare costanti, variabili, tipi di variabili, procedure e funzioni.

PL/pgSQL, o linguaggio procedurale/PostgreSQL, è un linguaggio procedurale supportato dal sistema di gestione di database relazionali a oggetti PostgreSQL. È molto simile al PL/SQL di Oracle e consente di creare cicli e condizioni e funzioni definite dall'utente. Potete imparare a creare funzioni definite dall'utente in PostgreSQL con il nostro corso completo.

MySQL è un sistema di gestione di database che non ha un nome separato per le estensioni SQL che consentono la creazione di funzioni e procedure, ma supporta questa funzionalità. MySQL dispone delle istruzioniCREATE PROCEDURE e CREATE FUNCTION che creano routine memorizzate. In MySQL sono supportate anche le funzioni definite dall'utente, considerate come funzioni memorizzate esternamente.

Come si vede, SQL è uno strumento potente per la gestione e l'accesso ai dati. Può gestire enormi query analitiche con tutti i tipi di dati. Ma può anche essere usato per divertimento! Leggete come disegnare un albero di Natale in SQL.

È ora di imparare l'SQL!

Ora sapete che SQL è un potente linguaggio di programmazione che merita la vostra attenzione. Sebbene il linguaggio di interrogazione strutturato esista da decenni, è ancora lo strumento di riferimento per l'accesso e la gestione dei dati in tutti i tipi di applicazioni moderne. Analisti aziendali, analisti di dati, data scientist e molti altri ruoli nelle aziende di oggi hanno bisogno di SQL per svolgere il proprio lavoro.

A parte la sua apparente utilità come linguaggio specifico di un dominio, SQL può essere anche il primo passo verso la programmazione e l'apprendimento di un linguaggio di programmazione generale.

Siete curiosi di sapere dove SQL può portare la vostra carriera? Allora date un'occhiata ai seguenti corsi:

  • SQL Basics è un'introduzione facile da seguire alle query SQL. Non sono richieste conoscenze informatiche!
  • SQL from A to Z è un corso progettato per studenti ambiziosi e impegnati che sono pronti a passare da principianti assoluti, attraverso argomenti intermedi e avanzati, fino al livello di guru di SQL.
  • Writing User-Defined Functions in PostgreSQL è per coloro che si sentono sicuri con SQL e sono pronti a padroneggiare l'estensione procedurale di SQL per scrivere funzioni definite dall'utente.

Grazie per aver letto e buon apprendimento!

Sommario: C'è un lungo dibattito sul riconoscimento di SQL come linguaggio di programmazione. Con l'SQL si danno al computer istruzioni per eseguire enormi query analitiche, il che assomiglia alla programmazione. Tuttavia, non è possibile creare un'applicazione utilizzando solo SQL. Quindi, SQL è un linguaggio di programmazione? Scoprite perché la risposta è decisamente sì.