Oracle 删除–从简单到复杂
删除整个表–drop
drop table tablename;
可以一次删除多个表,逗号隔开
删除表中所有数据–delete
delete from tablename;
删除表中所有数据–truncate
truncate table tablename;
删除某条数据–delete+where
delete from tablename where col=‘data’;
如果另一个表中存在某条数据,删除整个表数据–delete、exists、select
delete from tablename1 where exists (
select * from tablename2 where col1='data’
);
tablename2中能找到数据,删除整个tablename1中的所有数据;否则,不删除任何数据;
一般地,所有select语句都可以使用。
只要select结果集不为空where exists返回true,就会执行删除,相反的;where not exists返回false,不会执行删除。
如果字段在另一个表中能找到,则删除相关数据–delete、in、select
delete from tablename1 where col1 in(
select col2 from tablename2 where col2='data’
);
如果col1在查询的结果中可以找到的,就删除相关数据;否则,不删除任何数据。
一般地,所有select语句都可以使用
只要select结果集不为空where col in会查找结果集,能匹配的相关数据行会被删除;相反的,where col not in会删除结果集中不能匹配的相关数据行。
*delete、truncate、drop的区别
-
delete是DML语言,truncate和drop是DDL语言;
-
从表的角度看,delete和truncate删除表中数据,drop删除整个表;
从数据角度看,delete一次一条的删除数据,truncate和drop直接删除所有数据
-
delete删除数据的操作会放到 rollback segment,commit后才会生效,否则会回滚到操作前;truncate和drop操作直接生效