- Scopri il comandi SQL essenziale ed esempi pratici per query, gestione e sicurezza in database.
- Scopri come utilizzare SELECT, WHERE, JOIN, GROUP BY, funzioni di aggregazione e viste, utilizzando la sintassi e casi d'uso reali.
- soddisfare Tricks avanzate, gestione delle autorizzazioni e FAQ per padroneggiare SQL in ambienti professionali.
Il linguaggio di query strutturato (SQL) è uno di quegli strumenti che, una volta padroneggiato, diventa il tuo migliore alleato per interagire con qualsiasi database relazionale. Se ti sei mai chiesto come accedere, modificare, eliminare o analizzare grandi volumi di dati in modo semplice ed efficiente, SQL è la risposta che stavi cercando. Impara a usare correttamente i comandi SQL segna la differenza tra essere un utente base e diventare un vero esperto nella gestione e nell'analisi dei dati.
In questo articolo vi porto un raccolta completa dei principali comandi SQL Il tutto corredato da spiegazioni chiare ed esempi pratici, che coprono tutto, dalle basi alle query più avanzate. Vi mostrerò anche trucchi e dettagli che spesso passano inosservati in articoli più superficiali, così potrete ottenere il massimo dai vostri database, che siate alle prime armi o che vogliate migliorare le vostre conoscenze. Preparatevi a immergervi nell'universo SQL e a scoprire come questo linguaggio può trasformare il vostro modo di lavorare con le informazioni.
Cos'è SQL e perché è ancora essenziale?
SQL, o Structured Query Language, è un linguaggio di query programmazione Progettato specificamente per gestire e manipolare database relazionali. Sebbene sia stato sviluppato negli anni '70, rimane la soluzione standard per comunicare con database come MySQL, PostgreSQL, SQL Server, MariaDB e Oracle Database, tra gli altri.
Il motivo della sua longevità è semplice: SQL consente di svolgere qualsiasi attività, da quelle di base come l'interrogazione dei dati a quelle avanzate come l'unione di tabelle complesse, la creazione di strutture, l'aggiornamento di record in blocco o la definizione di autorizzazioni.Inoltre, la sua sintassi è sufficientemente semplice da essere rapidamente fruibile da chiunque, ma sufficientemente potente da risolvere complessi problemi aziendali.
Professionisti di un'ampia gamma di settori, dagli sviluppatori, analisti e amministratori di database agli scienziati dei dati, si affidano a SQL per elaborare, pulire e analizzare dati critici per i loro progetti e le loro organizzazioni.
Categorie di comandi SQL: DQL, DML, DDL e DCL
Prima di passare agli esempi, vale la pena ricordare che I comandi SQL possono essere raggruppati in diverse categorie in base alla loro funzione:
- DQL (linguaggio di query dei dati): Queste sono le frasi per interrogare i dati, come SELEZIONA.
- DML (linguaggio di manipolazione dei dati): Manipolano i record, con comandi come INSERT, AGGIORNAMENTO y DELETE.
- DDL (linguaggio di definizione dei dati): Gestiscono la struttura del database, ad esempio, CREA, ETÀ, GOCCIA y TRONCARE.
- DCL (linguaggio di controllo dati): Controllano i permessi e l'accesso, utilizzando GRANT y REVOCARE.
Ogni tipo di comando svolge una funzione essenziale nella gestione quotidiana del database. È importante sapere quale comando utilizzare in ogni situazione per evitare errori o persino disastri nella gestione dei dati.
Comandi SQL principali: fondamenti ed esempi pratici
Padroneggiare i comandi SQL di base apre le porte a praticamente qualsiasi attività di gestione o analisi dei dati. Di seguito, spiegherò i più rilevanti, il loro funzionamento e fornirò esempi di utilizzo per aiutarvi ad apprenderli.
SELECT: Il re delle query
Il comando SELEZIONA È la base su cui si basa la maggior parte delle operazioni in SQL. Permette di recuperare i dati memorizzati in una o più tabelle.
Sintassi generale:
SELEZIONA colonna1, colonna2, ... DA nome_tabella;
Per ottenere tutte le colonne di una tabella, è sufficiente utilizzare l'asterisco:
SELEZIONA * DA dipendenti;
Se vuoi filtrare dati specifici, puoi aggiungere delle condizioni:
SELEZIONA nome, età DA dipendenti DOVE età > 30;
Attraverso SELEZIONA È possibile recuperare qualsiasi cosa, da un singolo valore a set di dati complessi, applicare funzioni di aggregazione, calcolare colonne derivate e preparare dati per report o visualizzazioni.
DOVE: Filtraggio preciso dei risultati
La clausola DOVE Permette di specificare condizioni per selezionare solo le righe che soddisfano determinati criteri. È un filtro fondamentale per qualsiasi query.
Sintassi di base:
SELEZIONA * DA prodotti DOVE prezzo < 100;
È possibile combinare le condizioni utilizzando operatori logici come E, OR y NON, così come gli operatori di confronto (=, <, >, <=, >=, <>).
Ad esempio, per reclutare addetti alle vendite di età inferiore ai 30 anni:
SELECT * FROM dipendenti DOVE reparto = 'Vendite' AND età < 30;
INSERISCI: Aggiunta di nuovi record
Con INSERT È possibile aggiungere nuove righe a una tabella. Questo è essenziale per alimentare i database con informazioni aggiornate.
Sintassi generale:
INSERISCI IN prodotti (nome, prezzo) VALUES ('Tastiera', 29.99);
Se vuoi aggiungere più record in una singola query, puoi anche procedere come segue:
INSERISCI IN prodotti (nome, prezzo) VALORI ('Mouse', 15.50), ('Monitor', 120.00);
Ricorda che se ometti l'elenco delle colonne, devi fornire un valore per ogni campo della tabella, rispettandone l'ordine.
AGGIORNAMENTO: Modifica dei dati esistenti
Il comando AGGIORNAMENTO Permette di modificare il valore di uno o più campi nei record che soddisfano una condizione specifica. È utile per correggere errori o aggiornare le informazioni.
Sintassi:
AGGIORNA dipendenti IMPOSTA stipendio = stipendio * 1.05 DOVE reparto = 'Marketing';
In questo esempio, tutti i dipendenti del marketing vedranno aumentare il loro stipendio del 5%. Questo è fondamentale. usa WHERE ogni volta che aggiorni, a meno che non si voglia realmente modificare l'intera tabella.
ELIMINA: Eliminazione dei dati
Per eliminare i record utilizzare DELETE accanto a una condizione, evitando così di eliminare accidentalmente tutti i dati dalla tabella.
Esempio:
ELIMINA DA prodotti DOVE id_producto = 10;
Se si omette la clausola WHERE, tutte le righe della tabella verranno eliminate. Attenzione!
ORDINA PER: Organizzazione dei risultati
La clausola ORDINATO DA viene utilizzato per ordinare i risultati di una query in base a una o più colonne. Per impostazione predefinita, l'ordine sarà crescente, ma è possibile indicare ASC o DESC di cui hai bisogno.
SELEZIONA * DA dipendenti ORDINA PER stipendio DESC;
È possibile combinare più colonne nell'ordinamento:
SELEZIONA * DA prodotti ORDINA PER categoria ASC, prezzo DESC;
GROUP BY e funzioni di aggregazione: SUM, AVG, MIN, MAX, COUNT
RAGGRUPPA PER consente di raggruppare i risultati in base a una o più colonne, il che è molto utile in combinazione con funzioni come SOMMA() (aggiunta), AVG () (media), MIN (minimo), MAX (massimo) e COUNT (conteggio).
Ad esempio, per sapere quanti prodotti sono presenti in ogni categoria:
SELEZIONA categoria, CONTA(*) DA prodotti GRUPPO PER categoria;
Oppure per calcolare il conto totale per ogni cliente:
SELEZIONA customer_id, SUM(importo) DA vendite GRUPPO PER customer_id;
È possibile filtrare i gruppi risultanti utilizzando la clausola VISTA:
SELEZIONA reparto, AVG(stipendio) DA dipendenti GRUPPA PER reparto AVENTE AVG(stipendio) > 2000;
LIMIT e OFFSET: limitazione del numero di risultati
Quando le tue tabelle contengono migliaia di record, LIMITE È essenziale visualizzare solo una parte dei risultati, migliorando così le prestazioni e la leggibilità.
SELEZIONA * DA prodotti LIMITE 10;
Con COMPENSARE È possibile saltare alcune righe, utile per la paginazione:
SELEZIONA * DA prodotti LIMITE 10 OFFSET 20;
TRA, IN e COME: Condizioni WHERE avanzate
Queste parole chiave ampliano le possibilità di filtraggio:
- FRA: Seleziona i valori all'interno di un intervallo.
SELEZIONA * DA dipendenti DOVE stipendio TRA 1000 E 3000;
- IN: Cerca più valori.
SELEZIONA * DA prodotti DOVE categoria IN ('Computer', 'Elettronica');
- PIACE: Cercare schemi nel testo.
SELECT * FROM clienti DOVE nome LIKE 'A%';
Possono essere utilizzati anche caratteri jolly come % (qualsiasi numero di caratteri) e _ (un singolo carattere) per personalizzare ulteriormente le ricerche con MI PIACE.
JOIN: Incrocio di informazioni tra tabelle
Uno dei grandi poteri di SQL è la capacità di combinare dati da tabelle diverse utilizzando ISCRIVITI. I più comuni sono:
- UNIONE INTERNA: Restituisce le righe corrispondenti in entrambe le tabelle.
- UNISCITI A SINISTRA: Restituisce tutte le righe della tabella di sinistra e tutte le corrispondenze da quella di destra (aggiungendo NULL se non c'è corrispondenza).
- GIUSTO UNISCITI: Restituisce tutte le righe della tabella di destra e le righe corrispondenti della tabella di sinistra.
- ISCRIZIONE ESTERNA COMPLETA: Restituisce tutte le righe di entrambe le tabelle (riempite con NULL dove non c'è corrispondenza).
Esempio di INNER JOIN:
SELEZIONA orders.id, customers.name DA orders INNER JOIN customers SU orders.customer_id = customers.id;
UNISCITI A SINISTRA:
SELEZIONA dipendenti.nome, vendite.importo DA dipendenti SINISTRA UNISCI vendite SU dipendenti.id = vendite.dipendente_id;
ALTER, CREATE e DROP: modifica della struttura del database
Oltre a manipolare i dati, SQL consente di definire e modificare la struttura delle tabelle e di altri oggetti del database:
- CREARE: Per creare nuovi oggetti (tabelle, viste, indici, utenti…).
CREA TABELLA prodotti (id INT PRIMARY KEY, nome VARCHAR(100), prezzo DECIMAL(8,2));
- ALTERARE: Per modificare la struttura di un oggetto esistente.
ALTER TABLE prodotti ADD descrizione VARCHAR(255);
ALTER TABLE prodotti ALTER COLUMN prezzo SET NOT NULL;
- GOCCIOLARE: Per eliminare oggetti dal database.
Prodotti DROP TABLE;
ELIMINA UTENTE example_user CASCADE;
Viste (VIEW): query riutilizzabili e filtri avanzati
Le vistas Sono oggetti virtuali che rappresentano una query salvata. Funzionano come una tabella, ma non memorizzano dati; puntano semplicemente a informazioni presenti in altre tabelle. Sono utili per semplificare query complesse, centralizzare i filtri e facilitare l'accesso a informazioni specifiche.
CREA VISTA active_employees COME SELEZIONA * DA employees DOVE active = 1;
È possibile interrogare la vista come se si trattasse di una tabella:
SELEZIONA * DA dipendenti_attivi;
Le viste sono ideali per gestire le autorizzazioni e visualizzare solo i dati rilevanti per determinati utenti.
Funzioni aggregate e calcoli sulle colonne
SQL ti consente di lavorare con funzioni aggiunte e operatori aritmetici per eseguire calcoli sui dati:
- SOMMA(): Somma totale di una colonna.
- MEDIA(): Media aritmetica.
- MIN() e MAX(): Minimo e massimo.
- CONTARE(): Numero di record.
Ad esempio, se si desidera il numero di dipendenti per reparto:
SELEZIONA reparto, CONTA(*) DA dipendenti GRUPPA PER reparto;
Oppure lo stipendio più alto per reparto:
SELEZIONA reparto, MAX(stipendio) DA dipendenti GRUPPO PER reparto;
È anche possibile creare colonne calcolate direttamente nella query:
SELEZIONA nome, stipendio * 0.95 COME stipendio_netto DA dipendenti;
Utilizzo di alias (AS) per tabelle e colonne
Nelle query, è possibile assegnare nomi temporanei a colonne e tabelle utilizzando il comando ASCiò semplifica la lettura dei risultati e la scrittura di query complesse.
Ad esempio:
SELECT e.name AS employee, d.name AS department FROM employees AS e JOIN departments AS d ON e.department_id = d.id;
In questo modo, il risultato mostrerà colonne con nomi personalizzati. L'utilizzo di alias è particolarmente utile quando si eseguono JOIN o quando le colonne hanno nomi lunghi o non descrittivi.
Esempi di query SQL avanzate: risoluzione di casi reali
Per diventare autosufficienti in SQL, è necessario affrontare sfide reali. Ecco alcuni suggerimenti: esempi espansi estratti da casi pratici che aiutano a consolidare le conoscenze.
Interroga tutti i dipendenti di un reparto e le loro vendite totali
SELECT e.id, e.name, SUM(v.amount) AS total_sales FROM employees e JOIN sales v ON e.id = v.employee_id WHERE e.department = 'Sales' GROUP BY e.id, e.name;
Questo esempio mostra come unire tabelle, applicare funzioni di aggregazione e filtrare i risultati.
Calcolo dello stipendio medio e massimo per reparto
SELEZIONA reparto, AVG(stipendio) COME stipendio_medio, MAX(stipendio) COME stipendio_massimo DA dipendenti GRUPPA PER reparto;
In questo modo è possibile analizzare la distribuzione degli stipendi e individuare disuguaglianze o aree con maggiori incentivi.
Conta i prodotti per fascia di prezzo utilizzando CASE
SELEZIONA CASO QUANDO prezzo < 50 ALLORA 'Economico' QUANDO prezzo < 150 ALLORA 'Medio' ALTRIMENTI 'Costoso' FINE COME intervallo_prezzo, CONTA(*) COME quantità DA prodotti GRUPPO PER intervallo_prezzo;
CASO D'USO consente di creare categorie personalizzate all'interno della query.
Esempio di query per trovare record duplicati
SELEZIONA nome, COUNT(*) DA clienti GROUP BY nome AVENTE COUNT(*) > 1;
Ciò ti aiuta a mantenere il tuo database pulito e libero da dati ridondanti.
Identificare lo stipendio più alto (sottoquery)
SELEZIONA il primo stipendio da (SELEZIONA i primi N stipendi distinti da dipendenti ORDINA PER stipendio DESC) ORDINA PER stipendio ASC;
Perfetto per rispondere a domande durante colloqui tecnici o per produrre report avanzati.
Elimina automaticamente i vecchi record
CANCELLA DA i registri DOVE data < ORA() - INTERVALLO 6 MESI;
Ideale per database di produzione in cui è necessario controllare le dimensioni delle tabelle.
Suggerimenti e trucchi utili in SQL
Padroneggiare SQL non significa solo saper scrivere query di base. Ecco alcuni Suggerimenti per sfruttare al meglio la lingua:
- Utilizzare sempre WHERE in UPDATE e DELETE per impedire modifiche o eliminazioni accidentali di massa.
- Inserire gli indici nelle colonne più consultate per velocizzare le ricerche e le unioni.
- Preferire JOIN espliciti a WHERE per unire le tabelle: facilita la manutenzione e la leggibilità.
- Utilizzare le funzioni di aggregazione e GROUP BY per creare report e analisi automatiche senza dover ricorrere a fogli di calcolo esterni.
- Test su un database di prova prima di apportare modifiche sostanziali.
- Controlla i permessi con GRANT e REVOKE per garantire la sicurezza dei tuoi dati.
- Approfitta del panorama (VIEW) per semplificare l'accesso a informazioni complesse e centralizzare la logica aziendale.
- Non abusare di SELECT *, poiché potresti importare più dati del necessario e rallentare il sistema.
- Commenta le query complesse per facilitare la futura manutenzione.
Domande frequenti sui comandi SQL nelle interviste e nei casi reali
Padroneggiare SQL è essenziale per eccellere nei colloqui tecnici e risolvere i problemi quotidiani. Ecco alcune domande e risposte tipiche per aiutarti a prepararti:
- Cos'è un INNER JOIN?
Questo è il join predefinito in SQL; restituisce righe che corrispondono a entrambe le tabelle. Esempio:SELEZIONA * DA A INNER JOIN B SU A.id = B.a_id;
- A cosa serve LEFT JOIN?
Restituisce tutte le righe della tabella di sinistra e tutte le corrispondenze della tabella di destra. Esempio:SELEZIONA * DA dipendenti SINISTRA UNISCI vendite SU dipendenti.id = vendite.dipendente_id;
- Qual è la differenza tra DROP e DELETE?
DELETE elimina le righe da una tabella, mentre GOCCIA rimuove completamente l'oggetto (tabella, vista, utente) dal database. - È possibile eseguire un rollback dopo un ALTER?
No, perché ALTER è DDL e molti sistemi eseguono il commit automaticamente. È importante assicurarsi prima di utilizzarlo. - Cosa sono le pseudocolonne?
Sono colonne virtuali generate dal sistema, come ROWID, USER o CURRVAL in Oracle. - Come creare una vista?
CREA VISTA view_employees COME SELEZIONA nome, stipendio DA dipendenti;
- Come concedere le autorizzazioni?
CONCEDI SELEZIONA su inventario A ana, rita;
- Come eliminare un utente e i suoi dati?
ELIMINA UTENTE utente CASCADE;
Espressioni regolari e operatori speciali in SQL
Una parte meno nota ma molto potente di SQL è la possibilità di cercare pattern utilizzando espressioni regolari e operatori avanzati. Ad esempio:
- %: Rappresenta qualsiasi stringa di qualsiasi lunghezza (utilizzato in LIKE).
- _: Rappresenta un singolo carattere (anche in LIKE).
- | : Alternanza, cercare una cosa o l'altra.
- *: Ripetizione di un carattere zero o più volte.
Gestione avanzata: ruoli, autorizzazioni e sicurezza
La gestione di un database non si limita all'interrogazione e alla modifica dei dati. È fondamentale controllare chi può accedere, modificare o eliminare le informazioni utilizzando comandi come GRANT, REVOCARE, o gestione avanzata di RUOLI:
CREA RUOLO gestore;
CONCEDI SELEZIONA, INSERISCI, AGGIORNA SUI dipendenti AL manager;
Responsabile del finanziamento A Juan, Maria;
In questo modo è possibile centralizzare la sicurezza e facilitare la gestione delle autorizzazioni in ambienti di grandi dimensioni. Se desideri approfondire la gestione delle autorizzazioni, consulta il nostro articolo su automazione e amministrazione.
Scrittore appassionato del mondo dei byte e della tecnologia in generale. Adoro condividere le mie conoscenze attraverso la scrittura, ed è quello che farò in questo blog, mostrarti tutte le cose più interessanti su gadget, software, hardware, tendenze tecnologiche e altro ancora. Il mio obiettivo è aiutarti a navigare nel mondo digitale in modo semplice e divertente.