人生三大境界
衣带渐宽终不悔,为伊消得人憔悴。
昨夜西风凋碧树,独上高楼,望尽天涯路。
众里寻他千百度,蓦然回首,那人却在灯火阑珊处。

Oracle入门基础(八)一一数据处理

SQL> SQL的类型
SQL> 1、DML(Data Manipulation Language 数据操作语言): select insert update delete
SQL> 2、DDL(Data Definition Language 数据定义语言): create table,alter table,truncate table,drop table    create/drop view,sequnece,index,synonym(同义词)
SQL> 3、DCL(Data Control Language 数据控制语言): grant(授权) revoke(撤销权限)

SQL> --插入insert
SQL> insert into emp(empno,ename,sal,deptno) values(1001,'Tom',3000,10);

SQL> --PreparedStatement pst = "insert into emp(empno,ename,sal,deptno) values(?,?,?,?)";
SQL> --地址符 &
SQL> insert into emp(empno,ename,sal,deptno) values(&empno,&ename,&sal,&deptno);
输入 empno 的值:  1002
输入 ename 的值:  'Mary'
输入 sal 的值:  2000
输入 deptno 的值:  20
原值    1: insert into emp(empno,ename,sal,deptno) values(&empno,&ename,&sal,&deptno)
新值    1: insert into emp(empno,ename,sal,deptno) values(1002,'Mary',2000,20)

已创建 1 行。


SQL> select empno,ename,sal,&t
  2  from emp;
输入 t 的值:  job
原值    1: select empno,ename,sal,&t
新值    1: select empno,ename,sal,job

     EMPNO ENAME             SAL JOB                                                                                                                                                                    
---------- ---------- ---------- ---------                                                                                                                                                              
      1001 Tom              3000                                                                                                                                                                        
      1002 Mary             2000                                                                                                                                                                        
   
SQL> select * from &t;
输入 t 的值:  dept
原值    1: select * from &t
新值    1: select * from dept

    DEPTNO DNAME          LOC                                                                                                                                                                           
---------- -------------- -------------                                                                                                                                                                 
        10 ACCOUNTING     NEW YORK                                                                                                                                                                      
        20 RESEARCH       DALLAS                                                                                                                                                                        
        30 SALES          CHICAGO                                                                                                                                                                       
        40 OPERATIONS     BOSTON                                                                                                                                                                        

SQL> rollback;

回退已完成。

SQL> --一次插入多条记录
SQL> create table emp10 as select * from emp where 1=2;
SQL> desc emp10
助解:desc table_name查看表结构

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

SQL> 海量插入数据:
SQL> 1、数据泵(PLSQL程序)
SQL>    dbms_datapump(程序包)
SQL> 2、SQL*Loader
SQL> 3、外部表

SQL> delete和truncate的区别
SQL> 1、delete逐条删除;truncate先摧毁表 再重建2
SQL> 2、delete是DML  truncate是DDL
SQL> 3.   delete可以回滚;truncate不可以回滚
SQL> 4、delete不会释放空间 truncate会
SQL> 5、delete会产生碎片 truncate不会
SQL>6、delete from后面可以写条件,truncate不可以。
SQL> 7、delete可以闪回(flashback)  truncate不可以
助解:闪回技术有闪回表、闪回删除、闪回查询、闪回事务查询、闪回事务、闪回数据库、闪  回数据归档。其中,闪回查询、闪回事务查询用来“观察”过去;闪回数据归档并不是一个独立的功能,其功能是扩展闪回查询的时间窗口;闪回表、闪回删表能够以表为单位“回到”过去;闪回事务能够以事务为单位“回到”过去;闪回数据库能够以数据库为单位“回到”过去。
SQL> --flashback其实是一种恢复

SQL>delete和truncat执行时间对比                                                                                                                                                                                     
SQL> set timing on
SQL> delete from testdelete;
已用时间:  00: 00: 00.14
SQL> set timing off
SQL> drop table testdelete purge;
SQL>  @d:\temp\testdelete.sql
SQL> set timing on
SQL> truncate table testdelete;
已用时间:  00: 00: 00.27
SQL> set timing off

SQL> Oracle中的事务
SQL> 1、起始标志: 事务中的第一条DML语句
SQL> 2、结束标志:提交: 显式  commit  隐式: 正常退出 DDL DCL
SQL>       回滚: 显式 rollback   隐式: 非正常退出 掉电  宕机

SQL> create table testsavepoint
  2  (tid number,tname varchar2(20));
SQL> set feedback on
SQL> insert into testsavepoint values(1,'Tom');

已创建 1 行。

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

已创建 1 行。

SQL> savepoint a;

保存点已创建。

SQL> select * from testsavepoint;

       TID TNAME                                                                                                                                                                                        
---------- --------------------                                                                                                                                                                         
         1 Tom                                                                                                                                                                                          
         2 Mary                                                                                                                                                                                         

已选择 2 行。

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

已创建 1 行。

SQL>  select * from testsavepoint;

       TID TNAME                                                                                                                                                                                        
---------- --------------------                                                                                                                                                                         
         1 Tom                                                                                                                                                                                          
         2 Mary                                                                                                                                                                                         
         3 Maee                                                                                                                                                                                         

已选择 3 行。

SQL> rollback to savepoint a;

回退已完成。

SQL> select * from testsavepoint;

       TID TNAME                                                                                                                                                                                        
---------- --------------------                                                                                                                                                                         
         1 Tom                                                                                                                                                                                          
         2 Mary                                                                                                                                                                                         

已选择 2 行。

SQL> commit;

提交完成。

SQL> set transaction read only;

事务处理集。

SQL> select * from testsavepoint;

       TID TNAME                                                                                                                                                                                        
---------- --------------------                                                                                                                                                                         
         1 Tom                                                                                                                                                                                          
         2 Mary                                                                                                                                                                                         

已选择 2 行。

SQL> insert into testsavepoint values(3,'Maee');
insert into testsavepoint values(3,'Maee')
       
第 1 行出现错误: 
ORA-01456: 不能在 READ ONLY 事务处理中执行插入/删除/更新操作 

 --oracle分页(Pageing Query)

 select * from 	(select rownum r,e1.* from (select * from emp order by sal) e1
					 	 where rownum <=8) 
					 	 where r >=5;
posted @ 2019-09-18 16:04  一剑霜寒十九洲  阅读(116)  评论(0编辑  收藏  举报