Es gibt zwei Wege zur Beseitigung von Datensätzen in Oracle . Eine besteht darin, die "kill all" Situation, in der TRUNCATE -Befehl komplett leert den Datenbank-Tabelle , und die andere ist die DELETE -Befehl, der Interessenten Datensätze zu filtern kann und umgekehrt die Aktion in solchen Fällen wie versehentliches Löschen verwenden . Der sicherste Weg, um diesen Prozess zu demonstrieren, ist es, eine Test-Tabelle zu erstellen und versuchen, die Interessenten Befehle aus , anstatt Experiment auf einer vorhandenen Datenbank. Anleitung
DELETE
1
erstellen Test-Tabelle und mit Daten füllen , um das Ergebnis zu testen. Die Daten eingefügt demonstriert den Einsatz der Lösch- und TRUNCATE-Anweisung wie folgt:
CREATE TABLE Test ( testdata VARCHAR2 ( 2) );
INSERT INTO Test ( testdata ) VALUES (' AX ');
INSERT INTO Test ( testdata ) VALUES (' AY ');
INSERT INTO Test ( testdata ) VALUES (' AZ ');
INSERT INTO Test ( testdata ) VALUES (' BX ');
INSERT INTO Test ( testdata ) VALUES (' BY' );
INSERT INTO Test ( testdata ) VALUES (' BZ ');
INSERT INTO Test ( testdata ) VALUES (' CX ');
INSERT INTO Test ( testdata ) VALUES (' CY ');
INSERT INTO Test ( testdata ) VALUES ( "CZ" );
INSERT INTO Test ( testdata ) VALUES (' DX ');
INSERT INTO Test ( testdata ) VALUES (' DY ');
INSERT INTO Test ( testdata ) VALUES (' DZ ');
COMMIT ;
SELECT * FROM test ;
2
löschen einer Anzahl von Zeilen mit dem Befehl delete , aber nicht verpflichten, das Ergebnis. Dies wird zeigen, wie löschen Daten vor versehentlichem Löschen schützt unter normalen Umständen . Die Lösch- Befehl wird von der Kommandozeile wie folgt:
SQL > DELETE FROM Test WHERE testdata LIKE ' A %';
Dadurch werden alle Zeilen mit "A" vorangestellt löschen und lassen Sie das ruhen restlichen
Rollback das Ergebnis und die Ergebnisse der Tabelle wie folgt: .
SQL > ROLLBACK ;
Dadurch wird die vorherige delete-Anweisung und die Tabelle sollte nun umkehren werden wieder auf seinen ursprünglichen Zustand . Dies ist überprüfbar :
SQL > SELECT * FROM test ;
3
Führen Sie den Befehl Löschen wieder, dann " COMMIT " und " ROLLBACK " vor der Prüfung die Ausgabe wie abgebildet:
SQL > DELETE FROM Test WHERE testdata LIKE ' A %';
SQL > COMMIT ;
SQL > ROLLBACK ;
SQL > SELECT * FROM test ;
Dies zeigt, dass die Oracle " ENTF "-Anweisung wirksam war und ignorierte die Rollback -Anweisung , aufgrund einer " COMMIT " Aktion stattfindet unmittelbar danach . Dies deutet darauf hin , dass alle Zeilen beginnend mit "A" in der " testdata "-Feld aus der Datenbank verschwinden und sind nicht erstattungsfähig mit einem "Rollback "-Anweisung.
TRUNCATE
4 < p> Ausführen einer Anweisung TRUNCATE auf der Test-Tabelle wie folgt:
SQL > TRUNCATE tABLE test ;
5
Rollback die vorherige Anweisung wie folgt:
SQL > ROLLBACK ;
6
Wählen Sie die Elemente aus der Test-Tabelle wie folgt:
SQL > SELECT * FROM test ;
Dies zeigt keine Artikel auf dem Tisch. Die " ROLLBACK "-Anweisung nicht auf den Befehl TRUNCATE arbeiten und alle Zeilen in der Datenbank verschwinden .
Ein weiterer wichtiger Unterschied von "DELETE" ist, dass " TRUNCATE " arbeitet schneller , ist aber nicht in der Lage ist das Herausfiltern von Daten mit eine "WHERE "-Klausel (im Gegensatz zu DELETE) .