header | marp | footer | theme |
---|---|---|---|
Fondamenti di basi di dati |
true |
Mauro Bogliaccino |
uncover |
USE sql_store;
SELECT * FROM customers WHERE state = 'CA' ORDER BY first_name LIMIT 3;
- SQL non è sensibile alle maiuscole/minuscole. Puoi usare maiuscole o minuscole indifferentemente.
- In MySQL, ogni istruzione deve terminare con un punto e virgola (
;
).
I commenti servono per aggiungere note al codice senza influenzarne l'esecuzione.
-- Questo è un commento e non verrà eseguito.
SELECT (points * 10 + 20) AS discount_factor FROM customers;
Ordine di esecuzione delle operazioni matematiche:
- Parentesi
- Moltiplicazione/Divisione
- Addizione/Sottrazione
SELECT DISTINCT state FROM customers;
Usa DISTINCT
per ottenere solo valori unici.
Usiamo WHERE
per filtrare i dati.
Operatori di confronto:
- Maggiore di:
>
- Maggiore o uguale a:
>=
- Minore di:
<
- Minore o uguale a:
<=
- Uguale a:
=
- Diverso da:
<>
o!=
SELECT *
FROM customers
WHERE birthdate > '1990-01-01' AND points > 1000;
SELECT *
FROM customers
WHERE birthdate > '1990-01-01' OR points > 1000;
SELECT *
FROM customers
WHERE NOT (birthdate > '1990-01-01');
Trova valori in una lista specifica.
SELECT *
FROM customers
WHERE state IN ('VA', 'NY', 'CA');
Trova valori in un intervallo.
SELECT *
FROM customers
WHERE points BETWEEN 100 AND 200;
Trova valori che corrispondono a un pattern.
SELECT *
FROM customers
WHERE first_name LIKE 'b%';
%
= qualsiasi numero di caratteri._
= esattamente un carattere.
Trova valori usando espressioni regolari.
SELECT *
FROM customers
WHERE first_name REGEXP '^a';
Caratteri utili:
^
: inizio della stringa.$
: fine della stringa.|
: OR logico.[abc]
: qualsiasi carattere tra le parentesi.[a-d]
: qualsiasi carattere nel range specificato.
Esempi REGEXP:
-
Nomi che terminano con "EY" o "ON":
SELECT * FROM customers WHERE first_name REGEXP 'ey$|on$';
-
Nomi che iniziano con "MY" o contengono "SE":
SELECT * FROM customers WHERE first_name REGEXP '^my|se';
Trova righe con valori null.
SELECT *
FROM customers
WHERE phone IS NULL;
Ordina i risultati.
SELECT *
FROM customers
ORDER BY state, first_name DESC;
- ASC (ordine crescente) è predefinito.
- DESC (ordine decrescente) deve essere specificato.
Limita il numero di righe restituite.
SELECT * FROM customers LIMIT 3;
Per saltare righe e limitare il risultato:
SELECT * FROM customers LIMIT 6, 3;
Restituisce solo le righe con corrispondenze in entrambe le tabelle.
SELECT *
FROM customers c JOIN orders o
ON c.customer_id = o.customer_id;
Restituisce tutte le righe da una tabella, anche se non ci sono corrispondenze.
SELECT *
FROM customers c LEFT JOIN orders o
ON c.customer_id = o.customer_id;
Semplifica il join quando i nomi delle colonne sono identici.
SELECT *
FROM customers c JOIN orders o USING (customer_id);
Combina ogni riga di una tabella con ogni riga di un'altra tabella.
SELECT *
FROM colors CROSS JOIN sizes;
Unisce i risultati di più query.
SELECT name, address
FROM customers
UNION
SELECT name, address
FROM clients;
INSERT INTO customers(first_name, phone, points)
VALUES ('Brad Pitt', NULL, DEFAULT);
INSERT INTO customers(first_name, phone, points) VALUES
('Brad Pitt', NULL, DEFAULT),
('Bob', '1234', 10);