ASPcenter.net

17 febbraio 2010

SQL DML, gestione dei dati di un database

Archiviato in: ASP e database — Tag:, , , , , , — lukeonweb @ 10:29

La parte dell’SQL che determina la gestione dei dati del database viene chiamata SQL DML, dove DML sta per Data Manipulation Language. I comandi che fanno parte di questo ambito di programmazione SQL sono SELECT, INSERT, UPDATE e DELETE che servono, rispettivamente, ad effettuare la ricerca dei dati, l’inserimento dei dati, la modifica e la cancellazione dei dati.

Diamo uno sguardo a tutti e quattro in sequenza.


Il comando SELECT

Si tratta del comando più complesso e ricco di opzioni dell’SQL DML, in quanto le ricerche possono essere filtrate in svariati modi, facendo utilizzo di decine di differenti funzioni, clausole e comandi, i quali saranno oggetto dei successivi capitoli di questa sezione.

La sintassi base per effettuare la ricerca di dati da una tabella è la seguente

SELECT * FROM nome_tabella

dove il carattere “asterisco” (*) rappresenta “tutti i campi della tabella”.

Prendiamo come tabella di esempio quella creata nello scorso articolo in cui abbiamo discusso l’SQL DDL, ovvero la tabella “utenti”, composta dai campi “id” (Contatore), “nome” e “cognome” (Testo) ed abbiamo aggiunto il campo “email” (Testo) attraverso il comando di modifica strutturale della tabella, ma per semplicità non lo prenderemo in considerazione.

Selezioniamo tutti i campi dalla tabella “utenti”

SELECT * FROM utenti

Selezioniamo solo il campo “nome”

SELECT nome FROM utenti

Selezioniamo i campi “nome” e “cognome”

SELECT nome, cognome FROM utenti

Non abbiamo ancora popolato la tabella perchè non abbiamo studiato ancora l’istruzione INSERT (Rif. paragrafo successivo) ma supponiamo che ce ne siano già e siano i seguenti

id   | nome     | cognome
------------------------------
1    | Luca     | Ruggiero
2    | Max      | Bossi
3    | Claudio  | Garau

Selezioniamo solo il record in cui il campo “id” vale 1

SELECT * FROM utenti WHERE id = 1

Selezioniamo solo il record in cui il campo “cognome” è Ruggiero

SELECT * FROM utenti WHERE cognome = 'Ruggiero'

Usiamo la clausola WHERE. Nel primo esempio il valore di riferimento è numerico, quindi si indica in maniera semplice

... id = 1

mentre nel secondo esempio il campi di riferimento è testuale, quindi il valore va incluso tra singoli apici

... cognome = 'Ruggiero'

Possiamo utilizzare diversi parametri di ricerca oltre alla clausola WHERE come gli operatori AND ed OR che, rispettivamente, si assicurano che tutte le condizioni, oppure almeno una, si verifichino al fine di filtrare i dati. Vedremo esempi pratici negli articoli a seguire.

Ordiniamo adesso una query in funzione del campo “cognome” in maniera ascendente, utilizzando il comando ORDER BY e la clausola ASC

SELECT * FROM utenti ORDER BY cognome ASC

Il risultato sarà

id   | nome     | cognome
------------------------------
2    | Max      | Bossi
3    | Claudio  | Garau
1    | Luca     | Ruggiero

Compiamo l’operazione inversa: ordiniamo con ORDER BY il risultato in maniera discendente con la clausola DESC

SELECT * FROM utenti ORDER BY cognome DESC

Il risultato sarà

id   | nome     | cognome
------------------------------
1    | Luca     | Ruggiero
3    | Claudio  | Garau
2    | Max      | Bossi

Il valore di default, se omesso, è ASC, ma è bene specificarlo perchè potrebbe non rispondere sempre a dovere.

Affronteremo i singoli casi di studio delle ricerche in articoli dedicati, prevalentemente in questa sezione ma, occasionalmente, anche in altre.

Il comando INSERT

La sintassi per effettuare un inserimento dati in una tabella è la seguente

INSERT INTO nome_tabella (nome_campo) VALUES ('valore')

Facciamo un esempio pratico di inserimento dei dati nella tabella “utenti”

INSERT INTO utenti (nome, cognome) VALUES ('Luca', 'Ruggiero')

Il campo “id” di tipo Contatore, come già detto, si incrementa da se, quindi non va mensionato. Anche in questo caso vige la regola della differenza tra il tipo di dato numerico e testuale: se ho un campo di tipo testuale, non includo il valore tra singoli apici.

Vedremo alcuni esempi di inserimento dei dati attraverso l’utilizzo del comando INSERT, ma utilizzeremo un’altra strada che per adesso non vi anticipo.

Il comando UPDATE

La sintassi per effettuare un aggiornamento dei dati in una tabella è la seguente

UPDATE nome_tabella SET nome_campo = 'nuovo_valore'

In questo modo aggiorniamo tutti i record di una tabella, ma per logica se ne aggiorna uno solo per volta. Utilizzeremo quindi la clausola WHERE

UPDATE nome_tabella
SET
nome_campo = 'nuovo_valore'
WHERE
nome_campo = 'vecchio_valore'

Facciamo un esempio pratico aggiornando il secondo record della tabella “utenti”

UPDATE utenti SET nome = 'Massimiliano' WHERE id = 1

ottenendo che “Max Bossi” diventerà “Massimiliano Bossi”.

Il comando DELETE

La sintassi per effettuare la cancellazione dei dati in una tabella è la seguente

DELETE * FROM nome_tabella

su MS Access, e

DELETE FROM nome_tabella

su tutti gli altri DBMS. In questo modo, tuttavia, cancelliamo l’intero contenuto della tabella. Dobbiamo quindi filtrare l’operazione con la clausola WHERE. Facciamo un esempio di cancellazione di un record dalla tabella “utenti”

DELETE * FROM utenti WHERE id = 1

Nessun commento »

Non c'è ancora nessun commento.

RSS feed dei commenti a questo articolo. TrackBack URL

Lascia un commento

ASPcenter.net è il blog italiano su ASP, ASP.Net, VB.Net, C# e Visual Studio - Funziona con WordPress