Query Base
Uno degli scopi principali del linguaggio SQL è quello di recuperare le informazioni memorizzate in un database. Questo è comunemente chiamato querying. Le query ci permettono di comunicare con il database ponendo domande e restituendo un set di risultati con dati rilevanti per tali domande.
SELECT
Hai imparato che SELECT viene utilizzato ogni volta che si desidera interrogare i dati da un database e l'asterisco significa tutte le colonne.
Supponiamo di essere interessati solo a due delle colonne. Possiamo selezionare le singole colonne con il loro nome (separate da una virgola):
SELECT colonna_1, colonna_2
FROM nome_tabella;
Le interruzioni di linea non significano nulla in SQL. Puoi scrivere l'intera query in una riga e funzionerebbe benissimo. Scrivo in questo modo per dare un ordine e migliorare la comprensibilità.
AS
AS è una parola chiave in SQL che permette di rinominare una colonna o una tabella utilizzando un alias. Il nuovo nome può essere qualsiasi purché lo inserisci all'interno di singole virgolette.
Due cose importanti da notare:
- anche se non sempre è necessario, è utile inserire gli alias tra le singole virgolette.
- quando si usa AS, le colonne non vengono rinominate nella tabella. Gli alias appaiono solo nel risultato.
SELECT name AS 'Titles'
FROM movies;
DISTINCT
Quando esaminiamo i dati in una tabella, può essere utile sapere quali valori unici esistono in una determinata colonna.
DISTINCT è usato per restituire valori univoci nell'output. Filtra tutti i valori duplicati nella colonna o nelle colonne specificate.
SELECT DISTINCT utensili
FROM magazzino;
WHERE
Possiamo limitare i risultati della nostra interrogazione utilizzando la clausola WHERE per ottenere solo le informazioni che vogliamo.
Seguendo questo formato, la dichiarazione sottostante filtra i risultati includendo solo i prodotti con la migliore valutazione (valutazioni superiori a 4 stelle):
SELECT *
FROM prodotti
WHERE stelle > 4;
La clausola WHERE filtra il risultato impostato per includere solo le righe in cui la seguente condizione è vera.
stelle > 4 è la condizione. Qui verranno restituite solo le righe con un valore maggiore di 4 nella colonna stelle.
Il > è un operatore. Gli operatori creano una condizione che può essere valutata come vera o falsa.
Gli operatori utilizzati con la clausola WHERE:
- = uguale a
- != non è uguale a
- > maggiore di
- < meno di
- >= maggiore o uguale a
- <= inferiore o uguale a
LIKE
LIKE può essere un utile operatore quando si desidera confrontare valori simili.
La tabella dei film contiene due film con titoli simili, "Se7en" e "Seven".
Come possiamo selezionare tutti i film che iniziano con "Se" e finiscono con "en" e hanno esattamente un carattere nel mezzo?
SELECT *
FROM films
WHERE titolo LIKE 'Se_en';
LIKE è un operatore speciale utilizzato con la clausola WHERE per cercare un modello specifico in una colonna.
titolo LIKE 'Se_en' è una condizione che valuta la colonna del nome per uno specifico schema.
Se_en rappresenta uno schema con un carattere jolly, l'underscore.
L'underscore significa che qui si può sostituire qualsiasi carattere individuale senza rompere lo schema. I nomi Seven e Se7en corrispondono entrambi a questo schema.
Il segno percentuale % è un altro carattere jolly che può essere utilizzato con LIKE.
Questa dichiarazione qui sotto filtra il risultato impostato per includere solo i film con nomi che iniziano con la lettera 'A':
SELECT *
FROM films
WHERE titolo LIKE 'A%';
% è un carattere jolly che corrisponde a nessuna o più lettere mancanti nello schema (frase in questo caso).
Per esempio se scrivo A% corrisponde a tutti i film con titoli che iniziano con la lettera 'A', invece %a corrisponde a tutti i film che finiscono con 'a'.
IS NULL
Il più delle volte i dati che incontrerete avranno dei valori mancanti. I valori sconosciuti sono indicati con NULL.
Non è possibile verificare i valori NULL con operatori di confronto, come = e !=.
Dovremo invece utilizzare questi operatori:
- IS NULL
- IS NOT NULL
SELECT nome
FROM prodotti
WHERE stelle IS NOT NULL;