Che cos'è il linguaggio di query strutturato (SQL)?

26 Giugno 2025

Autori

Alexandra Jonker

Editorial Content Lead

Tim Mucci

IBM Writer

Gather

Che cos'è un linguaggio di query strutturato?

Structured Query Language (SQL) è un linguaggio di programmazione standardizzato e specifico utilizzato per interagire con i sistemi di gestione dei database relazionali (RDBMS), come MySQL, SQL Server, IBM Db2, PostgreSQL e Oracle Database.

Le query SQL (note anche come comandi SQL o istruzioni SQL) consentono agli utenti di aggiungere, recuperare, aggiornare, eliminare, aggregare e, in generale, gestire con facilità i dati in un database relazionale (o SQL database). In questi sistemi, i dati strutturati sono ordinati in righe e colonne, che insieme formano delle tabelle. I dati sono in genere strutturati in più tabelle correlate che possono essere collegate tramite chiavi primarie o esterne.

A differenza di altri linguaggi di programmazione, SQL è un linguaggio dichiarativo, il che significa che descrive cosa l'utente vuole che il computer faccia piuttosto che come raggiungere il risultato. Si distingue quindi dai linguaggi imperativi o procedurali (come Java e COBOL), che invece richiedono istruzioni dettagliate passo passo.

Ad esempio, quando gli utenti scrivono una query SQL per recuperare i dati, non devono sottolineare i passaggi che il database dovrebbe seguire per raccogliere tali dati; descrivono invece come deve essere il risultato.

SELECT name, email
FROM customers
WHERE city = 'New York' ;

SQL è uno strumento fondamentale e versatile nel moderno stack tecnologico ed è apprezzato per le sue capacità di manipolazione dei dati, l'elaborazione rapida delle query e le solide funzionalità di sicurezza. Offre inoltre compatibilità tra diversi sistemi, scalabilità per gestire le crescenti esigenze di dati e un solido supporto open source da parte della community.

La storia di SQL

Negli anni '70, gli scienziati IBM Donald Chamberlin e Raymond Boyce hanno sviluppato e introdotto SQL. Ha avuto origine dal concetto di modelli relazionali e all'inizio era stato definito come Structured English Query Language (SEQUEL), prima di essere abbreviato in SQL. È diventato disponibile in commercio nel 1979 e da allora si è affermato come lo standard globale per i sistemi di gestione di database relazionali.

SQL è stato standardizzato dall'American National Standards Institute (ANSI) nel 1986 e dall'International Organization for Standardization (ISO) nel 1987. Nonostante sia uno standard, SQL ha vari dialetti, come T-SQL per Microsoft SQL Server e PL/SQL per Oracle Database. Questi dialetti SQL soddisfano esigenze di sistema specifiche garantendo al contempo la conformità ai comandi standard ANSI di base come SELECT, UPDATE, DELETE, INSERT e WHERE.

Le ultime notizie nel campo della tecnologia, supportate dalle analisi degli esperti

Resta al passo con le tendenze più importanti e interessanti del settore relative ad AI, automazione, dati e altro con la newsletter Think. Leggi l'Informativa sulla privacy IBM.

Grazie per aver effettuato l'iscrizione!

L'abbonamento sarà fornito in lingua inglese. Troverai un link per annullare l'iscrizione in tutte le newsletter. Puoi gestire i tuoi abbonamenti o annullarli qui. Per ulteriori informazioni, consulta l'Informativa sulla privacy IBM.

Perché SQL è importante?

Dal suo sviluppo negli anni '70, SQL è diventato il fondamento dei moderni sistemi di database.

A differenza dei linguaggi di programmazione generici, SQL è progettato appositamente per i database relazionali e i database relazionali sono, a loro volta, ottimizzati per SQL. Questa coerenza strutturale reciproca rende SQL uno strumento di gestione dei dati altamente efficiente.

La natura dichiarativa di SQL lo rende accessibile anche agli utenti con poca esperienza nella programmazione, e quindi un linguaggio ideale per i principianti. Il suo utilizzo diffuso e l'integrazione con altri linguaggi di programmazione come Python e Java lo rendono una competenza preziosa anche in ambienti di programmazione e dati più ampi.

Analisti dei dati, data scientist e amministratori di database utilizzano regolarmente SQL perché è particolarmente efficace in attività come l'elaborazione dei dati, la definizione dei dati, il controllo degli accessi, la condivisione dei dati, l'integrazione dei dati e la big data analytics.

Nella data science, SQL viene utilizzato per creare database in cui vengono memorizzati grandi set di dati necessari per l'analisi dei dati. La sua capacità di manipolare e recuperare dati da questi grandi set di dati strutturati è fondamentale anche nello sviluppo di applicazioni di intelligenza artificiale (AI) e machine learning (ML), che richiedono dati di alta qualità per il loro addestramento.

