Per un developer, interagire e lavorare con dati, tabelle e database relazionali in genere, è all’ordine del giorno. Per questo, uno dei linguaggi più utilizzati al mondo è SQL, acronimo di Structured Query Language, il quale ci permette di comunicare con quasi tutti i sistemi di database più comuni (MySQL, PostgreSQL, Oracle).
Cos’è SQL
Il linguaggio SQL è, ed è stato, semplicemente, il linguaggio di query per i database utilizzato negli ultimi 50 anni perché è espressivo e facile da usare e ricordare.
Le strutture dati, però, possono progressivamente incrementare di complessità, in quanto la query meno è complessa e più è facile da gestire e accedervi. Se la complessità cresce, di conseguenza, diventerà sempre più complesso accedere alle varie tabelle relazionali e usare istruzioni SQL più elaborate per gestire i dati.
Per entrare in totale confidenza con questo linguaggio è importante sapere quali sono i 10 migliori e più utili comandi SQL per interagire con i database e le sue righe e colonne ricche di dati.
- SQL SELECT
Partiamo dal comando più comune e semplice di tutti: il SELECT è il pane quotidiano per accedere ai dati di un database relazionale. La maggior parte dei comandi nel linguaggio SQL iniziano con questo statement. Può essere utilizzato per selezionare righe da una tabella o semplicemente valutare diverse espressioni. Ecco alcuni esempi:
SELECT * from player;
Seleziona tutti i campi dalla tabella player.
SELECT SUM(amount) from payment;
Calcola la somma di tutte le vendite sommando i prezzi dalla tabella payment.
- SQL WHERE
Per filtrare l’utilizzo del SELECT prima citato, bisogna fissare delle condizioni. Per farlo si utilizza il comando WHERE, il quale ci permette di effettuare un’elaborazione più accurata sui dati a cui accediamo.
SELECT * from player WHERE LOWER(last_name)= ‘rossi’;
Seleziona tutti i giocatori dove il loro cognome è ’rossi’.
- SQL BETWEEN
Per selezionare valori specifici all’interno di un range è preferibile utilizzare il comando sql BETWEEN. Per farlo, dobbiamo realizzare uno statement un po’ più elaborato. Fissare uno starting point ed un end point tramite l’ausilio del comando WHERE.
SELECT * from car WHERE DATE(register_date) BETWEEN ‘2021-07-01’ AND ‘2022-07-01’;
Seleziona tutte le auto che vengono immatricolate tra il 2021-07-01 e il 2022-07-01. In questo esempio specifico abbiamo introdotto l’operatore “AND” che ci permette di filtrare in maniera più profonda i dati a cui vogliamo accedere e/o modificare.
- SQL MIN/MAX
Quando abbiamo bisogno di trovare il massimo o il minimo valore in una colonna la funzione MIN/MAX è di fondamentale utilizzo. Per esempio:
SELECT MAX(discount_percentage), MIN(discount_percentage) from products;
In questo esempio, vengono selezionati la minima e la massima percentuale di sconto dalla tabella products.
- SQL LIMIT/OFFSET
Questo comando entra in gioco nel momento in cui si vuole restringere il numero di dati a cui accedere. LIMIT specifica il numero di record da restituire, utile all’interno di tabelle molto grandi. OFFSET invece specifica il dato da cui iniziare a restituire i dati filtrati. Vediamo un esempio per comprenderne l’utilizzo:
SELECT * from artists LIMIT 5 OFFSET 2;
In questo modo dalla tabella artists selezioniamo 5 di loro senza però contare i primi due in ordine d’inserimento all’interno della tabella. Questo comando ritornerà 5 artisti escludendo però i primi due nella tabella.
- SQL ORDER BY
Di default, i risultati di una query vengono mostrati nell’ordine in cui sono registrati all’interno del database. Per cambiare questo ordine possiamo utilizzare il comando ORDER BY.
SELECT * from tracks ORDER BY album_id;
Nell’esempio vengono mostrate tutte le tracks ordinate per id dell’album. Con l’ORDER BY è possibile anche creare liste con più attributi, ad esempio ordinare tracks non solo per album id, ma anche per compositore. Di default, i risultati vengono ordinati in ordine ascendente.
SELECT * from tracks ORDER BY name DESC;
Con questa notazione specifichiamo che vogliamo ordinare gli elementi di tracks in modo discendente.
- SQL GROUP BY
Sulla scia del comando visto nel punto precedente, introduciamo anche il GROUP BY. Indica al database come raggruppare un set di risultati, quindi possiamo scrivere più semplicemente delle query un po’ più elaborate, ad esempio:
SELECT COUNT (*) FROM tracks WHERE genre_id = 1;
SELECT COUNT (*) FROM tracks WHERE genre_id = 2;
SELECT COUNT (*) FROM tracks WHERE genre_id = 3;.
Fortunatamente la clausola GROUP BY viene in nostro soccorso, semplificando gli statement in una singola query, ovvero:
SELECT genre_id, COUNT (*) from tracks GROUP BY genre_id;
- SQL DROP
Un comando utile, quanto versatile, quello del DROP. Applicabile anche all’intero database in cui si sta operando, permette di cancellare qualsiasi cosa all’interno di esso, che si tratti di un database, una tabella o un singolo dato.
DROP tracks;
- SQL INNER JOIN
Se SELECT è il pane quotidiano dei comandi SQL, allora il comando JOIN è per le tabelle il sale in tavola. JOIN è un comando estremamente potente per combinare le relazioni tra tabelle e creare set di dati comuni.
SELECT first_name, last_name, title, description from film_actor fa INNER JOIN actor ON (fa.actor_id = actor.actor_id) INNER JOIN film ON (fa.film_id = film.film_id);
Spiegata meglio, questa query fa riferimento al film che ha una relazione many-to-many con gli attributi attore e quindi usiamo la tabella film_actor come punto di unione per i due set. Facendo un JOIN tra film_actor e actor e poi tra film_actor e film. In questo modo il SELECT ci permette di accedere a tutte le colonne delle due tabelle.
- SQL ALIAS
Si tratta di un comando non molto conosciuto, ma veramente utile. ALIAS è utilizzato per rinominare temporaneamente una tabella. Dare una sorta di soprannome che esiste solo all’interno della singola query che si sta eseguendo.
SELECT A.age FROM people AS A;
Puoi usare qualsiasi nome valido come alias, ma è sempre meglio utilizzare lettere dell’alfabeto. Prima di ogni nome di una colonna, viene messo il prefisso dell’alias. Utile in situazioni di database molto complessi e con nomi difficili da ricordare o, ancora meglio, quando ci si trova di fronte a lunghe query.
I comandi in SQL sono davvero tanti e spesso e volentieri tutti si rivelano utili nelle interrogazioni che svolgiamo per accedere ai dati. Quali di questi comandi conoscevi già?