DELETE – Cancellare i dati dalle Tabelle

DELETE – Cancellare i dati dalle Tabelle

In contrapposizione al post precedente, nel quale spiegavo brevemente come poter effettuare l'inserimento dei dati in una tabella; qui spiegheremo brevemente l'operazione contraria ossia la loro cancellazione.

Operiamo quindi in modo del tutto analogo a quanto fatto in precedenza in fase di esecuzione dell'inserimento dati, soltanto che stavolta dovremmo provvedere alla loro cancellazione.

Basta effettuare il login al nostro server accedendo quindi al monitor:
mysql -uUTENTE -hHOST_di_DESTINAZIONE -p

A questo punto utilizziamo il nostro “schema” sul quale desideriamo lavorare:
USE video

SINTASSI - DELETE - Cancellare i dati dalle Tabelle

Bene ora non ci rimane che cancellare uno o più dati memorizzati nella tabella.
Il comando per poter fare questo è DELETE di cui si può facilmente ottenere la sintassi direttamente dal nostro monitor con:
mysql> h DELETE
Name: 'DELETE'
Description:
Syntax:
Single-table syntax:

DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]

Multiple-table syntax:

DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
tbl_name[.*] [, tbl_name[.*]] ...
FROM table_references
[WHERE where_condition]

Or:

DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
FROM tbl_name[.*] [, tbl_name[.*]] ...
USING table_references
[WHERE where_condition]

For the single-table syntax, the DELETE statement deletes rows from
tbl_name and returns a count of the number of deleted rows. This count
can be obtained by calling the ROW_COUNT() function (see [HELP
BENCHMARK]). The WHERE clause, if given, specifies the conditions that
identify which rows to delete. With no WHERE clause, all rows are
deleted. If the ORDER BY clause is specified, the rows are deleted in
the order that is specified. The LIMIT clause places a limit on the
number of rows that can be deleted.

For the multiple-table syntax, DELETE deletes from each tbl_name the
rows that satisfy the conditions. In this case, ORDER BY and LIMIT
cannot be used.

where_condition is an expression that evaluates to true for each row to
be deleted. It is specified as described in [HELP SELECT].

Currently, you cannot delete from a table and select from the same
table in a subquery.

As stated, a DELETE statement with no WHERE clause deletes all rows. A
faster way to do this, when you do not need to know the number of
deleted rows, is to use TRUNCATE TABLE. However, within a transaction
or if you have a lock on the table, TRUNCATE TABLE cannot be used
whereas DELETE can. See [HELP TRUNCATE TABLE], and [HELP LOCK].

URL: http://dev.mysql.com/doc/refman/5.0/en/delete.html
La sintassi di tale comando mi sembra alquanto banale, dopo aver letto quanto sopra esposto.
Sebbene la sintassi della clausola "WHERE where_condition" siaindicata come opzionale, ha una rilevanza significativa per poter effettuare unacancellazione mirata di tutti i dati che soddisfano una determinata condizione. Quindia meno che non si desideri effettuare l'eliminazione di tutti i dati presenti in tabell, io direi che tale clausola sia quasi obbligatoria !

PRIMA di PROCEDERE con TALE COMANDO:

Siccome magari vogliamo essere molto sicuri di quello che facciamo almeno prima di operare la cancellazione (i dati una volta eliminati non saranno più ripristinabili), dobbiamo trovare una sequenza di comandi che ci consenta di "spulciare" la struttura del nostro database (detto anche schema) e magari, una volta individuata la tabella di nostro interesse, ci interesserebbe pure effettuare una semplice visualizzazione dei dati da eliminare. Vediamo quindi alcuni brevi comandi ed il loro risultato.
Consultare una tabella

PROCEDIAMO ALLA CANCELLAZIONE DEI DATI:

Benissimo! Ora che sappiamo dov'è la nostra tabella, il nome e la tipologia di ciascun campo ed inoltre conosciamo tutti i suoi dati, dobbiamo soltanto scegliere quale dato si desidera cancellare.
Nel nostro caso andremo a cancellare l'attore (inserito ai fini di questa prova) che si chiama 'Attore di prova'.
Come si può notare dalla visualizzazione dei dati (da ora in poi query) presenti in tabella, tale attore, presenta un valore per il campo relativo alla chiave primaria id pari a 148.

Quindi da quanto qui emerso l'esecuzione del comando di cancellazione è il seguente:
delete from attori where id=148;

Mi raccomando NON dimenticateVi mai la clausola WHERE... altrimenti addio a tutti i vostri dati senza nessuna possibilità di recupero. Quindi occhio nell'utilizzare tale comando.

Post successivo

Pubblicato in Documentazione Tecnica, MySQL e taggato , .