My IBM Accedi Iscriviti
Che cos'è il linguaggio di query strutturato (SQL)?

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

Esplora il database di IBM Db2 Iscriviti per ricevere gli aggiornamenti sull'AI
Illustrazione con collage di pittogrammi di nuvole, grafico a torta, pittogrammi grafici

Data di pubblicazione: 31 maggio 2024
Collaboratore: Tim Mucci

Che cos'è un linguaggio di query strutturato?

Che cos'è un linguaggio di query strutturato?

Il linguaggio SQL (Structured Query Language) è un linguaggio di programmazione standardizzato e specifico del dominio che eccelle nella gestione delle relazioni tra i dati. Viene utilizzato ampiamente per memorizzare, manipolare e recuperare dati in sistemi come MySQL, SQL Server e Oracle.

Quando è necessario recuperare dati da un database, per effettuare la richiesta viene utilizzato SQL. SQL viene utilizzato da amministratori di database, sviluppatori e analisti di dati per attività quali la definizione dei dati, il controllo degli accessi, la condivisione dei dati, la scrittura di script per l'integrazione dei dati e l'esecuzione di query analitiche.

Funzioni chiave di SQL:

  • Definizione dei dati: definisci la struttura e l'organizzazione dei dati memorizzati e le relazioni tra gli elementi di dati memorizzati.
  • Recupero dei dati: recupera facilmente elementi di dati specifici o una serie di elementi.
  • Manipolazione dei dati: aggiungi nuovi dati, elimina o modifica i dati esistenti.
  • Controllo degli accessi: limita la capacità di un utente di recuperare, aggiungere e modificare i dati, proteggendo i dati memorizzati dall'accesso non autorizzato.
  • Condivisione dei dati: utilizzata per coordinare la condivisione contemporanea dei dati da parte di utenti, contribuendo a garantire che le modifiche apportate da un utente non eliminino o sovrascrivano inavvertitamente le modifiche apportate da altri utenti.

SQL è uno strumento versatile nello stack tecnologico moderno, utilizzato per la gestione di soluzioni di elaborazione dei dati e data storage, sia per applicazioni front-end, sia back-end. Viene impiegato in vari settori, come la gestione degli inventari di e-commerce e l'elaborazione delle transazioni online, fino all'organizzazione di grandi quantità di dati sanitari per l'analisi.

Apprezzato per le sue funzionalità di manipolazione dei dati, l'elaborazione rapida delle query e le potenti funzionalità di sicurezza, SQL offre caratteristiche comuni e compatibilità tra diversi sistemi, scalabilità per gestire le crescenti esigenze di dati e vantaggi derivanti dall'essere open source con un efficiente supporto da parte della community.

Si differenzia dagli altri linguaggi informatici in quanto SQL descrive quello che l'utente vuole che il computer faccia, piuttosto che come dovrebbe farlo. In particolare, SQL è un linguaggio dichiarativo o descrittivo piuttosto che procedurale. 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.

Nella data science e nell'apprendimento automatico, SQL viene utilizzato per creare database che memorizzano set di dati di grandi dimensioni necessari per l'analisi. Strumenti come Microsoft SQL Server e MongoDB sono due scelte per gestire diversi tipi di database, da quelli relazionali a quelli NoSQL.

KuppingerCole sulla sicurezza dei database e dei big data

Il report Leadership Compass di KuppingerCole offre una guida approfondita alle soluzioni per la sicurezza di database e big data, aiutando i clienti a trovare i migliori prodotti attraverso un’analisi completa.

Storia dell'SQL

Storia dell'SQL

Introdotto negli anni '70 e sviluppato dagli scienziati dell'IBM Donald Chamberlin e Raymond Boyce, SQL nasce 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 (RDBMS).

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 MS SQL Server e PL/SQL per Oracle, che soddisfano esigenze di sistema specifiche garantendo al contempo la conformità ai comandi standard ANSI di base come SELEZIONA, AGGIORNA, ELIMINA, INSERISCI e DOVE.

Perché SQL è importante?

Perché SQL è importante?

SQL è fondamentale nel settore dei dati ed è utilizzato da analisti, scienziati e sviluppatori di database. La sua universalità lo rende una competenza preziosa nella comprensione di altri linguaggi di programmazione come Python e Java. Dal suo sviluppo negli anni '70, SQL è diventato il fondamento dei moderni sistemi di database.