Seguendo le proprietà ACID (atomicità, coerenza, isolamento e durabilità) SQL contribuisce a garantire un'elaborazione affidabile delle transazioni, anche nei casi d'uso critici e nella gestione di dati sensibili. Supporta inoltre processi decisionali basati sui dati più accurati, analytics avanzate e business intelligence più efficace.

Quali sono i vantaggi dell'utilizzo di SQL?

SQL offre molti vantaggi, che lo rendono uno dei linguaggi di programmazione più utilizzati e duraturi.

Manipolazione dei dati semplificata

I semplici comandi di SQL (come GROUP BY, ORDER BY, GRANT e REVOKE) consentono agli utenti di ogni livello di competenza di lavorare con i database.

Elaborazione rapida di query

Gli indici SQL e le tecniche di ottimizzazione delle query migliorano la velocità di recupero dei dati e, di conseguenza, migliorano le prestazioni del database.

Sicurezza dei dati affidabile

I database SQL includono funzionalità di sicurezza come l'autenticazione degli utenti, il controllo degli accesso e la crittografia per proteggere i dati.

Caratteristiche in comune e compatibilità

SQL aderisce agli standard ANSI e ISO SQL, che contribuiscono a garantire la compatibilità con vari sistemi e piattaforme, inclusi gli ambienti cloud e gli strumenti per big data.

Scalabilità

SQL è in grado di gestire in modo efficace database di piccole e grandi dimensioni, adattandosi alle crescenti esigenze di dati senza una significativa perdita in termini di prestazioni.

Supporto open source

Numerosi database SQL sono open source e sono supportati da una comunità ampia e attiva che contribuisce al miglioramento costante e alla risoluzione dei problemi.

Come funziona una query SQL?

Un database relazionale organizza i dati in tabelle (righe e colonne) e facilita la creazione di relazioni tra tabelle diverse. Ad esempio, un database del servizio clienti potrebbe utilizzare tabelle separate per informazioni su clienti, acquisti, codici prodotto e contatti, collegate da chiavi come un ID cliente univoco.

SQL consente agli utenti di scrivere query (e sottoquery) per manipolare questi dati. I comandi vengono eseguiti attraverso diversi componenti software durante il processo SQL:

Un parser verifica la correttezza delle istruzioni SQL e le converte in un formato comprensibile per il database, ad esempio simboli tokenizzati. Questo passaggio prevede l'analisi della sintassi e il controllo semantico. Il parser consente inoltre di garantire che l'utente sia autorizzato a eseguire l'operazione.

Quindi, un motore relazionale, noto anche come ottimizzatore di query, pianifica le strategie più efficienti di recupero, modifica o aggiunta dei dati. Per fare ciò, valuta diversi piani di esecuzione delle query. Scrive il piano in bytecode, che è un linguaggio per macchine virtuali. Questo passo è fondamentale per ottimizzare le prestazioni e l'uso delle risorse del database.

Infine, un motore di storage elabora il bytecode, esegue l'istruzione SQL e gestisce il data storage fisico. Gestisce la rappresentazione fisica dei dati, inclusi i formati di file e il buffering dei dati. Inoltre, restituisce il risultato all'utente o all'app. Questo passaggio aiuta a garantire un accesso efficiente ai dati e gli aggiornamenti sul disco. Questo collegamento spesso implica relazioni, come uno-a-molti o molti-a-molti, stabilite utilizzando chiavi primarie ed esterne per contribuire a garantire l'integrità dei dati.

Mixture of Experts | 25 aprile, episodio 52

Decoding AI: Weekly News Roundup

Unisciti al nostro gruppo di livello mondiale di ingegneri, ricercatori, leader di prodotto e molti altri mentre si fanno strada nell'enorme quantità di informazioni sull'AI per darti le ultime notizie e gli ultimi insight sull'argomento.

Componenti fondamentali dei sistemi SQL

