SQL- Query di eliminazione

()

Creare ed eseguire una query di eliminazione

Se si vuole eliminare rapidamente una grande quantità di dati o eliminare regolarmente un set di dati in un database desktop di Access, una query di eliminazione o di aggiornamento può essere utile perché le query rendono possibile specificare criteri per trovare ed eliminare rapidamente i dati. L’uso di una query può essere anche un uso più riusato perché è possibile riutilizzare una query salvata.

Nota: Prima di eliminare dati o eseguire una query di eliminazione, assicurarsi di disporre di una copia di backup del database desktop di Access.

Se si vogliono eliminare solo alcuni record, non è necessaria una query. Basta aprire la tabella in visualizzazione Foglio dati, selezionare i campi (colonne) o i record (righe) da eliminare e quindi premere CANC.

Importante: Le informazioni di questo articolo sono destinate solo a database desktop. Non è possibile usare query di eliminazione o aggiornamento nelle app Web di Access.

Contenuto dell’articolo

  • Scelta di un tipo di query
  • Uso di una query di eliminazione
  • Utilizzo di una query di aggiornamento
  • Altre informazioni
  • Suggerimenti per la risoluzione dei problemi

Scelta di un tipo di query

È possibile usare una query di aggiornamento o di eliminazione per eliminare i dati dal database. Selezionare una query in base ai dettagli della tabella seguente:

Tipo di queryDa utilizzareRisultati
Usare una query di eliminazionePer rimuovere interi record (righe) da una tabella o da due tabelle correlate contemporaneamente.Nota: Se i record si trovano sul lato “uno” di una relazione uno-a-molti, potrebbe essere necessario modificare la relazione prima di eseguire la query di eliminazione. Vedere la sezione sull’eliminazione di dati da tabelle correlate.Le query di eliminazione rimuovono tutti i dati in ogni campo, incluso il valore della chiave che rende univoco un record
Usare una query di aggiornamentoPer eliminare singoli valori di campo da una tabella.Semplifica l’eliminazione dei valori aggiornando i valori esistenti a un valore Null, ovvero senza dati, o a una stringa di lunghezza zero, ovvero una coppia di virgolette doppie senza spazi tra di essi.

Elementi da verificare prima di usare una query per eliminare i dati

  • Verificare che il file non sia di sola lettura:
    1. Fare clic con il pulsante destro del mouse su Start e scegliere Apri Esplora risorse.
    2. Fare clic con il pulsante destro del mouse sul file di database e scegliere Proprietà.
    3. Verificare se è selezionato l’attributo Sola lettura.
  • Verificare di avere le autorizzazioni necessarie per eliminare record dal database. Se non si è sicuri, contattare l’amministratore di sistema o il progettista del database.
  • Assicurarsi di aver abilitato il contenuto del database. Per impostazione predefinita, Access blocca tutte le query di comando, ovvero le query di eliminazione, aggiornamento e di creazione tabella, a meno che il database non sia prima attendibile. Per informazioni sull’attendibilità di un database, vedere la sezione Impedire il blocco di una query da parte della modalità di disabilitazione.
  • Chiedere agli altri utenti del database di chiudere tutte le tabelle, le maschere, le query e i report che usano i dati da eliminare. In questo modo si evitano violazioni di blocchi.
  • Prima di modificare o eliminare record, è buona idea creare una copia di backup del database nel caso in cui si voglia annullare le modifiche.

Suggerimento: Se un numero elevato di utenti si connette al database, potrebbe essere necessario chiudere il database e quindi riaprirlo in modalità esclusiva.

Per aprire un database in modalità esclusiva

  1. Fare clic sulla scheda File > Apri.
  2. Individuare e selezionare il database, fare clic sulla freccia accanto al pulsante Apri e quindi su Apertura esclusiva.Apertura di un file in accesso esclusivo

