【2013】韩顺平Oracle记录

有道云笔记 连接:

http://note.youdao.com/noteshare?id=3517a1795a730d3e6bc0dd3072622e16


----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

以下可忽略:




《笔记 oracle_2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

#韩顺平讲得太墨迹,先跳过oracle表查询

 

 

 

注意,JDBC_ODBC桥需要到“控制面板 管理 - ODBC数据源”里配置。

 

 

韩老师讲得分页查询好伤啊

 

 

 

 

 

 

 


《笔记 oracle_3

 

 

  1. 分页查询

对于oracle分页查询,最基础(不排序,不优化)的语句是:

SELECT * FROM  (SELECT  a.*,  ROWNUM  rn  FROM (SELECT * FROM empa )  WHERE ROWNUM = 21 ;

使用了三层嵌套子查询和关键字ROWNUM

 

 

 

 

 

 

 

 

2. oracle事务管理

 

oracle事物跟java里的synchonized块差不多。

 

 

 

 

 

 

 

 

注意,保存点回滚的前提是没有commit;否则没有办法。

 

注意,不手动commit,而exit对话框,会默认commit。所以,设置保存点后既不能commit也不能exit对话框。

rollback不加参数,表示回退所有操作。

 

Hibernate会强制dml使用事物(transact)。

egpublic void insertDAO {

Connection cnn = null;

try{

Class.forName(oracle.jdbc.driver.OracleDriver);

cnn = DriverManager.getConnection(

jdbc:oracle:thin:@127.0.0.1:1521xe,

username,password);

cnn.setAutoCommit(false);//1.设定自动提交为false

Statement sm = cnn.createStatement();

sm.excecuteUpdate(UPDATE  emp  SET  SAL=SAL-1 WHERE  ENAME=SCOTT’”);

int k = 9/0;

sm.excecuteUpdate(UPDATE  emp  SET  SAL=SAL+1 WHERE  ENAME=SMITH’”);

cnn.commit();                //2.手动cimmit

sm.close();

cnn.close();

catch(Exception e) {

try {

cnn.rollback();   //3. 如果异常就rollback

catch(Excrption ep) {

ep.printStackTrace();

}

e.printStackTrace();

}

}

 

 

只读事物使管理员能够在某一时间点准确统计信息。如,上例,管理员想在18:00的时候统计机票信息;他设置了一个只读事物,然后开始写统计的sql;这期间,一定会有其他的客户想数据库中增删改,而这些操作对管理员的统计是没有影响的。只读事物在高并发系统,对管理员日常工作是很重要的。

 

 

 

3. oracle函数

 

 

 

注意,每个数据库的sql函数细节上是不同的。

 

 

 

注意,数据量大时,四舍五入的方式对统计的结果是比较大的。

 

 

这些函数在特定情况下用到,比如生成统计图、工程项目。

 

所以,在添加的时候,如果想图方便,可以将数据都加上单引号。

 

 

例如,dms系统会把每个LogRecsysdate存到数据库中;当读这些数据时,oracle默认是没有时分秒的;就需要手工转换。

再例如,某机票系统,需要查过去一小时有多少数据添加进去了。

 

NUMBER7,2):共7位数,但是小数点后有2位(整数5位)。

 

 

在创建用户时,oracle会自动创建跟该用户同名的方案;oracle是靠方案管理数据对象的。

 

 

 

  1. oracle数据库管理

 

 

 

 

45是高级dba的工作;备份和恢复是普通dba的主要工作。

调优:化腐朽为神奇;技术含量比较高。

注意,dba是越老越吃香的。

 

 

 

sys登陆必须加上as sysdbaas sysoper

system登陆可以不加as,但是这时某人是sysdba的;即把as sysdba省略了。

 

可以注意到,system正常登陆就拥有了sysdba权限,能完成所有操作。

总结:从在oracle的地位看,sys用户的方案里存了oracle的核心数据对象;system用户则没有,也不能操作sys里的这些数据;

从权限上看,systemsys都有sysdba的角色,即都有最高的权限。

 

 

 

 

 

导出方案:把某用户所有的东西都导出去了;

导出数据库:把所有用户的东西都导出去。

 

 

注意,导出的dmp文件并不是文本文件,而是数据文件。

 

注意,直接导出方式,在数据量大时,很实用。

 

 

导入数据库、恢复(表、方案、数据库),

 

数据字典:系统的静态信息;

动态性能试图:系统的动态信息;

 

注意,数据字典能完成许多实用的查询!

 

 

 

以上功能也很实用。

 

 

 

还可以查oracle所有系统权限(140多)、对象权限(也很多)。

 

 

 

 

 

 

表空间:把一些数据文件统一起来起个名字,就是表空间。当我们在说某表在哪?的时候,不会说它在某个具体数据文件中,而是说在某表空间中。eg:人们形容某人的位置时,不会说他的经纬度,而是说他在北京。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  1. 约束

 

索引:在海量数据时是优化oracle速度的关键。其次才是其他因素。

 

 

 

 

注意,oracle的主键不能由2个以上的列作为联合主键。

 

 

除了按需求写约束,还应当注意的是,id一般都是char,比varchar查询速度快;价格一般是number(*,2)

 

性别,一般是char(2),两个字节;身份证号,char(18)

 

 

 

注意,增加的约束是需要起名字的,但一般名字不重要。

 

primary key的时候,如果删的主键列,是另外一个表某一列的外键,那么不加cascade是一定会报错的。

 

 

一般,表级定义适合简便地写小表;列级定义适合复杂的大表,并能比较好得管理约束名。

 

 

注意,索引是人类智慧的产物,能在查找时大大减少时间;但是,建了索引就意味需要专门去维护、更新索引,额外的开销。

 

 

 

上例,如果经常按姓名去查询customer表,那么就可按customer(name)建个索引;数据量大时,会加快这种查询的速度。这个索引的内部实现机制是有oracle自动完成的。

注意,符合索引时,尽量把主要索引列放在后面;因为oracle扫描sql语句是从右往左扫的。

 

如果一个表只有三四十条,那建个索引反而会增加开销。

 

 

索引,一般只了解单列索引和符合索引即可。

 

这种查所有索引、约束,用SQL Developer等工具比手工查询方便得多。

 

 

 

 

 

 

 

 

 








 



《笔记 oracle_4

 

 

 

 

pl/sql的作用:完成复杂功能查询;减少上层(JavaDAO层和业务层)代码量;减少网络传输开销;加快了系统处理速度。

还应注意:

  1. 过程、函数、触发器这几个oracle数据对象,都是由pl/sql语言写的;
  2. pl/sql是功能强大、完善的一种数据库过程语义
  3. pl/sql程序是可以在java代码中直接调用的;

 

 

传统的java项目,在做持久化时,需要先从oracle获取个connection,然后把自己写的sql语句交给数据库,这时oracle需要把传过来的语句进行再编译。这个看起来很小的时间开销,对于一个数据量大的B/S系统,提升性能很大。

由于是pl/sql把上层的需求下移到数据库端,所以,对编程能力要求比较高。例如,分页、转账、订单。

pl/sql缺点:移植性不好。除了oracle数据库,谈不上易移植性。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 



 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 


 

猜你喜欢

转载自blog.csdn.net/na_simon2900086/article/details/53167445