Qu'est-ce que le TRUNCATE
faire différemment de laisser tomber?
Je crois qu'il supprime toutes les données de la table mais conserve le nom de la table dans la base de données, où as DROP
supprime toutes les données et la table. Est-ce correct ?
mysql
truncate
drop-table
user1829823
la source
la source
Réponses:
SUPPRIMER - LANGUE DE MANIPULATION DES DONNÉES (DML)
L'
DELETE
instruction de tout SGBDR est considérée comme une instruction DML . Également connu sous le nom de CRUD (créer, lire, mettre à jour, supprimer), ce type d'instruction est destiné à manipuler des données dans une base de données sans affecter la structure sous-jacente des objets. En termes pratiques, cela signifie:DELETE
instruction peut être affinée à l'aide d'un prédicat viaWHERE
ouJOIN
pour supprimer certaines ou toutes les lignes d'une table.DELETE
instruction sera enregistrée par la base de données et peut être annulée dans une transaction si l'instruction échoue.DELETE
prend des verrous au niveau des lignes sur les données supprimées, bien que cela puisse augmenter si nécessaire.DELETE
peut être "lent" (c'est relatif), mais plus sûr car il est à grain fin.TRUNCATE - LANGUE DE DÉFINITION DES DONNÉES (DDL)
TRUCNATE
est considéré comme une instruction DDL , ce qui signifie qu'il est destiné à modifier la façon dont les objets sont définis dans une base de données. Habituellement, les instructions DDL sontCREATE
,ALTER
ouDROP
, mais ontTRUNCATE
un objectif particulier, celui de "réinitialiser" une table en supprimant toutes les lignes. Les méthodes de cela diffèrent entre les moteurs RDBMS et je recommanderais de regarder les spécificités de MySQL . Les implications pratiques de aTRUNCATE
sont:TRUNCATE
ne peut pas être à grain fin. En cas de succès, il supprimera toutes les lignes de votre table.TRUNCATE
n'est généralement pas enregistré. Cela varie selon le SGBDR et je vous suggère de regarder plus spécifiquement comment MySQL le gère. (Indice, cela varie selon la version.)TRUNCATE
nécessite un verrou de métadonnées de table pour s'exécuter. La façon dont cela est réellement implémenté peut être spécifique au SGBDR, mais essentiellement leTRUNCATE
processus doit empêcher d'autres processus de nettoyer la table afin d'exécuter son DDL.TRUNCATE
sera plus rapide que aDELETE
, mais moins sûr.TABLEAU DROP - LANGUE DE DÉFINITION DES DONNÉES (DDL)
DROP TABLE
va plus loin queTRUNCATE
dans la mesure où il supprime complètement la table de la base de données. Cela inclut la suppression de tous les objets associés, tels que les index et les contraintes. Si vous supprimez une table, vous supprimez non seulement toutes les données, mais également la structure. Cela se fera généralement lorsqu'une table n'est plus nécessaire. La principale préoccupation est que, comme unDROP
est DDL, vous ne pouvez généralement pas l'annuler . Certains moteurs SGBDR vous permettront d'encapsuler DDL dans une transaction afin que vous puissiez la restaurer, mais cela n'est pas considéré comme la meilleure pratique et doit être évité.la source
Bien que je ne puisse pas parler pour MySQL, voici un tableau rapide comparant certains aspects de la troncature et de la suppression dans Oracle.
Informations compilées à partir de ce livre: http://amzn.com/0470395125
Espérons que cela puisse aider les utilisateurs Oracle qui tombent sur cette page, comme je l'ai fait. N'hésitez pas à indiquer lesquels, le cas échéant, de ces points sont valables dans MySQL,
la source
DROP TABLE TableName
-> supprimer la table de la base de données.TRUNCATE TABLE TableName
-> supprimer les données de la table, sans condition ... et réinitialiser laIDENTITY
valeur de départ, si la table a unIDENTITY
champ.la source
DELETE
: Commande DML, si vous exécutez la commande delete, supprimez les seules données sans déshabiller la structure de la table, nous pouvons ROLLBACK les données ligne par ligneTRUNCATE
: Commande DDL, si vous exécutez la commande Tronquer, supprimez les seules DONNÉES sans déshabiller la table Structure nous ne pouvons pas restaurer les données tronquer supprimer les données de manière PAGE PAR PAGE tronquer est plus rapide que supprimer la requêteDROP
:, Commande DDL, si vous exécutez la commande DROP, supprimez (supprimez) les données et la structure totale de la table, nous ne pouvons pas non plus restaurer les donnéesla source