Eseguire il backup del database

  1. Fare clic sulla scheda File e scegliere Salva con nome.
  2. Fare clic su Salva database connome e quindi su Backup database. Il file originale verrà chiuso in Access, verrà creato un backup e quindi il file originale verrà aperto di nuovo.
  3. Fare clic su Salva con nome, specificare un nome e un percorso per la copia di backup, quindi fare clic su Salva.

Nota: Se si usa un database di sola lettura o creato nella versione precedente di Access, potrebbe essere visualizzato un messaggio che indica che non è possibile creare un backup del database.

Per tornare alla copia di backup, chiudere e rinominare il file originale, in modo che per la copia di backup sia possibile utilizzare il nome della versione originale. Assegnare il nome della versione originale alla copia di backup e quindi aprire la copia di backup rinominata in Access.

Uso di una query di eliminazione

Per creare una query di eliminazione, fare clic su Struttura query nel gruppo Query della scheda Crea. Fare doppio clic su ogni tabella da cui si vogliono eliminare record e quindi fare clic su Chiudi.

La tabella viene visualizzata in una finestra nella sezione superiore della griglia di struttura della query. Nell’elenco dei campi fare doppio clic sull’asterisco (*) per aggiungere tutti i campi della tabella alla griglia di struttura.

Uso di criteri specifici in una query di eliminazione

Importante: Usare i criteri per restituire solo i record da eliminare. In caso contrario, la query di eliminazione rimuove tutti i record della tabella.

Fare doppio clic sul campo da specificare come criterio di eliminazione, immettere uno dei criteri nella riga Criteri di Progettazione query e quindi deselezionare la casella di controllo Mostra per ogni campo di criteri.

Un esempio di quando si potrebbe voler usare questa opzione: Si supponga di voler rimuovere tutti gli ordini in sospeso per un cliente. Per trovare solo questi record, aggiungere i campi ID cliente e Data ordine alla griglia di struttura della query, quindi immettere il numero di ID del cliente e la data in cui gli ordini di quel cliente sono diventati non validi.

  1. Nella scheda Struttura fare clic su > Visualizzazione Foglio dati.
  2. Verificare che la query restituisca i record da eliminare e quindi premere CTRL+S per salvare la query.
  3. Per eseguire la query, fare doppio clic sulla query nel riquadro di spostamento.

L’istruzione DELETE permette di eliminare i record di una tabella che soddisfano un certo predicato:

DELETE FROM nome_tabella
[ WHERE predicato ]

Anche in questo caso non ci dilunghiamo sulla clausola WHERE, per la quale vale la considerazione fatta sopra: se viene omessa, l’eliminazione avverrà su tutte le righe della tabella. Quindi occorre prestare particolare attenzione con la specificazione della clausola, anche per verificare che si specifichino solo i record che si vogliono eliminare.

Se sussistono delle chiavi esterne sui record che vengono specificati, e se nei vincoli non sono state specificate azioni in caso di cancellazione con la clausola ON DELETE (come visto nella lezione sulla creazione del database), allora l’annullamento fallirà. Ad esempio questa query fallirà a causa del riferimento del record nella tabella Book:

DELETE  FROM Publisher WHERE ID = 1

Se invece, ad esempio, fosse stata specificata la clausola ON DELETE CASCADE nella definizione della tabella Book, anche i libri che avessero riferimento a questo editore sarebbero stati cancellati nella stessa transazione.

Utilizzo di una query di aggiornamento

Nota: Non è possibile usare l’opzione query di aggiornamento in un’app Web di Access.

