Query

6. Principali operatori


Principali operatori

In questo capitolo vedremo i principali operatori che MySQL ci mette a disposizione per confrontare i dati nella costruzione delle nostre query.

Faccio un esempio pratico.
Se volessimo trovare tutti gli utenti che hanno fanno "Rossi" di cognome, allora utilizzeremo l'operatore di uguaglianza = sulla colonna cognome della tabella utenti, come nell'esempio che segue.

SELECT * FROM `utenti` WHERE `cognome` = 'Rossi';

Al nome della colonna segue quindi l'operatore, mentre all'operatore segue il valore che deve essere confrontato.
Il valore utilizzato per il confronto può essere:

  • Statico: WHERE `cognome` = 'Rossi'
  • Espressione: WHERE `anno_nascita` = 2000 + 5
  • Un altro campo: WHERE `nome` = `cognome`

Prima di vedere il resto degli operatori, li dividerermo in due macrocategorie, ossia gli Operatori di confronto e gli Operatori di condizione.

Gli operatori di condizione servono a costruire delle clausole WHERE più complesse, per realizzare quindi delle condizioni formate da ulteriori sotto-condizioni, le quali saranno invece costruite con degli operatori di confronto.

Per esempio: AND è un'operatore di condizione e lo utilizzeremo per strutturare una WHERE in due sotto-condizioni nelle quali utilizzeremo invece l'operatore di uguaglianza in questo modo:

SELECT * FROM `utenti` WHERE `nome` = 'Mario'
AND `anno_di_nascita` = 1980;

Nell'esempio precedente verranno selezionati tutti gli utenti che hanno Mario come nome e che sono nati nel 1980.

Principali operatori di Confronto

  • Operatore di uguaglianza    =
  • Operatore di disuguaglianza    != oppure <>
  • Operatore di minoranza    <
  • Operatore di maggioranza    >
  • Operatore di minoranza o uguaglianza    <=
  • Operatore di maggioranza o uguaglianza    >=

Principali operatori di Condizione

  • Operatore AND logico
  • Operatore OR logico

Con questi operatori è possibile costruire condizioni complesse quanto si vuole, annidando ulteriori sotto-condizioni grazie all'ausilio di parantesi tonde come mostrerò nell'esempio che segue:

SELECT * FROM `utenti` WHERE `nome` = 'Mario` AND
(`cognome` = 'Rossi' OR `cognome` = 'Verdi');

Nell'esempio verranno selezionati tutti gli utenti che si chiamano Mario Rossi oppure Mario Verdi.

5. Prime query

UPDATE

La query UPDATE viene utilizzata per aggiornare i dati dei record già inseriti.
Come avviene con la SELECT è possibile applicare una condizione attraverso la clausola WHERE per aggiornare solo i record che vogliamo.

La sintassi corretta prevede l'utilizzo della parola chiave UPDATE seguita dal nome della tabella da aggiornare.
Poi segue SET che indica la lista dei campi coi rispettivi valori, separando un campo da un altro attraverso la virgola.
Vediamo prima un UPDATE senza WHERE.

UPDATE `utenti` SET `nome` = 'Mario', cognome = 'Rossi';

La query soprastante aggiorna tutti i record della tabella assegnando a tutti i campi "nome" il valore 'Mario' e a tutti i campi "cognome" il valore 'Rossi'.

Se volessimo aggiornare solo l'utente il cui ID univoco (chiave primaria) è 5, procederemmo attraverso il WHERE come mostrato nell'esempio seguente:

UPDATE `utenti` SET `nome` = 'Mario', cognome = 'Rossi'
WHERE `id` = 5;

Anche in questo caso possiamo strutturare il WHERE in condizioni più complesse, servendoci degli operatori AND e OR.

DELETE

La query DELETE viene utilizzata per eliminare i record da una tabella.

E' molto simile all'UPDATE, senza la parte riguardante i campi, specificando quindi solo la tabella da cui cancellare e il WHERE per eliminare solo i record desiderati.

Vediamo un esempio:

DELETE FROM `utenti` WHERE `id` = 5;

La query appena vista elimina tutti i record della tabella "utenti" il cui campo id contiene il valore 5.
In questo caso, essendo id una chiave primaria, verrà eliminato un solo utente.

Nota bene: per eliminare tutti i record di una tabella consiglio l'utilizzo della query TRUNCATE che libererà anche lo spazio rimasto inutilizzato e ripristinerà l'eventuale conteggio dei campi auto increment.

TRUNCATE TABLE `utenti`;

4. Prime query

In questo capitolo inizieremo a vedere le prime query MySQL.
La query è il cuore di questo linguaggio, e consiste in una interrogazione al database. Noi interroghiamo il database con una query ed esso ci risponderà con un set di risorse che, come vedremo, varieranno a seconda del tipo di query che sottoporremo al linguaggio.

