Services webmasters
Partenaires
Jeux concours gratuits
 
Syntaxe de UPDATE
<<<
Syntaxe de DELETE Syntaxe de TRUNCATE
>>>

6.4 Manipulation de données : SELECT , INSERT , UPDATE , DELETE
6 Référence du langage MySQL
 Manuel de Référence MySQL 4.1 : Version Française

Syntaxe de SELECT
Syntaxe de HANDLER
Syntaxe de INSERT
Syntaxe de INSERT DELAYED
Syntaxe de UPDATE
->Syntaxe de DELETE
Syntaxe de TRUNCATE
Syntaxe de REPLACE
Syntaxe de LOAD DATA INFILE
Syntaxe de DO

6.4.6 Syntaxe de DELETE


DELETE [LOW_PRIORITY] [QUICK] FROM nom_de_table
       [WHERE clause_where]
       [ORDER BY ...]
       [LIMIT lignes]

ou

DELETE [LOW_PRIORITY] [QUICK] nom_de_table[.*] [,nom_de_table[.*] ...]
       FROM table-references
       [WHERE clause_where]

ou

DELETE [LOW_PRIORITY] [QUICK]
       FROM nom_de_table[.*], [nom_de_table[.*] ...]
       USING table-references
       [WHERE clause_where]
DELETE efface les enregistrements de nom_de_table qui satisfont la condition donnée par clause_where , et retourne le nombre d'enregistrements effacés.Si vous exécutez un DELETE sans clause WHERE , tous les enregistrements sont effacés. Si vous le faites en mode AUTOCOMMIT cela aura le même effet qu'un TRUNCATE . Syntaxe des TRUNCATE . Avec MySQL 3.23, DELETE sans clause WHERE retournera zéro comme nombre d'enregistrements affectés.

Si vous voulez vraiment savoir combien d'enregistrements ont été effacés quand vous videz une table, et que vous êtes prêts à souffrir d'un léger ralentissement, vous pouvez utiliser une requête DELETE de ce genre :


mysql> DELETE FROM nom_de_table WHERE 1>0;
Notez que c'est plus lent que DELETE FROM nom_de_table sans clause WHERE , parce que cela efface un enregistrement à la fois.

Si vous spécifiez le mot clef LOW_PRIORITY , l'exécution du DELETE sera repoussée jusqu'à ce qu'aucun client ne lise plus de la table.

Si vous spécifiez le mot QUICK , le gestionnaire de la table ne fusionnera pas les blancs dans les index durant la suppréssion, ce qui peut accélérer certain types de suppressions.

Dans les tables de type MyISAM , les enregistrements effacés sont maintenus dans une liste liée et les requêtes INSERT suivantes réutilisent les vieux emplacements. Pour recouvrir l'espace inutilisé ou réduire la taille des fichiers, utilisez la commande OPTIMIZE TABLE ou l'utilitaire myisamchk pour réorganiser les tables. OPTIMIZE TABLE est plus simple, mais myisamchk est plus rapide. Voyez Syntaxe de OPTIMIZE TABLE et Optimisation de table .

Le premier format de suppression multi-tables est supporté à partir de MySQL 4.0.0. Le second format de suppression multi-tables est supporté à partir de MySQL 4.0.2.

L'idée est que seul les lignes concordante dans les tables énumérées avant le FROM ou avant la clause USING sont effacés. Le but est de pouvoir effacer des lignes de plusieurs tables en même temps tout en ayant d'autres tables pour les recherches.

Le code .* après les noms de tables n'est présent que pour assurer la compatibilité avec Access :

DELETE t1,t2 FROM t1,t2,t3 WHERE t1.id=t2.id AND t2.id=t3.id

ou

DELETE FROM t1,t2 USING t1,t2,t3 WHERE t1.id=t2.id AND t2.id=t3.id
Dans les cas précédents, nous n'avons supprimé les lignes correspondantes que dans les tables t1 et t2 . ORDER BY et l'utilisation de plusieurs tables dans une requête DELETE est supporté en MySQL 4.0.

Si une clause ORDER BY est utilisée, les enregistrements seront effacés dans cet ordre. Ceci n'est vraiment intéressant qu'en conjonction avec LIMIT . Par exemple:


DELETE FROM unlog
WHERE user = 'jcole'
ORDER BY timestamp
LIMIT 1
Cela effacera la plus vielle entrée (en se basant sur timestamp ) où les enregistrements satisfont la clause WHERE .

L'option LIMIT lignes spécifique à MySQL pour DELETE donne au serveur le nombre maximal de lignes à être effacé avant que le contrôle ne revienne au client. Cela peut être utilisé pour s'assurer qu'une commande DELETE spécifique ne prenne pas trop de temps. Vous pouvez répéter la commande jusqu'à ce que le nombre de lignes affectées soit inférieur à la valeur passée à l'option LIMIT .

<< Syntaxe de DELETE >>
Syntaxe de UPDATE Manipulation de données : SELECT , INSERT , UPDATE , DELETE Syntaxe de TRUNCATE
Services webmasters
Les manuels
 
CoursPHP.com - Reproduction interdite -