Questa sezione spiega come usare una query di aggiornamento per eliminare singoli campi dalle tabelle. Tenere presente che l’esecuzione di una query di aggiornamento per eliminare i dati cambierà i valori esistenti in NULL o in una stringa di lunghezza zero ,ovvero una coppia di virgolette doppie senza spazi tra parentesi, a seconda dei criteri specificati.

  1. Fare clic sulla scheda Crea e quindi su Struttura query nel gruppo Query.
  2. Selezionare la tabella che contiene i dati da eliminare (se la tabella è correlata, selezionare la tabella sul lato “uno” della relazione), fare clic su Aggiungi e quindi su Chiudi.La tabella viene visualizzata in una finestra nella sezione superiore della griglia di struttura della query. La finestra elenca tutti i campi della tabella selezionata.
  3. Fare doppio clic sull’asterisco (*) per aggiungere tutti i campi della tabella alla griglia di struttura. L’aggiunta di tutti i campi della tabella consente alla query di eliminazione di rimuovere interi record (righe) dalla tabella.Facoltativamente, è possibile immettere i criteri per uno o più campi nella riga Criteri della finestra di progettazione e quindi deselezionare la casella di controllo Mostra per ogni campo di criteri di selezione.Nota: I criteri vengono utilizzati per restituire solo i record che si desidera modificare. In caso contrario, la query di aggiornamento imposta su NULL ogni record di ogni campo della query.
  4. Fare clic su Visualizza nel gruppo Risultati della scheda Struttura e quindi fare clic su Visualizzazione Foglio dati.
  5. Verificare che la query restituisca i record da impostare su NULL o su una stringa di lunghezza zero, ovvero una coppia di virgolette doppie senza spazi tra di essi (“”).
  6. Se necessario, ripetere i passaggi da 3 a 5 e modificare i campi o i criteri finché la query non restituisce solo i dati da eliminare, quindi premere CTRL+S per salvare la query.
  7. Per eseguire la query, fare doppio clic sulla query nel riquadro di spostamento.

NOTA:

Per cancellare un record o un insieme di records con il linguaggio SQL uso l’istruzione DELETE FROM.

La sintassi è la seguente: DELETE FROM tabella WHERE colonna = valore ; Il comando cancella tutte le righe della tabella che soddisfano la condione indicata nella WHERE.

Se non è indicata una condizione cancella tutte le righe della tabella.

Altre informazioni

Eliminazione di dati da tabelle correlate

Per eliminare dati da più tabelle correlate, è necessario abilitare le opzioni Integrità referenziale ed Elimina record correlati a catena per ogni relazione. In questo modo la query può eliminare i dati dalle tabelle ai lati “uno” e “molti” della relazione. La preparazione dei dati correlati eliminati richiede la verifica di quanto segue:

  • Determinare quali record si trovano sul lato “uno” della relazione e quali sono sul lato “molti”.
  • Se è necessario eliminare record sul lato “uno” della relazione e i record correlati sul lato “molti”, abilitare un set di regole denominato Integrità referenziale e abilitare le eliminazioni a catena. I passaggi di questa sezione illustrano l’integrità referenziale e spiegano come eseguire entrambe le attività.
  • Se è necessario eliminare solo i record sul lato “uno” della relazione, occorre prima eliminare la relazione e quindi i dati.

Se è necessario rimuovere i dati solo sul lato “molti” della relazione, è possibile creare ed eseguire la query di eliminazione senza dover modificare la relazione.

Per scoprire quali record si trovano sui lati “uno” e “molti” di una relazione, nel gruppo Relazioni della scheda Strumenti database fare clic su Relazioni. Nella scheda Relazioni vengono visualizzate le tabelle del database e le relazioni. Ogni relazione è rappresentata da una linea che collega le tabelle tra i campi.

La figura seguente mostra una tipica relazione. La maggior parte delle relazioni in un database, se non tutte, hanno un lato “uno” e un lato “molti”. Il diagramma relazione indica il lato “uno” con il lato numerale(1)e il lato “molti” con il simbolo di infinito(∞).

Relazione tra due tabelle

Quando si eliminano record sul lato “uno” della relazione, vengono eliminati anche tutti i record correlati sul lato “molti” della relazione. Tuttavia, quando si eliminano record sul lato “molti” di una relazione, in genere non si eliminano i record sul lato “uno”.