SQL viene utilizzato per memorizzare, recuperare, gestire e manipolare i dati all'interno dei sistemi di gestione dei database (DBMS). Supporta applicazioni di elaborazione e analisi delle transazioni e si integra perfettamente con vari linguaggi di programmazione, come Java, consentendo agli sviluppatori di creare applicazioni per il trattamento dei dati ad alte prestazioni per diverse esigenze di business intelligence.

Le operazioni di base includono i seguenti comandi SQL:

  • SELEZIONA * DA clienti ; per recuperare tutti i record dalla tabella "clienti".
  • INSERISCI IN clienti (nome, e-mail) VALORI ("John Doe", "john@example.com") ; per aggiungere un nuovo cliente o AGGIORNA i clienti
  • IMPOSTA e-mail = "newemail@example.com" DOVE nome = "John Doe"; per aggiornare un indirizzo e-mail.

Le operazioni SQL vengono eseguite attraverso comandi scritti come dichiarazioni. Queste dichiarazioni sono aggregate in programmi che facilitano l'aggiunta, la modifica o il recupero di dati da un database, costituito da righe e colonne in tabelle. Ogni riga contiene un record e ogni colonna rappresenta una categoria di dati correlati. Oltre alle tabelle, altri oggetti del database includono viste (rappresentazioni logiche dei dati), indici (per velocizzare le ricerche) e report (sottoinsiemi di dati basati su criteri).

I database SQL sono progettati per contribuire a un'elaborazione affidabile delle transazioni rispettando le proprietà ACID: Atomicità (tutto o niente), Coerenza (protegge l'integrità del database), Isolamento (le transazioni non interferiscono tra loro) e Durabilità (consente di garantire che le modifiche apportate dalle transazioni compiute vengano mantenute anche in caso di errore del sistema).

I database relazionali organizzano i dati utilizzando queste righe e colonne per strutturare le informazioni, come le informazioni sui clienti e i dettagli degli acquisti. Queste tabelle sono collegate attraverso relazioni, spesso utilizzando un identificatore specifico o una chiave primaria per facilitare il recupero e la gestione efficienti dei dati.

Sebbene l'SQL standard sia ampiamente utilizzato, dialetti specifici come T-SQL di Microsoft SQL Server e PL/SQL di Oracle offrono estensioni per migliorare le funzionalità di programmazione procedurale. SQL è noto per le sue funzioni di creazione, lettura, aggiornamento ed eliminazione, nonché la sua natura non procedurale lo rende accessibile anche a chi ha un'esperienza di programmazione limitata, rendendolo spesso un linguaggio facile anche per i principianti. È conforme agli standard ANSI ed è disponibile nei software SQL gratuiti come MySQL, PostgreSQL e Microsoft SQL.

Come funziona l'SQL?

Come funziona l'SQL?

SQL consente l'organizzazione dei dati in un formato tabulare con righe e colonne, facilitando 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.

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.

Funzioni principali di SQL

Manipolazione dei dati

SQL gestisce operazioni come la creazione, la lettura, l'aggiornamento e l'eliminazione dei dati. Ad esempio, utilizzando l'operazione Unisci, SQL può collegare le informazioni sui clienti con gli acquisti in base all'ID cliente per offrire una visione completa.

Elaborazione rapida di query

SQL elabora e recupera rapidamente i dati, utilizzando indici e tecniche di ottimizzazione delle query per migliorare le prestazioni.

Funzioni di sicurezza

SQL include l'autenticazione degli utenti per proteggere l'integrità e la privacy dei dati, come i controlli degli accessi e la crittografia.

Caratteristiche in comune e compatibilità

Il rispetto di SQL a standard come ANSI e ISO aiuta a garantire un'ampia compatibilità con vari sistemi e piattaforme, inclusi gli ambienti cloud e gli strumenti per i 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.

Open source e supporto della community

Numerose varianti di SQL sono open source e sono supportate da una comunità ampia e attiva che contribuisce al miglioramento costante e alla risoluzione dei problemi.

Nonostante questi punti di forza, altre applicazioni aziendali sono vulnerabili a problemi di sicurezza, come l'autenticazione debole, la progettazione non sicura e la configurazione non corretta. L'SQL injection rimane una minaccia, in cui i soggetti malintenzionati manipolano le query SQL per accedere o danneggiare le informazioni del database. Per salvaguardare i dati è fondamentale conoscere queste vulnerabilità e implementare misure di sicurezza efficaci.

Componenti fondamentali di un sistema SQL

Componenti fondamentali di un sistema SQL

