时间:2021-07-01 10:21:17 帮助过:10人阅读
1)truncate 是DDL语句,delete 是DML语句;
2)truncate 速度远快于 delete;
原因是:当我们运行delete操作时全部表数据先被copy到回滚表空间。数据量不同花费时间长短不一。而truncate是直接删除数据不进回滚表空间。
3)接(2)这也就导致了delete数据后我们能够执行rollback进行数据回滚,而truncate则是永久删除不能回滚。
4)truncate 操作不会触发表上的delete触发器。而delete会正常触发。
5)truncate语句不能带where条件意味着仅仅能所有数据删除,而delete可删除部分数据;
6)truncate 操作会重置表的高水位线(High Water Mark),而delete不会。
ps: 有关高水位线HWM知识清參考文章:http://blog.csdn.net/indexman/article/details/25910255
请參考:http://blog.csdn.net/indexman/article/details/19907731
NVL (expr1, expr2):expr1为NULL,返回expr2;不为NULL,返回expr1。注意两者的类型要一致
NVL2 (expr1, expr2, expr3) :expr1不为NULL。返回expr2;为NULL,返回expr3。expr2和expr3类型不同的话。expr3会转换为expr2的类型
看一下官方演示样例:commission即为工资提成
HR@orcl> SELECT last_name, NVL(TO_CHAR(commission_pct), 'Not Applicable') 2 "COMMISSION" FROM employees 3 WHERE last_name LIKE 'B%' 4 ORDER BY last_name; LAST_NAME COMMISSION ------------------------- ---------------------------------------- Baer Not Applicable Baida Not Applicable Banda .1 Bates .15 Bell Not Applicable Bernstein .25 Bissot Not Applicable Bloom .2 Bull Not Applicable
HR@orcl> SELECT last_name, salary, NVL2(commission_pct, 2 salary + (salary * commission_pct), salary) income 3 FROM employees WHERE last_name like 'B%' 4 ORDER BY last_name; LAST_NAME SALARY INCOME ------------------------- ---------- ---------- Baer 10000 10000 Baida 2900 2900 Banda 6200 6820 Bates 7300 8395 Bell 4000 4000 Bernstein 9500 11875 Bissot 3300 3300 Bloom 10000 12000 Bull 4100 4100
4、集合操作符minus和interset
如果表A和表B数据例如以下:
表A:
data
----------
a
b
b
c
表B
data
----------
b
c
d
d
问1:SELECT DATA FROM A MINUS SELECT DATA FROM B; 运行结果?
--------------------------------------------------------------------------------------------------
答案:
a
问2:SELECT DATA FROM A INTERSECT SELECT DATA FROM B; 运行结果?
答案:
b
c
集合操作符总结:
1)UNION:由每一个查询 选择的 全部不反复的行组成。并集不包括反复值, 默认按第 1 个查询的第 1 列升序排列。
2)UNION ALL: 由每一个查询 选择的 全部的行。全然并集包括反复值。
不排序。
3) MINUS : 在第一个查询中。 不在后面查询中的行。
不包括反复。 按第1
个查询的第
1
列升序排列。
4)INTERSECT: 取每一个查询结果的交集。 不包括反复行。 按第1 个查询的第 1 列升序排列。
敬请期待!
------------------------------
Dylan Presents.
oracle 数据库开发面试题
标签:color 行数据 表数 rom man ast size oracle blog