Inoltre, Access applica automaticamente un set di regole denominate integrità referenziale. Queste regole assicurano che le chiavi esterne in un database contengano i valori corretti. Una chiave esterna è una colonna i cui valori corrispondono ai valori nella colonna chiave primaria di un’altra tabella.

Modificare la relazione

Seguire questa procedura solo quando è necessario eliminare i dati sui lati “uno” e “molti” di una relazione.

  1. Nel gruppo Relazioni della scheda Strumenti database fare clic su Relazioni.
  2. Fare clic con il pulsante destro del mouse sulla relazione (la linea) che collega le tabelle interessate dall’operazione di eliminazione e quindi scegliere Modifica relazione dal menu di scelta rapida.
  3. Nella finestra di dialogo Modifica relazioni verificare che la casella di controllo Applica integrità referenziale sia selezionata.
  4. Selezionare la casella di controllo Elimina record correlati a catena.Nota: Finché non si disabilita di nuovo questa proprietà, l’eliminazione di un record sul lato “uno” della relazione eliminerà tutti i record correlati sul lato “molti” della relazione.
  5. Fare clic su OK,chiudere il riquadro Relazioni e quindi passare al set di passaggi successivo.

Eliminare una relazione

  1. Se non lo si è già fatto, aprire il riquadro Relazioni.
  2. Nel gruppo Relazioni della scheda Strumenti database fare clic su Relazioni.Prendere nota dei campi coinvolti nella relazione in modo da poter ripristinare la relazione dopo l’eliminazione dei dati.
  3. Fare clic con il pulsante destro del mouse sulla relazione (la linea) che collega le tabelle interessate dall’operazione di eliminazione e quindi scegliere Elimina dal menu di scelta rapida.

Nota: Per ripristinare la relazione, seguire la procedura precedente per aprire il riquadro Relazioni, quindi trascinare il campo chiave primaria dalla tabella “uno” e rilasciarlo sul campo chiave esterna della tabella “molti”. Viene visualizzata la finestra di dialogo Modifica relazione. Se alla relazione precedente è applicata l’integrità referenziale, selezionare Applica integrità referenzialee quindi fare clic su Crea. In caso contrario, fare semplicemente clic su Crea.

Criteri di esempio per le query di selezione

La tabella seguente elenca alcuni criteri di esempio che è possibile usare nelle query di selezione quando si vuole essere certi di eliminare solo i dati da eliminare. Alcuni di questi esempi usano caratteri jolly.

