Concetti base di SQL: select, insert, update e delete

SQL
Tempo stimato di lettura: 3 minuti, 12 secondi
Pubblicato il 16 maggio 2013

SQL è un linguaggio utile all’ interrogazione e alla gestione di dati  mediante l’ utilizzo di costrutti denominati query. Con SQL si può leggere, aggiornare, cancellare ed inserire dei dati in un database, per fare questo dovremo utilizzare i SELCET, gli UPDATE, i DELETE o gli INSERT; vediamoli nel dettaglio:

SELECT

La funzione SELECT ci permette di svolgere il lavoro fondamentale che deve fare un database, cioè recuperare dei dati memorizzati.

SELECT <lista_campi/*> FROM <nome_tabella> [WHERE <condizione_logica_boooleana>]

Il risultato di una SELECT è una tabella. Conterrà i dati di tutti i record della tabella interrogata che soddisfano la condizione del WHERE (quando presente).
La condizione WHERE è opzionale: serve per filtrare i record che verranno estratti dalla tabella. Qual’ ora non fosse presente, invece, verranno estratti tutti i dati senza alcuna eccezione.
E’ possibile estrarre solo una parte dei campi della tabella (specificandoli uno per uno) oppure tutti, con la “parola chiave” * dopo il SELECT, come in esempio.

ESEMPIO :

In questo caso verranno estratti tutti i dati dalla tabella “users” dove l’username equivale a “Maicol” e la Password a “ciao90”.

Parametri “avanzati” per la SELECT

Oltre alla normale operazione di selezione, è possibile “arricchire” la nostra query con dei parametri avanzati, che ci permetteranno di fare diverse cose.
I parametri più comuni che oggi citeremo sono:

  • DISTINCT : per non estrarre record duplicati;
  • GROUP BY : per raggruppare i record nel risultato: tutti i record con valori uguali verranno ridotti a uno;
  • ORDER BY : per ordinare i record (in modo crescente o decrescente);
  • LIMIT : per estrarre solo un certo numero di record partendo da un record preciso;

SELECT DISTINCT <lista_campi/*> FROM <nome_tabella> [WHERE <condizione_logica>] GROUP BY <nome_campo / posizione> ORDER BY <nome_campo / posizione> [ASC/DESC] LIMIT [<record_di_partenza>,] <numero_record>

ESEMPIO:

INSERT

Come dice il suo nome  questa istruzione serve per inserire dei dati in una tabella.

INSERT INTO <nome_tabella>[(<lista_campi>)] VALUES (<lista_valori>)

  • Il numero di valori specificati in <lista_valori> deve coincidere con il numero di campi specificato in <lista_campi> o, in caso della sua assenza, con il numero di campi della tabella in cui avviene la INSERT;
  • Il tipo di ogni valore specificato in <lista_valori> deve coincidere con il tipo del rispettivo campo specificato in <lista_campi> o, in caso della sua assenza, con il tipo del corrispettivo campo della tabella in cui avviene la INSERT;
  • Se la lista dei campi non è specificata, MySQL assume che tutti i campi della tabella debbano essere popolati;

Esempio corretto:

Esempio scorretto:

UPDATE

Questa istruzione permette di modificare informazioni già esistenti in una tabella:

UPDATE <nome_tabella> SET <nome_campo>=, <nome_campo>=, … [WHERE <condizione_logica>]

  • Anche in questo caso il valore deve essere dello stesso tipo del campo a cui viene assegnato;
  • Con l’UPDATE dobbiamo stare molto attenti alla clausola WHERE. Se infatti non è specificata correttamente, si rischia che vengano aggiornate le righe sbagliate;

Esempio sicuro:

Esempio pericoloso:

DELETE

Con questa istruzione cancelliamo record da una tabella.

DELETE FROM <nome_tabella> [WHERE <condizione_logica>]

Per la WHERE valgono le stesse considerazioni fatte per la UPDATE, qui però il rischio è ancora maggiore, in quanto stiamo cancellando fisicamente dei dati.
Esempio sicuro:

Esempio pericoloso:

Con questo è tutto. Come la vecchia guida, anche questa è stata realizzata per esporre le principali basi di un argomento. Una guida per dummies, per inesperti.

Qual’ ora comunque aveste qualcosa da dire, problematiche o eventuali aggiunte da segnalarmi non esistate a farlo, commentate, commentate e commentate!!! 😉

  • Mattia

    Veramente interessante e comprensibile anche per un inesperto come me!!

    • Maicol Torti

      Grazie mattia,
      sono felice che l’ articolo sia stato di tuo gradimento! 😉

  • Occhio che la clausola LIMIT non è SQL standard…(esempio su Sybase bisogna mettere la clausola TOP all’inizio della SELECT)

    • Maicol Torti

      Sinceramente non lo sapevo, grazie comunque della segnalazione Massimo, in serata vedrò di aggiungere due righe sull’ argomento 😉

Shares