Det finns två sätt att ta bort poster i Oracle . Ett är att använda " döda alla " situation där TRUNCATE kommandot fullständigt tömmer databasen bordet , och den andra är kommandot Ta bort , vilket kan filtrera blivande register och vända åtgärder i sådana fall som oavsiktlig radering . Det säkraste sättet att visa detta är att skapa ett test bord och prova de blivande kommandon ut snarare än experiment på en befintlig databas . Instruktioner
DELETE
1
Skapa ett test bord och fylla den med data för att testa resultatet . Infogad data visar användningen av på delete och trunkera uttalande, enligt följande:
CREATE TABLE test ( testdata VARCHAR2 ( 2 ) ) ;
INSERT INTO provning ( testdata ) Värden ( ' AX ' ) ;
INSERT INTO testet ( testdata ) VALUES ( ' AY ' ) ,
INSERT INTO test ( testdata ) VALUES ( ' AZ ');
INSERT INTO testet ( testdata ) VALUES ( ' BX ' ) ,
INSERT INTO testet ( testdata ) VALUES ( ' av');
INSERT INTO testet ( testdata ) VALUES ( ' BZ ' ) ;
INSERT INTO testet ( testdata ) VALUES ( ' CX ' ) ,
INSERT INTO test ( testdata ) VALUES ( ' CY ');
INSERT INTO provningsmetoder ( testdata ) VALUES ( ' CZ ');
INSERT INTO provningsmetoder ( testdata ) VALUES ( ' DX ');
INSERT INTO testet ( testdata ) VALUES ( ' DY ');
INSERT INTO provning ( testdata ) VALUES ( ' DZ ' ) ,
COMMIT ,
SELECT * FROM test, köpa 2
bort ett antal rader med kommandot Ta bort , men inte begår resultatet . Detta kommer att visa hur delete skyddar data mot oavsiktlig radering under normala omständigheter . Delete kommandot körs från kommandoraden enligt följande :
SQL > DELETE FROM prov där testdata LIKE ' A % ' ;
Detta kommer att radera alla rader som är markerade med " A " och lämna vila resterande
återladdning resultatet och visa resultatet i tabellen så här: .
SQL > ROLLBACK ,
Detta kommer att vända den tidigare delete och tabellen ska nu ställas tillbaka till sitt ursprungliga skick . Detta är kontrollerbara av :
SQL > SELECT * FROM test,
3
Kör kommandot Radera och sedan " begå, " och "återgång " innan du testar utgång enligt bilden:
SQL > DELETE FROM prov där testdata LIKE ' A % ' ;
SQL > Commit;
SQL > ROLLBACK ,
SQL > SELECT * FROM test,
detta visar att Oracle " DELETE " uttalande har varit effektiv och ignorerat rollback uttalande , på grund av en " COMMIT " action sker omedelbart efteråt . Detta indikerar att alla rader som börjar med " A " i " testdata " fältet försvinner från databasen och är inte ersättningsgilla med en "återgång " uttalande . Addera TRUNCATE
4
Kör en trunkera uttalande på testet tabellen enligt följande :
SQL > tRUNCATE tABLE test,
5
återladdning föregående uttalande enligt följande :
SQL > ROLLBACK ,
6
välja objekt från testet tabellen enligt följande:
SQL > SELECT * FROM test,
Detta visar inga föremål på bordet . Den "återgång " uttalande fungerar inte på TRUNCATE kommandot och alla rader i databasen försvinner .
Annan stor skillnad från " DELETE " är att " TRUNCATE " arbetar snabbare men är inte kapabel att filtrera bort data med hjälp av en " WHERE klausul" ( till skillnad DELETE ) .