I sistemi di gestione dei database relazionali (chiamati anche sistemi SQL) sono costituiti da molti componenti, tra cui:

  • Database: un repository digitale per la memorizzazione, la gestione e la protezione di raccolte organizzate di dati.

  • Tabelle del database: dati formattati in righe e colonne. Ciascuna contiene informazioni su un tipo di entità.

  • Query SQL: le query SQL sono istruzioni scritte in SQL utilizzate per manipolare i dati all'interno di un database relazionale.

  • Vincoli SQL: regole che controllano i dati nelle colonne o nelle tabelle del database per garantire l'integrità dei dati.

  • Procedure memorizzate: comandi SQL che vengono memorizzati per un riutilizzo continuo.

  • Transazioni: uno o più comandi SQL raggruppati come un'unica unità di lavoro o operazione.

  • Tipi di dati: regole che definiscono il tipo di dati che possono essere memorizzati in una colonna.

  • Indici: un oggetto di database che velocizza il recupero dei dati riducendo il numero di accessi al disco necessari per una query.

  • Viste: tabelle virtuali basate su query SQL che semplificano le query complesse e migliorano la sicurezza limitando l'accesso ai dati sottostanti.

  • Sicurezza e autorizzazioni: funzioni che gestiscono l'accesso degli utenti, mentre i meccanismi di backup and recovery proteggono i dati da perdite o danneggiamenti.

Tipi di comandi SQL: DDL, DML, DQL, DCL e TCL

I comandi SQL vengono tradizionalmente suddivisi nelle seguenti categorie:

  • Data definition language (DDL)
  • Data manipulation language (DML)
  • Data control language (DCL)
  • Data query language (DQL)
  • Transaction control language (TCL)

Data definition language (DDL)

Il data definition language gestisce oggetti di database come tabelle, viste e indici. Definisce la struttura e l'organizzazione dei dati memorizzati e le relazioni tra gli elementi di dati memorizzati. 

Data manipulation language (DML)

Il data manipulation language gestisce i dati all'interno dei database attraverso operazioni come INSERT, UPDATE e OUTER JOIN, che aggiungono, modificano e combinano dati.

Data control language (DCL)

Il data control language controlla l'accesso ai dati tramite comandi come GRANT (per concedere le autorizzazioni) e REVOKE (per rimuovere le autorizzazioni). Può limitare la capacità di un utente di recuperare, aggiungere e modificare i dati.

Data query language (DQL)

Il data query language esegue query di dati per recuperare le informazioni, di solito utilizzando il comando SELECT. Può recuperare elementi di dati specifici o una serie di elementi.

Transaction control language (TCL)

Il transaction control language gestisce le modifiche alle transazioni per contribuire a garantire l'integrità dei dati e supporta le operazioni ROLLBACK e COMMIT per annullare o salvare le modifiche, rispettivamente. Viene utilizzato per coordinare la condivisione dei dati da parte di utenti simultanei.

What are the most common SQL commands?

I database SQL supportano varie istruzioni SQL per le operazioni sui dati. Tuttavia, i comandi SQL possono variare a seconda del database, che può utilizzare una propria sintassi SQL.

I comandi SQL di base includono:

SELECT

Recupera i dati da una o più tabelle.

SELECT name, email

 

FROM customers

 

WHERE city = 'New York' ;

Questa istruzione recupera il nome e l'indirizzo e-mail di tutti i clienti che vivono a New York dalla tabella dei clienti.

INSERT

Aggiunge nuove righe a una tabella.

INSERT INTO customers (name, email, city)
VALUES ('Jane Doe', 'jane.doe@example.com', 'Los Angeles') ;

Questa istruzione aggiunge una nuova riga alla tabella dei clienti con il nome "Jane Doe", l'e-mail "jane.doe@example.com" e la città "Los Angeles".

UPDATE

Aggiorna i dati esistenti in una tabella.

UPDATE customers 
SET email = 'new.email@example.com' 
WHERE name = 'John Doe' ;

Questa dichiarazione aggiorna l'e-mail del cliente con nome "John Doe" nella tabella dei clienti in "new.email@example.com".

DELETE

Elimina righe da una tabella in base a una condizione.

DELETE FROM customers 
WHERE city = 'Boston' ;

Questa istruzione elimina tutte le righe dalla tabella dei clienti in cui la città è "Boston".

CREATE TABLE

Crea una nuova tabella e la sua struttura.

CREATE TABLE products (
product_id INT PRIMARY KEY,
name VARCHAR(100),
price DECIMAL(10, 2)
) ;

Questa istruzione crea una nuova tabella denominata prodotti con tre colonne: product_id come chiave primaria intera, nome come stringa di caratteri variabili fino a 100 caratteri e prezzo come decimale con dieci cifre e due cifre decimali.

ALTER TABLE

Modifica la struttura di una tabella esistente.

ALTER TABLE customers 
ADD COLUMN birthday DATE ;

Questa istruzione aggiunge una nuova colonna compleanno di tipo DATA alla tabella clienti esistente.

DROP TABLE

Elimina una tabella e tutti i suoi dati.

DROP TABLE old_customers ;

Questa istruzione elimina la tabella old_customers insieme a tutti i suoi dati.

JOIN

Unisce le righe di due o più tabelle in base a una colonna correlata.

