Comandi DQL (Query)
SELECT col1, col2 FROM tbl
: Seleziona colonne specifiche.
SELECT * FROM tbl
: Seleziona tutte le colonne.
SELECT col1 AS a FROM tbl
: Usa un alias per una colonna.
SELECT DISTINCT col1 FROM tbl
: Seleziona solo valori unici.
SELECT * FROM tbl WHERE prezzo > 100 AND cat = 'Elettronica'
: Filtra righe con condizioni multiple.
SELECT * FROM tbl WHERE nome LIKE 'A%'
: Trova nomi che iniziano con 'A'. Usa %
(qualunque stringa) e _
(singolo carattere).
SELECT * FROM tbl WHERE cat IN ('Libri', 'Film')
: Filtra per valori in una lista.
SELECT * FROM tbl WHERE anno BETWEEN 2020 AND 2022
: Filtra per un intervallo di valori.
SELECT * FROM tbl ORDER BY col1 ASC, col2 DESC
: Ordina i risultati.
SELECT * FROM tbl LIMIT 10 OFFSET 5
: Salta 5 righe e ne mostra 10.
Comandi DML (Manipolazione Dati)
INSERT INTO tbl (col1, col2) VALUES ('val1', 123)
: Inserisce una nuova riga.
UPDATE tbl SET col1 = 'nuovo' WHERE id = 1
: Aggiorna una riga esistente.
DELETE FROM tbl WHERE stato = 'inattivo'
: Cancella righe.
JOINs
I JOIN combinano righe da due o più tabelle basandosi su una colonna correlata.
INNER JOIN
Restituisce solo le righe con corrispondenza in entrambe le tabelle.
SELECT * FROM t1 JOIN t2 ON t1.id=t2.id
LEFT JOIN
Restituisce tutte le righe della tabella sinistra e le corrispondenze della destra.
SELECT * FROM t1 LEFT JOIN t2 ON t1.id=t2.id
CROSS JOIN
Restituisce il prodotto cartesiano di entrambe le tabelle.
SELECT * FROM t1 CROSS JOIN t2
Funzioni di Aggregazione
COUNT(col)
, SUM(col)
, AVG(col)
, MIN(col)
, MAX(col)
.
SELECT cat, AVG(prezzo) FROM prodotti GROUP BY cat
: Calcola il prezzo medio per categoria.
SELECT cat, COUNT(*) FROM prodotti GROUP BY cat HAVING COUNT(*) > 10
: Mostra solo categorie con più di 10 prodotti.
Funzioni Comuni con Esempi
Stringa: LOWER('CIAO')
→ 'ciao' | UPPER('test')
→ 'TEST' | LENGTH('abc')
→ 3
SUBSTR('abcdef', 3, 2)
→ 'cd' | REPLACE('testo', 't', 'x')
→ 'xesto'
Matematiche: ROUND(12.345, 2)
→ 12.35 | ABS(-10)
→ 10
Data e Ora: DATE('now', '+1 day')
| STRFTIME('%Y-%m', 'now')
Altro: CAST('123' AS INTEGER)
| COALESCE(NULL, 'default')
→ 'default'
Espressioni Avanzate
CASE WHEN: SELECT nome, CASE WHEN p > 100 THEN 'Costoso' ELSE 'OK' END FROM prodotti
Subquery: SELECT * FROM prodotti WHERE prezzo > (SELECT AVG(prezzo) FROM prodotti)
Common Table Expressions (CTE):
WITH top_cat AS (SELECT cat FROM vendite GROUP BY cat ORDER BY SUM(imp) DESC LIMIT 3) SELECT * FROM prodotti WHERE cat IN top_cat;
Funzioni Finestra:
ROW_NUMBER() OVER (PARTITION BY cat ORDER BY prezzo DESC) as rank
: Numera i prodotti in ogni categoria per prezzo.
LAG(prezzo, 1, 0) OVER (ORDER BY data)
: Prende il prezzo del giorno precedente.
Comandi DDL (Definizione Dati)
CREATE TABLE nuovo (id INTEGER PRIMARY KEY, nome TEXT)
: Crea una nuova tabella.
ALTER TABLE tbl ADD COLUMN email TEXT
: Aggiunge una colonna.
DROP TABLE vecchio
: Elimina una tabella.