Oracle_处理数据

来源:互联网 发布:个人网络炒美元 编辑:程序博客网 时间:2024/05/29 19:14


 SQL语句
 1. DML语句(Data Manipulation Language 数据操作语言): insert update delete select
 2. DDL语句(Data Definition Language 数据定义语言): create/alter/drop/truncate table
                                                    create/drop view,create/drop index(sequence,synonym)
 3. DCL语句(Data Control Language 数据控制语言): commit rollback

 

--地址符 &
SQL> insert into emp(empno,ename,sal,deptno) values(&empno,&ename,&sal,&deptno);
输入 empno 的值:  1003
输入 ename 的值:  'Mike'
输入 sal 的值:  3000
输入 deptno 的值:  20
原值    1: insert into emp(empno,ename,sal,deptno) values(&empno,&ename,&sal,&deptno)
新值    1: insert into emp(empno,ename,sal,deptno) values(1003,'Mike',3000,20)

 

--在DML语句中使用地址符
SQL> select empno,ename,&a from emp;
输入 a 的值:  sal
原值    1: select empno,ename,&a
新值    1: select empno,ename,sal

 

一次插入(拷贝)一批数据
SQL> create table emp20 as select * from emp where 1=2;
因为1=2的条件为假,所以创建的表只是emp表的框架,无具体内容

一次性将emp中所有20号部门的员工插入到emp20
SQL> insert into emp20 select * from emp where deptno=20;

 

truncate table emp20;
等同于: delete from emp20;
delete和truncate table的区别
 1. delete是DML,truncate是DDL (DML可以rollback,DDL不可以)
 2. delete逐条删除;truncate先摧毁,再重建
 3. delet会产生碎片;truncate不会
 4. delete不会释放空间;truncate会

 

set feedback off------》会将“表已创建,已插入一行”等Oracle自己打印出来提示字符串的功能关闭
@c:\sql.sql-----------》加载并执行C盘下Sql.sql文件,文件中会创建一个testdelete表并插入5000行数据

 

SQL> delete from testdelete;
已用时间:  00: 00: 00.04
SQL> drop table testdelete purge;-----》purge会一并将testdelete删除后在Oracle回收站的testdelete删除
已用时间:  00: 00: 01.92                                                                                             SQL> truncate table testdelete;
已用时间:  00: 00: 00.54

总结:delete 性能比 truncate要好

 

Oracle中的事务
 1. 事务的起始标志: DML语句
 2. 事务的结束标志: 提交: 显式提交 commit
                          隐式提交  DDL 语句,正常退出 exit
                    回滚: 显式  rollback
                          隐式 非正常退出,掉电,宕机

SQL> --保存点-------在Java中也支持保存点
SQL> create table testsavepoint
  2  (tid number,tname varchar2(20));

SQL> insert into testsavepoint values(1,'Tom');

SQL> insert into testsavepoint values(2,'Mary');

定义保存点
SQL> savepoint a;

SQL> insert into testsavepoint values(3,'Moke');

SQL> rollback to savepoint a;---》只会回退到保存点,不会将1,2的数据回退

 

 

原创粉丝点击