La sintassi base di SQL

Nella lezione precedente abbiamo visto come sono organizzati i database e come i dati vengono raccolti all'interno delle tabelle. In questa lezione vedremo la sintassi base di SQL, che serve per creare, modificare ed eliminare queste tabelle e la loro struttura.

Che cosa è SQL

Come abbiamo detto nell'introduzione a SQL, il linguaggio SQL è utilizzato per comunicare con i database relazionali. Serve per dare istruzioni al database, ad esempio per inserire, modificare, eliminare o leggere dati.

SQL è composto da parole chiave e istruzioni che seguono una sintassi precisa. Scrivendo una query SQL, possiamo quindi indicare al database quale operazione vogliamo eseguire e su quali dati.

SQL non è un database e non si occupa direttamente di conservare i dati: è il linguaggio che permette di interagire con essi. MySQL, invece, è uno dei sistemi che permette di creare e gestire database relazionali utilizzando SQL.

Istruzione SQL di base

Un'istruzione SQL, chiamata anche query, è un comando che inviamo al database per chiedergli di eseguire una determinata operazione. Ogni istruzione segue una sintassi precisa, composta da parole chiave e, in base al comando utilizzato, da nomi di tabelle, colonne e valori.

Per esempio, una semplice istruzione SQL può avere questa struttura:

SELECT nome FROM utenti;

In questo caso, SELECT e FROM sono parole chiave SQL, mentre nome e utenti indicano rispettivamente una colonna e una tabella del database.

Le istruzioni SQL terminano generalmente con un punto e virgola (;), che indica la fine del comando. Questo permette di distinguere un'istruzione dalla successiva, soprattutto quando vengono scritte più query nello stesso file.

Stringhe e valori

In SQL è possibile utilizzare le stringhe nelle query, ad esempio quando vogliamo verificare se il nome di una persona corrisponde esattamente a un determinato testo.

Le stringhe devono essere sempre racchiuse tra apici singoli, come mostrato qui:

SELECT nome FROM utenti WHERE nome = 'Marco';

Possiamo anche utilizzare valori numerici invece di testo per query SQL, in questo modo:

SELECT nome FROM utenti WHERE id = 1;

Commenti

In SQL è possibile inserire dei commenti utilizzando la sintassi --.

I commenti possono essere utili per spiegare il codice, aggiungere note o ricordare cosa fa una determinata query. Non vengono eseguiti dal database e quindi non modificano il funzionamento della query.

Ad esempio:

-- Seleziona tutti gli utenti
SELECT * FROM utenti;

Spazi e formattazione

In SQL ci sono poche regole obbligatorie per spazi e formattazione. Molto di quello che riguarda la formattazione è infatti una convenzione utile a rendere le query più leggibili.

Gli spazi vengono utilizzati per separare le diverse parti di un'istruzione. Tuttavia, puoi usare anche più spazi o andare a capo senza cambiare il significato della query. Ad esempio:

SELECT nome FROM utenti;

...è una query uguale a:

SELECT nome    FROM    utenti;

Quando una query diventa più lunga, è buona pratica andare a capo per separare le diverse parti dell'istruzione:

SELECT nome, email, eta
FROM utenti
WHERE eta >= 18;

In questo modo ogni parte importante della query si trova su una riga diversa.


Le parole chiave SQL vengono generalmente scritte in maiuscolo:

SELECT nome
FROM utenti;

Ma è possibile scriverle anche in minuscolo:

select nome
from utenti;

Per le parole chiave, maiuscole e minuscole non cambiano normalmente il significato dell'istruzione. Usare le maiuscole è soprattutto una convenzione di formattazione che rende più semplice distinguere le parole chiave dai nomi di tabelle e colonne.

Creare una tabella di esempio

Per le prossime lezioni, può esserti d'aiuto creare una tabella per testare le query SQL. Per farlo, puoi utilizzare la seguente istruzione:

CREATE TABLE utenti (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nome VARCHAR(50) NOT NULL,
    cognome VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL,
    eta INT,
    citta VARCHAR(50)
);

Aggiungiamo anche dei dati di esempio:

INSERT INTO utenti (nome, cognome, email, eta, citta) VALUES
('Marco', 'Rossi', '[email protected]', 25, 'Milano'),
('Andrea', 'Bianchi', '[email protected]', 32, 'Roma');