CriteriEffetto
> 234Restituisce tutti i numeri maggiori di 234. Per trovare tutti i numeri minori di 234, utilizzare < 234.
>= “Cajhen”Restituisce tutti i record da Giussani alla fine dell’alfabeto.
Between #2/2/2010# And #12/1/2010 #Restituisce le date dal 2 febbraio 2010 al 1° dicembre 2010 (ANSI-89). Se il database usa i caratteri jolly ANSI-92, usare le virgolette singole (‘) al posto dei cancelletto (#). Ad esempio: Between ‘2/2/2010’ And ‘1/12/2010’.
Not “Germania”Trova tutti i record in cui il contenuto esatto del campo non corrisponde esattamente a “Germania”. Il criterio restituirà i record contenenti altri caratteri oltre a “Germania”, ad esempio “Germania (euro)” o “Europa (Germania)”.
Not “T*Trova tutti i record ad eccezione di quelli che iniziano con T. Se nel database viene utilizzato il set di caratteri jolly ANSI-92, utilizzare il simbolo di percentuale (%) al posto dell’asterisco (*).
Not “T*Trova tutti i record che non terminano con t. Se nel database viene utilizzato il set di caratteri jolly ANSI-92, utilizzare il simbolo di percentuale (%) al posto dell’asterisco (*).
In(Canada,Italia)In un elenco trova tutti i record che contengono Canada o Italia.
LIKE “[A-D]*”In un campo di tipo Testo trova tutti i record che iniziano con lettere da A a D. Se il database usa il set di caratteri jolly ANSI-92, usare il simbolo di percentuale (%) al posto dell’asterisco (*).
Like “*ar*”Trova tutti i record che includono la sequenza di lettere “ar”. Se nel database viene utilizzato il set di caratteri jolly ANSI-92, utilizzare il simbolo di percentuale (%) al posto dell’asterisco (*).
Like “Villa Dewe?”Trova tutti i record che iniziano con “Villa” e contengono una seconda stringa di cinque lettere in cui le prime quattro lettere sono “Dewe” e l’ultima lettera è sconosciuta. Se nel database viene utilizzato il set di caratteri jolly ANSI-92, utilizzare il carattere di sottolineatura (_) al posto del punto interrogativo (?).
#2/2/2010 #Trova tutti i record con data 2 febbraio 2010. Se nel database viene utilizzato il set di caratteri jolly ANSI-92, includere la data tra virgolette singole anziché cancelletto (‘2/2/2010’).
< Date( ) – 30Utilizza la funzione Date per restituire tutte le date passate da oltre 30 giorni.
Date( )Utilizza la funzione Date per restituire tutti i record contenenti la data corrente.
Between Date( ) And DateAdd(“M”, 3, Date( ))Usa le funzioni Date e DateAdd per restituire tutti i record compresi tra la data odierna e i tre mesi successivi alla data odierna.
Is NullRestituisce tutti i record contenenti un valore Null, ovvero vuoto o non definito.
Is Not NullRestituisce tutti i record che contengono qualsiasi valore diverso da Null.
“”Restituisce tutti i record che contengono una stringa di lunghezza zero. Le stringhe di lunghezza zero si usano quando è necessario aggiungere un valore a un campo obbligatorio, ma non si conosce ancora il valore effettivo. In un campo, ad esempio, potrebbe essere necessario aggiungere un numero di fax, ma alcuni clienti potrebbero non disporre di apparecchi fax. In questo caso, invece di immettere un numero, immettere una coppia di virgolette doppie senza spazi compresi (“”).

Suggerimenti per la risoluzione dei problemi

Cause della visualizzazione del messaggio di errore e correzione dell’errore

Se si crea una query di eliminazione usando più tabelle e la proprietà Record univoci della query è impostata su No,Access visualizza il messaggio di errore. Non è stato possibile eliminare dalle tabelle specificate durante l’esecuzione della query.

Per correggere l’errore, impostare la proprietà Record univoci della query su .

  1. Aprire la query di eliminazione nella visualizzazione Struttura.
  2. Se la finestra delle proprietà della query non è aperta, premere F4 per aprirla.
  3. Fare clic in Progettazione query per visualizzare le proprietà della query e non le proprietà dei campi.
  4. Nella finestra delle proprietà della query individuare la proprietà Record univoci e impostarla su .

Impedire il blocco di una query da parte della modalità di disattivazione

Per impostazione predefinita, se si apre un database desktop che non si è scelto di considerare attendibile o che non si trova in un percorso attendibile, Access blocca l’esecuzione di tutte le query di comando.

Se si tenta di eseguire una query di comando e sembra che non accada niente, verificare se sulla barra di stato di Access viene visualizzato il messaggio seguente:

Azione o evento bloccato dalla modalità di disattivazione.

Quando viene visualizzato questo messaggio, eseguire la procedura seguente per abilitare il contenuto bloccato:

  • Sulla barra dei messaggi avviso di sicurezza fare clic su Abilita contenuto ed eseguire di nuovo la query.
/ 5
Grazie per aver votato!

How useful was this post?

Click on a star to rate it!

Average rating / 5. Vote count:

No votes so far! Be the first to rate this post.

As you found this post useful...

Follow us on social media!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?