DELETE |
Neste módulo vamos ver os comandos que permitem remover linhas de uma tabela:
DELETE
O comando DELETE permite remover linhas de uma tabela. Como todos os outros comandos do conjunto DML faz sempre parte de uma transacção.
O exemplo abaixo será analisado no módulo de criação de tabelas. Ele permite criar uma tabela a partir do resultado de um comando SELECT. As restrições existentes nas tabelas originais não são recriadas na nova tabela:
drop table EMP_SALS; create table EMP_SALS (emp_name, salary, grade) as ( select e.ename, e.sal, s.grade from emp e, salgrade s where e.sal between s.losal and s.hisal ); |
Error starting at line 1 in command: drop table EMP_SALS Error report: SQL Error: ORA-00942: table or view does not exist create table succeeded. |
O comando baixo remove duas linhas da tabela:
delete from EMP_SALS where EMP_NAME like 'M%'; |
2 rows deleted |
Se no comando DELETE for omitida a cláusula WHERE então todas as linhas da tabela serão removidas:
delete from EMP_SALS; |
12 rows deleted |
Como este comando faz parte de uma transacção e desde que o modo AUTOCOMMIT não esteja activo, as linhas podem ser recuperadas recorrendo à instrução ROLLBACK.
TRUNCATE
O comando TRUNCATE permite remover todas as linhas de uma tabela. Distingue-se do comando DELETE pelos seguintes motivos:
No exemplo abaixo recriamos a tabela EMP_SALS e em seguida removemos todas as linhas com TRUNCATE:
drop table EMP_SALS; create table EMP_SALS (emp_name, salary, grade) as ( select e.ename, e.sal, s.grade from emp e, salgrade s where e.sal between s.losal and s.hisal ); truncate table EMP_SALS; |
drop table EMP_SALS succeeded. create table succeeded. truncate table EMP_SALS succeeded. |
Realizado por Turtle Learning ®. Última alteração em 2011-02-26