Passeremo velocemente su questa parte, poiché davvero semplice. Avrai comunque modo di eseguire alcune operazioni che ti mostrino in pratica le possibilità di base e ti consentano, se avrai voglia, di fare autonomamente sperimentazioni più ampie con le clausole che vedrai. Inoltre, avrai le basi per cercare autonomamente le altre clausole ed istruzioni offerte dal linguaggio SQL.
COUNT, SUM; AND, OR, NOT SQL
-
Funzioni e operatori aritmetici
Come qualsiasi linguaggio di programmazione, anche il linguaggio SQL consente di manipolare i dati con funzioni ed operatori aritmetici.
COUNT e SUM le hai già usate in un esempio precedente. Sai, quindi, già che gli operatori aritmetici, come l’addizione, la sottrazione, la moltiplicazione e la divisione, sono clausole dell’istruzione SELECT.
-
Funzioni e operatori logici
Gli operatori logici, come AND, OR e NOT, non li hai usati negli esempi precedenti. Ma, niente paura! In genere, sono clausole dell’istruzione WHERE per filtrare i dati in base a determinate condizioni.
UPPER, CONCAT, SUBSTRING; DATEDIFF SQL
-
Funzioni per la manipolazione di stringhe
Le funzioni di manipolazione delle stringhe sono molto importanti.
SUBSTRING estrae una sottostringa da una stringa.
REPLACE sostituisce una sottostringa con un’altra.
CONCAT concatena due o più stringhe in una sola.
UPPER e LOWER convertono una stringa rispettivamente in maiuscolo (uppercase) o minuscolo (lowercase).
LEN calcola la lunghezza (length) di una stringa
TRIM rimuove gli spazi vuoti.
-
Funzioni per la manipolazione di date
Anche le date sono importanti in SQL. Le funzioni per la manipolazione delle date consentono di eseguire operazioni su date e ore.
DATEPART estrae parti specifiche da una data, come il giorno, il mese o l’anno.
DATEADD aggiunge un intervallo di tempo, ad esempio un numero di giorni o ore.
DATEDIFF calcola la differenza tra due date in giorni o ore.
A partire dalla tabella ‘agenda’, ipotizziamo di voler fare le seguenti modifiche:
– mettere in maiuscolo i contenuti del campo ‘giorno’, ad es.‘Lunedì’ -> “LUNEDÌ”
– dal campo ‘dottore’ trasformi il nome proprio nella sola iniziale seguita da un punto, es. Gregory House -> G. House;
– calcolare la differenza in giorni dal 01-01-2023 e la data dell’appuntamento, e metterla in una nuova colonna di nome ‘da 1 gennaio’.
— Per mettere in maiuscolo il campo ‘giorno’
UPDATE agenda SET giorno = UPPER(giorno);
— Per modificare il campo ‘dottore’ da ‘Nome Cognome’ in ‘N. Cognome’
UPDATE agenda SET dottore = CONCAT(LEFT(dottore, 1), '. ', SUBSTRING_INDEX(dottore, ' ', -1));
/*
Per aggiungere una nuova colonna
con la differenza in giorni dal 01-01-2023
*/
ALTER TABLE agenda ADD COLUMN da_1_genn INT; UPDATE agenda SET da_1_genn = DATEDIFF(data, '2023-01-01');
Il risultato finale, visualizzato con la solita SELECT * FROM agenda, sarà il seguente:
Essendo partiti dalla tabella ‘agenda’ senza modifiche, la data viene mostrata comprensiva di orario (che non abbiamo aggiornato) e senza il campo orario. Queste modifiche le abbiamo già fatte insieme: sei in grado di ripeterle da solo?