Was macht das TRUNCATE
anders, um fallen zu lassen?
Ich glaube, es löscht alle Daten in der Tabelle, behält aber den Tabellennamen in der Datenbank, wobei as DROP
alle Daten und die Tabelle löscht. Ist das richtig ?
mysql
truncate
drop-table
user1829823
quelle
quelle
Antworten:
LÖSCHEN - DATENMANIPULATIONSSPRACHE (DML)
Die
DELETE
Anweisung in einem RDBMS wird als DML- Anweisung betrachtet. Diese Art von Anweisung wird auch als CRUD (Create, Read, Update, Delete) bezeichnet und dient dazu, Daten in einer Datenbank zu bearbeiten, ohne die zugrunde liegende Struktur der Objekte zu beeinflussen. In der Praxis bedeutet dies:DELETE
Anweisung kann mithilfe eines Prädikats überWHERE
oderJOIN
zum Löschen einiger oder aller Zeilen in einer Tabelle verfeinert werden.DELETE
Anweisung wird von der Datenbank protokolliert und kann innerhalb einer Transaktion zurückgesetzt werden, wenn die Anweisung fehlschlägt.DELETE
werden Sperren für die gelöschten Daten auf Zeilenebene vorgenommen, dies kann jedoch bei Bedarf höher eskalieren.DELETE
kann es "langsam" sein (dies ist relativ), aber sicherer, weil es feinkörnig ist.TRUNCATE - DATENDEFINITIONSSPRACHE (DDL)
TRUCNATE
wird als DDL- Anweisung betrachtet, was bedeutet, dass die Definition von Objekten in einer Datenbank geändert werden soll. Normalerweise DDL - Anweisungen sindCREATE
,ALTER
oderDROP
aberTRUNCATE
dient einem bestimmten Zweck, der von „Rücksetzen von “ einer Tabelle alle Zeilen zu entfernen. Die Methoden hierfür unterscheiden sich zwischen den RDBMS-Engines, und ich würde empfehlen, die Besonderheiten von MySQL zu betrachten . Die praktischen Auswirkungen von aTRUNCATE
sind:TRUNCATE
kann nicht feinkörnig sein. Bei Erfolg werden alle Zeilen aus Ihrer Tabelle entfernt.TRUNCATE
wird normalerweise nicht protokolliert. Dies variiert je nach RDBMS, und ich würde vorschlagen, dass Sie sich genauer ansehen, wie MySQL damit umgeht. (Hinweis, es variiert je nach Version.)TRUNCATE
Für die Ausführung ist eine Tabellenmetadatensperre erforderlich. Wie dies tatsächlich implementiert wird, kann für RDBMS spezifisch sein, aber im WesentlichenTRUNCATE
muss der Prozess verhindern, dass andere Prozesse mit der Tabelle verwechseln, um ihre DDL auszuführen.TRUNCATE
schneller als aDELETE
, aber weniger sicher.DROP TABLE - DATENDEFINITIONSSPRACHE (DDL)
DROP TABLE
geht weiter als a,TRUNCATE
indem es die Tabelle tatsächlich vollständig aus der Datenbank entfernt. Dies umfasst das Entfernen aller zugeordneten Objekte wie Indizes und Einschränkungen. Wenn Sie eine Tabelle löschen, entfernen Sie nicht nur alle Daten, sondern auch die Struktur. Dies erfolgt normalerweise, wenn eine Tabelle nicht mehr benötigt wird. Das Hauptanliegen ist, dass aDROP
DDL normalerweise nicht rückgängig machen kann . Bei einigen RDBMS-Engines können Sie DDL in eine Transaktion einbinden, damit Sie sie zurücksetzen können. Dies wird jedoch nicht als bewährte Methode angesehen und sollte vermieden werden.quelle
Obwohl ich nicht für MySQL sprechen kann, finden Sie hier eine kurze Tabelle, in der einige Aspekte von Abschneiden und Löschen in Oracle verglichen werden.
Aus diesem Buch zusammengestellte Informationen: http://amzn.com/0470395125
Hoffentlich kann dies allen Oracle-Benutzern helfen, die wie ich über diese Seite stolpern. Bitte zögern Sie nicht, darauf hinzuweisen, welche dieser Punkte in MySQL zutreffen.
quelle
DROP TABLE TableName
-> Tabelle aus der Datenbank löschen.TRUNCATE TABLE TableName
-> Löschen Sie die Daten der Tabelle unbedingt ... und setzen Sie denIDENTITY
Startwert zurück, wenn die Tabelle einIDENTITY
Feld enthält.quelle
DELETE
: DML-Befehl, wenn Sie den Löschbefehl ausführen, entfernen Sie die einzigen DATEN, ohne die Tabellenstruktur zu entkleiden. Wir können die Daten zeilenweise ROLLBACKENTRUNCATE
: DDL-Befehl, wenn Sie den Befehl "Abschneiden" ausführen, entfernen Sie die einzigen DATEN, ohne die Tabelle zu entkleidenDROP
:, DDL-Befehl, wenn Sie den DROP-Befehl zum Löschen (Entfernen) der Daten und der gesamten Tabellenstruktur ausführen, können wir die Daten auch nicht zurücksetzenquelle