Oracle truncate table 与 delete tabel的区别
网上查阅了一些相关的帖子和文章,说法大体相同,但有些地方还是有些不一样,在这里稍微小总结一下二者的区别吧。
1.
delete产生rollback和相关锁信息,如果删除大数据量的表速度会很慢,同时会占用很多的rollback segments .而truncate 是DDL操作,不产生rollback,速度快.
Truncate table does not generate rollback information and redo records so it is much faster than delete.
In default, it deallocates all space except the space allocated by MINEXTENTS unless you specify REUSE STORAGE clause.
2.
delete不从tablespace中腾出空间,需要 ALTER TABLESPACE AAA COALESCE; 才有空间
3.
truncate 调整high water mark 而delete不.truncate之后,TABLE的HWM退回到 INITIAL和NEXT的位置(默认),delete 则不可以。
4.
truncate 只能对TABLE,delete 可以是table,view,synonym。
5.
TRUNCATE TABLE 的对象必须是本模式下的,或者有drop any table的权限 而 DELETE 则是对象必须是本模式下的,或被授予 DELETE ON SCHEMA.TABLE 或DELETE ANY TABLE的权限。
6.
truncate是DDL语言. delete是DML语言。不过要注意就是 truncate 不能在 pl/sql 上使用,要用 dynamic SQL 才可以。
DDL语言是自动提交的. 命令完成就不可回滚.
truncate的速度也比delete要快得多.
7.
truncate的时候INDEX也会删掉,而delete则不会。
相关文档:
'-------------------------------------------------------------------以下是登录代码
<%@ page contentType="text/html; charset=gb2312"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3 ......
Oracle函数和mysql函数比较
1. Oracle中的to_number()转换成数字;
Oracle> Select to_number(‘123’) from dual; ----- 123;
&nbs ......
MySQL Data Type
Oracle Data Type
BIGINT
NUMBER(19, 0)
BIT
RAW
BLOB
BLOB, RAW
CHAR
CHAR
DATE
DATE
DATETIME
DATE
DECIMAL
FLOAT (24)
DOUBLE
FLOAT (24)
DOUBLE PRECISION
FLOAT (24)
ENUM
VARCHAR2
FLOAT
FLOAT
INT
NUMBER(10, 0)
INTEGER
NUMBER(10, 0)
LONGBLOB
BLOB, RAW
LONGTEX ......
一 在Oracle中连接数据库
public class Test1 {
public static void main(String[] args) {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection(
&nbs ......