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;