Una tabella SQL, l'unità fondamentale di un database relazionale, è organizzata in righe e colonne per memorizzare e gestire in modo efficiente i dati. SQL consente la creazione di relazioni tra tabelle, come collegare una tabella PRODOTTO a una tabella COLORE utilizzando chiavi e ottimizzando il recupero dei dati e il data storage.

I processi SQL coinvolgono diversi componenti:

  • Analizzatore: verifica la correttezza delle istruzioni SQL e le converte in un formato comprensibile per il database. Questo comporta l'analisi della sintassi e il controllo semantico per garantire che l'utente sia autorizzato a operare.
  • Motore relazionale: noto anche come ottimizzatore di query, pianifica le strategie più efficienti di recupero, scrittura o aggiornamento dei dati, valutando diversi piani di esecuzione delle query. Questo passo è fondamentale per ottimizzare le prestazioni e l'uso delle risorse.
  • Motore di storage: esegue l'istruzione SQL e gestisce il data storage. Gestisce la rappresentazione fisica dei dati, inclusi i formati di file e il buffering dei dati, contribuendo a garantire un accesso ai dati efficiente e gli aggiornamenti su disco.

Comandi SQL comuni

SQL supporta numerose istruzioni per le operazioni sui dati. Ecco le più comuni, con esempi:

SELEZIONA: recupera i dati da una o più tabelle.

SELEZIONA nome, e-mail DA clienti DOVE città = "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.

INSERISCI: aggiunge nuove righe a una tabella.

