SQL DI BASE
23/01/2012SQL, acronimo di Structured Query Language, è un linguaggio utilizzato per manipolare database.
MySQL sfrutta proprio SQL per interagire con gli utenti, attraverso dei comandi comunemente chiamati query.
Una query permette di "parlare" al database e consente di effettuare operazioni sul suo contenuto o sulla sua struttura.
Per selezionare i campi di un database, si usa il termine SELECT. Ammettiamo di dover estrarre il contenuto da tutti i campi di una tabella di nome "clienti", faremo:
SELECT * FROM clienti;
L'asterisco ( * ) ci consente di richiamare i campi senza specificare tutti i loro nomi. Il termine FROM permette di identificare il nome della tabella dalla quale estrapolare
i dati. Se volessimo invece estrarre un solo campo, è inutile estrarli tutti e potremmo quindi usare il nome specifico, ad esempio:
SELECT ordini FROM clienti;
Se i campi fossero più di uno, è necessario separare i vari valori con una virgola ( , )
ad esempio:
SELECT ordini, citta, fatture FROM clienti;
Affinare la query: la clausola WHERE
Può essere necessario specificare meglio una query in modo tale da avere un risultato vicino alle nostre esigenze. Ad esempio, potremmo voler estrarre solo i nomi dei clienti della città di Milano, ecco come fare:
SELECT nome FROM clienti WHERE citta = 'milano';
In questo modo, avremo come risultato solo i nomi dei clienti che hanno sede a
Milano.
Più in profondità: AND e OR
Facendo riferimento all'esempio di prima, potremmo richiedere i nomi dei clienti che hanno sede a Milano e hanno effettuato più di 10 ordini. Ecco come:
SELECT nome FROM clienti WHERE citta = 'milano' AND ordini <= 10;
Con la query sopra specificata, avremo sottomano i clienti di Milano con un numero di ordini maggiore o uguale a 10. Il termine AND può essere tranquillamente sostituito da due e commerciali ( && ).
Il termine OR, permette di creare un'alternativa. Ad esempio, se volessimo estrarre i clienti con sede a Milano oppure a Napoli, faremo:
SELECT nome FROM clienti WHERE citta = 'milano' OR citta = 'napoli';
Il termine OR può essere sostituito dalle due barre verticali ( || ).
Ordiniamo i dati: ORDER BY
Per ordinare l'estrazione di una tabella, si può usare ORDER BY, applicandolo magari assieme ai termini ASC (di default) e DESC.
Vediamo un esempio:
SELECT * FROM clienti ORDER BY ordini DESC;
In questo modo avremo i clienti estratti secondo il numero di ordini effettuati. Con
DESC specifichiamo dal numero più alto a quello più basso.
Al contrario, ASC ordina dal numero più basso al più alto ed è di default.
ASC e DESC funzionano anche con campi diversi dai campi di tipo INT o simili. In caso di campi di stringhe (TEXT, VARCHAR ecc.) seguiranno l'ordine alfabetico: ASC dalla A alla Z.
DESC il contrario, dalla Z alla A.
Quindi, tornando all'esempio precedente, per avere i nomi delle aziende clienti in ordine alfabetico, faremo:
SELECT * FROM clienti ORDER BY nome ASC;
ORDER BY multipli
Si possono ordinare i campi anche in base a più valori. Ammettiamo di volere i risultati delle query precedenti, dai clienti che hanno fatto più ordini a quelli che ne hanno fatti meno, in ordine alfabetico.
SELECT * FROM clienti ORDER BY nome, ordini DESC;
In questo modo, avremo le società in ordine alfabetico e da chi ha fatto più ordini a chi ne ha fatti di meno.