SQL em Oracle > DML > DELETE
DELETE tl_logo2.jpg

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.

note04.gif

O comando baixo remove duas linhas da tabela:

delete from EMP_SALS where EMP_NAME like 'M%';
2 rows deleted

note04.gif

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.

bthome.gifTopo


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.

bthome.gifTopo


Realizado por Turtle Learning ®. Última alteração em 2011-02-26