In questo capitolo analizzeremo brevemente i quattro tipi principali di query di cui disponiamo:

  • INSERT - Questa query viene utilizzata per inserire record in una tabella, popolandola.
  • SELECT - E' la query più comune, viene utilizzata per leggere i record di una tabella. E' possibile applicare alla SELECT una condizione in modo da poter prelevare solo i record che ci interessano, come ad esempio tutti gli utenti di sesso maschile o tutti gli utenti di sesso femminile.
  • UPDATE - Come per la SELECT, anche l'UPDATE supporta una condizione per poter agire solo sui record che ci interessano. L'UPDATE viene utilizzata per modificare record già esistenti.
  • DELETE - Come è chiaro dal suo nome, la DELETE viene usata per eliminare i record da una tabella. E' possibile applicare una condizione per eliminare solo i record che vogliamo.

INSERT

La prima query che vediamo da vicino è la INSERT.
La sintassi è molto semplice. La query inizia con la clausola INSERT INTO seguita dal nome della tabella, i campi in cui vogliamo scrivere (opzionale), la clausola VALUES e poi i valori per i suddetti campi.

INSERT INTO `utenti`
(`nome`, `cognome`, `email`, `sesso`)
VALUES
('Mario', 'Rossi', 'mario.rossi@nomail.com', 'M');

La query termina con un punto e virgola.
L'apice che utilizzo per delimitare il nome della tabella e dei campi non è obbligatorio ma è comunque più corretto. Per scriverlo lasciate premuto ALT e digitate 96 sul tastierino numerico.

Come potete notare ho utilizzato come tabella di esempio, la tabella "utenti" dei capitoli 3 e 4, omettendo però il campo `id_utente`.
Questo perchè durante la creazione della tabella in esame, specificammo come attributo del campo AUTO_INCREMENT, MySQL quindi assegnerà automaticamente un valore progressivo a questo campo ad ogni inserimento.

MySQL vi consente comunque di specificare un valore per questo campo, e se invece volete metterlo nella lista dei campi ma dire a MySQL di auto incrementarlo, allora nei VALUES specificate il valore speciale NULL per il campo `id_utente`.

E' possibile anche omettere la lista dei campi, ma in questo caso sarà obbligatorio specificarli tutti come nell'esempio seguente:

INSERT INTO `utenti`
VALUES
(NULL, 'Mario', 'Rossi', 'mario.rossi@nomail.com', 'M');

Per eseguire il codice MySQL potete utilizzare tranquillamente phpMyAdmin come mostrato in questa schermata.

SELECT

Come abbiamo detto prima la SELECT viene usata per leggere record da una tabella. Vediamo di seguito la sua forma più semplice.

SELECT * FROM `utenti`;

L'asterisco sta per "tutti i campi", ed indica quindi che vogliamo leggere i record per intero.
Questa query ci restituirà il contenuto dell'intera tabella specificata.
E' possibile anche specificare quali campi vogliamo al posto dell'asterisco, vediamo quindi di seguito una query equivalente a quella di prima:

SELECT `id_utente`, `nome`, `cognome`, `email`, `sesso`
FROM `utenti`;

Come potete notare la query inizia con la clausola SELECT, continua con la lista dei campi che vogliamo prelevare dalla tabella, poi la clausola FROM seguita dal nome della tabella da cui vogliamo prelevare i dati.

Se quindi volessimo solamente il nome e il cognome di tutti gli utenti, scriveremmo una query del genere:

SELECT `nome`, `cognome` FROM `utenti`;

Come accennato all'inizio del capitolo, è possibile specificare anche una condizione alla SELECT, e lo faremo attraverso la clausola WHERE.

Attraverso il WHERE potremo specificare quali valori desideriamo (o non desideriamo) per un determinato campo, un pò come si fa nelle IF degli altri linguaggi di programmazione, con qualche differenza nella sintassi.

Nel prossimo esempio vedremo come leggere tutti gli utenti della tabella di sesso maschile.

SELECT * FROM `utenti`
WHERE `sesso` = 'M';

Ancora un altro esempio in cui leggiamo gli utenti di sesso maschile che si chiamano 'Mario'.

SELECT * FROM `utenti`
WHERE `sesso` = 'M' AND `nome` = 'Mario';

Se invece volessimo gli utenti che sono di sesso maschile oppure di nome 'Luca', utilizzeremo la clausola OR invece dell'AND.

SELECT * FROM `utenti`
WHERE `sesso` = 'M' OR `nome` = 'Luca';

Le SELECT diventeranno molto più complesse di queste grazie a query annidate, join e molto altro, leggendo da più tabelle contemporaneamente e così via, ma per il momento non ci interessa approfondire, ma bensì dare un'occhiata generale a tutto il mondo MySQL per passare poi ad argomenti più complessi.

Nel prossimo capitolo vedremo le query UPDATE e DELETE.

Condividi contenuti