SELECT c.name, p.name AS product_name
FROM customers c
JOIN orders o ON c.customer_id = o.customer_id
JOIN products p ON o.product_id = p.product_id
WHERE c.city = 'New York' ;

L'istruzione SQL JOIN recupera i nomi dei clienti e i nomi dei prodotti che hanno ordinato. Unisce le tabelle di clienti, ordini e prodotti in base a customer_id e product_id, selezionando solo i clienti che vivono a New York.

Differenze tra database SQL e NoSQL

I database SQL sono database relazionali, in cui i dati strutturati vengono memorizzati in righe e tabelle collegate in vari modi. SQL è il linguaggio standard per interagire con questi database.

I database NoSQL (o database non relazionali) sono nati alla fine degli anni 2000 per gestire dati meno strutturati. Questi tipi di database (come MongoDB) offrono modelli di dati più flessibili rispetto ai database SQL.

Le principali differenze includono:

  • Scalabilità
  • Struttura
  • Prestazioni
  • Casi d'uso
  • Conoscenze e community
  • Manutenzione e gestione

Scalabilità

I database NoSQL sono scalabili orizzontalmente e gestiscono un traffico più elevato aggiungendo più server. Al contrario, i database SQL sono scalabili verticalmente e richiedono un hardware più potente per gestire un carico maggiore.

Struttura

I database SQL utilizzano una struttura basata su tabelle ideale per transazioni a più righe e query complesse su dati correlati, grazie a solide funzionalità di indicizzazione e unione. NoSQL offre varie strutture come archivi chiave-valore, documenti, grafici o colonne larghe per soddisfare esigenze diverse e consentire una maggiore flessibilità con dati semistrutturati o non strutturati.

Prestazioni

I database SQL sono ottimizzati per query complesse con una rigorosa coerenza dei dati, rispettando i principi ACID. I database NoSQL, che seguono i principi BASE (basically available, soft state, eventual consistency), offrono prestazioni più veloci per tipi di dati specifici, ma con garanzie di coerenza diverse.

Casi d’uso

I database SQL vengono spesso scelti per applicazioni che richiedono transazioni complesse, dati coerenti e una rigorosa aderenza agli schemi, come i sistemi finanziari, le piattaforme di e-commerce o i database CRM. NoSQL è preferito per dati in rapida evoluzione, su larga scala o semistrutturati, come nei social network, nella real-time analytics o nei sistemi di gestione dei contenuti.

Conoscenze e community

I database SQL hanno una gamma più ampia di risorse, come tutorial e supporto della community di SQL grazie alla loro storia più lunga e alla loro adozione diffusa. NoSQL spesso richiede meno progettazione iniziale e può essere più facile da scalare, ma spesso richiede uno sviluppo più personalizzato per query complesse e coerenza dei dati.

Manutenzione e gestione

I database SQL richiedono un'attenta progettazione dello schema e possono essere impegnativi in termini di manutenzione per le modifiche allo schema. Un DBMS NoSQL offre scalabilità e adattabilità più semplici per le modifiche allo schema senza tempi di inattività o ristrutturazioni prolungate.

Che cos'è l'SQL injection?

Nonostante i punti di forza in termini di sicurezza di molti database SQL, altre applicazioni aziendali possono essere vulnerabili a problemi di sicurezza, come autenticazione debole, progettazione non sicura e configurazione non corretta. A causa di queste vulnerabilità, l'SQL injection rimane una minaccia reale per le organizzazioni.

L'SQL injection si verifica quando i pirati informatici manipolano le query SQL per accedere o danneggiare le informazioni del database. Per salvaguardare i dati SQL è fondamentale conoscere queste vulnerabilità e implementare misure di sicurezza efficaci.

Soluzioni correlate
Software e soluzioni per database

Usa le soluzioni di database di IBM per soddisfare varie esigenze di workload nell'hybrid cloud.

Esplora le soluzioni di database
Database cloud-native con IBM Db2

Esplora IBM DB2, un database relazionale che offre prestazioni, scalabilità e affidabilità elevate per l'archiviazione e la gestione di dati strutturati. È disponibile come SaaS su IBM Cloud o in self-hosting.

Scopri Db2
Servizi di consulenza per dati e analytics

Sblocca il valore dei dati enterprise con IBM Consulting, creando un'organizzazione basata su insight in grado di generare vantaggi aziendali.

Esplora i servizi di analytics
Fasi successive

Per prosperare, le aziende devono utilizzare i dati per fidelizzare i clienti, automatizzare i processi aziendali e innovare con soluzioni basate sull'AI.

Esplora le soluzioni di analytics Esplora i servizi di analytics