INSERISCI IN clienti (nome, e-mail, città) VALORI ("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".

AGGIORNA: modifica i dati esistenti in una tabella.

AGGIORNA clienti IMPOSTA e-mail = "new.email@example.com" DOVE nome = "John Doe";

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

ELIMINA: elimina righe da una tabella in base a una condizione.

ELIMINA DA clienti DOVE città = "Boston";

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

CREA TABELLA: definisce una nuova tabella e la sua struttura.

CREA TABELLA prodotti (
product_id CHIAVE PRIMARIA INT,
nome VARCHAR(100),
prezzo DECIMALE(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.

MODIFICA TABELLA: modifica la struttura di una tabella esistente.

MODIFICA TABELLA clienti AGGIUNGI COLONNA DATA compleanno;

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

ELIMINA TABELLA: elimina una tabella e tutti i suoi dati.

ELIMINA TABELLA old_customers;

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

UNISCI: unisce le righe di due o più tabelle in base a una colonna correlata.

SELEZIONA
c.name,
p.product_name
DA
clienti c
UNISCI
ordini o IN c.customer_id = o.customer_id
UNISCI
prodotti p IN o.product_id = p.product_id
DOVE
c.city = "New York";

Questa istruzione recupera i nomi dei clienti e i nomi dei prodotti che hanno effettuato l'ordine. 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.

SQL include inoltre linguaggi specifici per diverse attività:
  • Data Definition Language (DDL): gestisce oggetti di database come tabelle, viste e indici.
  • Data manipulation language (DML): gestisce i dati all'interno dei database attraverso operazioni come INSERISCI, AGGIORNA ed ELIMINA.
  • Data control language (DCL): controlla l'accesso ai dati attraverso comandi come CONCEDI e REVOCA, contribuendo a garantire livelli di accesso appropriati.
  • Data Query Language (DQL): esegue query di dati per recuperare le informazioni.
  • Transaction Control Language (TCL): gestisce le modifiche alle transazioni per contribuire a garantire l'integrità dei dati e supporta le operazioni di rollback e commit.

Ulteriori componenti di un sistema SQL includono vincoli, procedure memorizzate, transazioni, tipi di dati, indici, viste, sicurezza e autorizzazioni. Gli indici velocizzano il recupero dei dati riducendo il numero di accessi al disco necessari per una query.

Le viste hanno funzione di tabelle virtuali basate su query SQL per semplificare le query complesse e migliorare la sicurezza limitando l'accesso ai dati sottostanti. La sicurezza e le autorizzazioni gestiscono l'accesso degli utenti, mentre i meccanismi di backup and recovery proteggono i dati da perdite o danneggiamenti.

SQL a confronto con altri sistemi di database

SQL a confronto con altri sistemi di database

MySQL è un RDBMS open source fornito da Oracle, che gli sviluppatori possono utilizzare gratuitamente su varie piattaforme, inclusi i server cloud. È diffuso nelle applicazioni web grazie alle sue funzioni e adattabilità. MySQL è un'implementazione specifica che utilizza query SQL e viene regolarmente aggiornata e migliorata da Oracle.

I database NoSQL sono nati alla fine degli anni 2000 per gestire dati meno strutturati, offrendo query più rapide e modelli di dati più flessibili rispetto ai database SQL. Mentre i database SQL hanno il loro punto di forza nella gestione dei dati relazionali e contribuiscono a garantire un data storage strutturato ed efficiente, i database NoSQL sono noti per la loro scalabilità e per le diverse strutture di dati come grafici, documenti o ampi archivi di colonne.

Le principali differenze includono:

  • Scalabilità: NoSQL è scalabile orizzontalmente e gestisce un traffico più elevato aggiungendo più server. Al contrario, SQL di solito è scalabile verticalmente e richiede 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.
  • Caratteristiche delle prestazioni: i database SQL sono ottimizzati per query complesse con una rigorosa coerenza dei dati, rispettando i principi ACID. I database NoSQL, che utilizzano i principi BASE (Eventual Consistency) fondamentalmente disponibili, soft state, offrono prestazioni più veloci per tipi di dati specifici, ma con garanzie di coerenza diverse.
  • Casi d'uso: SQL è spesso scelto per applicazioni che richiedono transazioni complesse, dati coerenti e una rigorosa aderenza agli schemi, come i sistemi finanziari o i database CRM. NoSQL è preferito per dati in rapida evoluzione, su larga scala o semistrutturati, come nei social network, nell'analisi in tempo reale o nei sistemi di gestione dei contenuti.
  • Conoscenza e comunità: SQL ha a disposizione una gamma più ampia di risorse e supporto da parte della community grazie alla sua storia più lunga e alle sue caratteristiche in comune. La curva di apprendimento per SQL può essere più ripida a causa della necessità di comprendere i modelli relazionali e l'ottimizzazione delle query, ma per semplificare queste attività sono comunque disponibili numerosi strumenti e interfacce. NoSQL spesso richiede meno progettazione iniziale e può essere più facile da scalare, ma potrebbe richiedere 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. I database NoSQL offrono scalabilità e adattabilità più semplici per le modifiche allo schema senza tempi di inattività o ristrutturazioni prolungati.
Soluzioni correlate

Soluzioni correlate

IBM Db2

IBM Db2 offre solide prestazioni, scalabilità e funzionalità di analisi avanzate per contribuire a garantire una gestione dei dati efficiente e una business intelligence approfondita.

Esplora IBM Db2

IBM® Db2 Big SQL

Un motore ibrido SQL-on-Hadoop che offre query di dati avanzate e altamente sicure, attraverso le principali fonti di big data di livello aziendale, tra cui Hadoop, storage a oggetti e data warehouse.

Esplora IBM Db2 Big SQL

IBM® Cloud Databases for PostgreSQL

Scopra come il servizio PostgreSQL gestito di IBM offre una robusta scalabilità, sicurezza avanzata ed elevata disponibilità, oltre ad una perfetta integrazione in IBM Cloud, per ottimizzare le tue capacità di gestione e analisi dei database.

Esplora IBM Cloud Databases for PostgreSQL
Risorse correlate

Risorse correlate

Ottenere un migliore accesso ai dati grafici e delle blockchain all'interno dei database SQL

Scopri come l’integrazione di dati grafici e delle blockchain nei database SQL può migliorare l’accessibilità dei dati, semplificare i processi di query e sbloccare insight più approfonditi per soluzioni aziendali basate su AI.

Cos'è un database relazionale?

Ottieni una conoscenza completa dei database relazionali, della loro struttura, dei vantaggi e di come facilitano la gestione dei dati e l’esecuzione di query per ottenere insight aziendali.

Database SQL e NoSQL: qual è la differenza?

Scopri le principali differenze tra i database SQL e NoSQL e impara a scegliere il tipo di database più adatto alle tue specifiche esigenze di gestione dei dati e ai tuoi casi d’uso.

Generare SQL da testo con gli LLM

Converti il testo in una rappresentazione strutturata e genera una query SQL semanticamente corretta.

Fai il passo successivo

Ottieni un unico motore cloud-native per amministratori di database, architetti aziendali e sviluppatori per mantenere le app in esecuzione, memorizzare ed eseguire qualsiasi query e semplificare lo sviluppo. Indipendentemente dal volume o dalla complessità delle transazioni, proteggi le tue applicazioni e rendile altamente performanti e resilienti ovunque.

Esplora il database di IBM Db2 Prova Db2 SaaS su IBM Cloud