SQL è il linguaggio di definizione e manipolazione dei dati universalmente usato nelle basi di dati relazionali. Esso ha le seguenti funzioni:
- definizione dei dati: SQL permette di definire, in modo integrato, i tre livelli della base di dati: il livello esterno (viste), il livello logico (struttura delle tabelle e vincoli di integrità) e il livello fisico (memoriazzazione delle tabelle e indici) della base di dati;
- aggiornamento dei dati: SQL permette di aggiornare l'istanza della base mediante inserimenti, cancellazioni e modifiche di tuple;
- interrogazione sui dati: SQL consente di estrarre informazione presente nella base di dati.
Con SQL si può quindi leggere, aggiornare, cancellare ed inserire dei dati in un database, per fare questo dovremo utilizzare i comandi SELECT, gli UPDATE, i DELETE o gli INSERT; vediamoli nel dettaglio:
SELECT
Il comando Select è il comando di interrogazione (query) di SQL, e la sua potenza espressiva è tale da poter realizzare in poche righe interrogazioni che in altri linguaggi richiederebbero molte pagine di codice. Il risultato del comando è una tabella. La select prevede molte clausole che la rendono molto flessibile e potente.
La sintassi nella forma più semplice è:
SELECT <elenco attributi> FROM <elenco tabelle> WHERE <condizione>
Il risultato di una SELECT è una tabella. Conterrà i dati di tutti i record della tabella interrogata che soddisfano la condizione del WHERE.
La condizione WHERE è opzionale: serve per filtrare i record che verranno estratti dalla tabella. Qual’ ora non fosse presente, invece, verranno estratti tutti i dati senza alcuna eccezione.
E’ possibile estrarre solo una parte dei campi della tabella (specificandoli uno per uno) oppure tutti, con la “parola chiave” * dopo il SELECT, come in esempio.
ESEMPIO :
SELECT * FROM users WHERE username='Silvia' AND password='pippo' |
In questo caso verranno estratti tutti i dati dalla tabella “users” dove l’username equivale a “Maicol” e la Password a “ciao90″.
Parametri “avanzati” per la SELECT
Oltre alla normale operazione di selezione, è possibile “arricchire” la nostra query con dei parametri avanzati, che ci permetteranno di fare diverse cose.
I parametri più comuni che oggi citeremo sono:
- Clausola AS: consente di cambiare il nome di un campo.
- Clausola ORDER BY: produce una tabella ordinata secondo i campi specificati dopo la parola chiave BY;
- Operatore GROUP BY: produce una tabella per dati raggruppati;
- Operatore UNION, esegue l'unione di due comandi SELECT.
- Clausola DISTINCT: elenca i valori di un campo eliminando i doppioni;
- Funzione COUNT() produce in uscita il conteggio dei record che soddisfano le clausole della SELECT;
- Funzioni statistiche: SUM(), AVG(), MAX(), MIN(): consentono di calcolare la somma, la media, il minimo e il massimo in una tabella;
- Funzioni di stringa: UPPER(), LOWER(), TRIM(), SUBSTRING().
- Funzioni di data: EXTRACT().
- Predicato ALL;
- Predicato [NOT] EXISTS: verifica se una data tabella è o no vuota;
- Predicato IN: verifica se un dato valore appartiene o no ad un insieme;
- Predicato IS [NOT] NULL: serve a verificare se un certo campo è o no vuoto;
- Predicato LIKE: inserito nella clausola WHERE consente di confrontare due stringhe in modo molto flessibile;
ESEMPIO:
SELECT DISTINCT <lista_campi/*> FROM <nome_tabella> [WHERE <condizione_logica>]GROUP BY <nome_campo / posizione> ORDER BY <nome_campo / posizione> [ASC/DESC]LIMIT [<record_di_partenza>,] <numero_record>
SELECT DISTINCT username,password FROM users ORDER BY id ASC LIMIT 0,10 |
INSERT
Il comando Insert serve ad inserire una o più nuove tuple nella tabella indicata; si tratta quindi di un'operazione di transazione; Insert equivale all'Unione del modello relazionale, ma con una differenza: non c'è alcun controllo sui "doppioni", eventuali tuple già presenti nella tabella vengono comunque inserite dando luogo a duplicati.
La sintassi è:
INSERT INTO <Tabella> [<lista attributi>] VALUES (<lista valori>)
dove <lista attributi> è facoltativa;
se non è presente si intende che devono essere specificati tutti i campi; se invece la lista c'è, allora dovranno essere specificati solo i campi elencati nello stesso ordine.
Esempio corretto:
INSERT INTO users(username,password) VALUES('Maicol','ciao90') |
Esempio scorretto:
INSERT INTO users(username,password) VALUES('Maicol') |
UPDATE
Il comando Update serve ad aggiornare i dati di una tabella; si tratta quindi di un operazione di transazione.
La sintassi è:
UPDATE <Tabella> SET <nome campo> = <nuovo valore> [WHERE <condizione>]
I campi elencati alla clausola SET vengono aggiornati per tutti i record che soddisfanno la clausola WHERE. Quest'ultima può essere tralasciata ma in questo caso vengono aggiornati tutte le righe della tabella. Da usare con molta cautela!!
La situazione più frequente è che vengano aggiornati i campi di un record data la chiave; nell'esempio a destra si aggiornano i campi nome, cognome, data di nascita dato il Codice Fiscale (CF) che ovviamente non è opportuno cambiare.
Esempio sicuro:
UPDATE users SET username='pippo' WHERE id=1 |
Esempio pericoloso:
UPDATE users SET username='pippo' |
DELETE
Il comando Delete serve a cancellare una o più tuple di un data-base; si tratta quindi di un operazione di transazione.
La sintassi è:
DELETE FROM <Tabella> WHERE <condizione>
Vengono eliminate tutte le tuple che soddisfanno la condizione specificata dal WHERE; è quindi possibile eliminare un gran numero di dati con un solo comando; usare con cautela!
Esempio sicuro:
DELETE FROM users WHERE id=1 |
Esempio pericoloso:
1 | DELETE FROM users |