处理数据
1 SQL的类型
- DML (Data Manipulation Language 数据操作语言):select insert update delete
- DDL (Data Definition Language 数据定义语言):create table,alter table,truncate table,drop table,create/drop view(视图),sequnece(序列),index(索引),synonym(同义词)
- DCL (Data Control Language 数据控制语言):grant(授权),revoke(撤销权限)
2 DML
2.1 insert操作
2.1.1 地址符 &
在JDBC中,有PreparedStatement 是可以预编译SQL以参数形式插入值。在Oracle中也有这样的功能。
地址符可以用在增删改查操作中。
2.1.2 一次性将多条数据插入到一张表中。
- 那就是在INSERT语句中加入子查询。
注意:- 不必书写VALUES子句。
- 子查询中的值列表应与INSERT子句中的列名对应。
但当插入海量数据时,如果还使用这种方式去一次性插入数据效率会很低。那我们该采取哪些方法呢?
- 数据泵(PLSQL程序):dbms_datapump(程序包)
- SQL*Loader
- 外部表
2.2 update操作
由于和mysql一样所以就不详细讲了。
2.3 delete操作
因为delete操作时DML语句,而truncat操作是DDL语句,所以DML是支持回滚操作的,而DDL不支持回滚操作。
2.3.1 delete和truncate操作的区别
- delete逐条删除;truncate先摧毁表 再重建表。
- delete是DML(支持回滚),truncate是DDL(不可以回滚)
- delete不会释放空间,truncate会
- delete会产生碎片,truncate不会
- delete可以闪回(flashback),truncate不可以
(什么是闪回:就是当事务提交后,还能将数据恢复回来)
在删除大量数据时,delete操作比truncate操作要快。
3 Oracle中的事务
如果在DDL操作之前有执行DML操作还未显式提交事务,那么在DDL操作之后会默认把之前尚未提交事务的DML操作一起提交事务。
3.1 事务的保存点
4 伪列rownum行号的使用
关于rownum行号的使用需要注意以下几点
- rownum永远按照默认的顺序生成
- rownum只能使用< <=; 不能使用 > >=