【2013】韩顺平Oracle记录
来源:互联网 发布:淘宝店铺怎么关联快递 编辑:程序博客网 时间:2023/11/29 02:58
有道云笔记 连接:
http://note.youdao.com/noteshare?id=3517a1795a730d3e6bc0dd3072622e16
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
以下可忽略:


《笔记 oracle_2》
#韩顺平讲得太墨迹,先跳过oracle表查询
注意,JDBC_ODBC桥需要到“控制面板 - 管理 - ODBC数据源”里配置。
韩老师讲得分页查询好伤啊
《笔记 oracle_3》
- 分页查询
对于oracle分页查询,最基础(不排序,不优化)的语句是:
SELECT * FROM (SELECT a.*, ROWNUM rn FROM (SELECT * FROM emp) a ) WHERE ROWNUM = 21 ;
使用了三层嵌套子查询和关键字ROWNUM。
2. oracle事务管理
oracle事物跟java里的synchonized块差不多。
注意,保存点回滚的前提是没有commit;否则没有办法。
注意,不手动commit,而exit对话框,会默认commit。所以,设置保存点后既不能commit也不能exit对话框。
rollback不加参数,表示回退所有操作。
Hibernate会强制dml使用事物(transact)。
eg:public void insertDAO {
Connection cnn = null;
try{
Class.forName(“oracle.jdbc.driver.OracleDriver”);
cnn = DriverManager.getConnection(
“jdbc:oracle:thin:@127.0.0.1:1521:xe”,
“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系统会把每个LogRec的sysdate存到数据库中;当读这些数据时,oracle默认是没有时分秒的;就需要手工转换。
再例如,某机票系统,需要查过去一小时有多少数据添加进去了。
NUMBER(7,2):共7位数,但是小数点后有2位(整数5位)。
在创建用户时,oracle会自动创建跟该用户同名的方案;oracle是靠方案管理数据对象的。
- oracle数据库管理
4和5是高级dba的工作;备份和恢复是普通dba的主要工作。
调优:化腐朽为神奇;技术含量比较高。
注意,dba是越老越吃香的。
sys登陆必须加上as sysdba或as sysoper;
system登陆可以不加as,但是这时某人是sysdba的;即把as sysdba省略了。
可以注意到,system正常登陆就拥有了sysdba权限,能完成所有操作。
总结:从在oracle的地位看,sys用户的方案里存了oracle的核心数据对象;system用户则没有,也不能操作sys里的这些数据;
从权限上看,system和sys都有sysdba的角色,即都有最高的权限。
导出方案:把某用户所有的东西都导出去了;
导出数据库:把所有用户的东西都导出去。
注意,导出的dmp文件并不是文本文件,而是数据文件。
注意,直接导出方式,在数据量大时,很实用。
导入数据库、恢复(表、方案、数据库),略。
数据字典:系统的静态信息;
动态性能试图:系统的动态信息;
注意,数据字典能完成许多实用的查询!
以上功能也很实用。
还可以查oracle所有系统权限(140多)、对象权限(也很多)。
表空间:把一些数据文件统一起来起个名字,就是表空间。当我们在说某表在哪?的时候,不会说它在某个具体数据文件中,而是说在某表空间中。eg:人们形容某人的位置时,不会说他的经纬度,而是说他在北京。
- 约束
索引:在海量数据时是优化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的作用:完成复杂功能查询;减少上层(Java的DAO层和业务层)代码量;减少网络传输开销;加快了系统处理速度。
还应注意:
- 过程、函数、触发器这几个oracle数据对象,都是由pl/sql语言写的;
- pl/sql是功能强大、完善的一种数据库过程语义
- pl/sql程序是可以在java代码中直接调用的;
传统的java项目,在做持久化时,需要先从oracle获取个connection,然后把自己写的sql语句交给数据库,这时oracle需要把传过来的语句进行再编译。这个看起来很小的时间开销,对于一个数据量大的B/S系统,提升性能很大。
由于是pl/sql是把上层的需求下移到数据库端,所以,对编程能力要求比较高。例如,分页、转账、订单。
pl/sql缺点:移植性不好。除了oracle数据库,谈不上易移植性。
- 【2013】韩顺平Oracle记录
- 韩顺平Oracle笔记
- JDBC(韩顺平Oracle)
- 韩顺平java视频学习记录
- 韩顺平oracle视频笔记一
- 韩顺平oracle视频笔记二
- 韩顺平oracle视频笔记三
- 韩顺平oracle视频笔记四
- 韩顺平oracle视频笔记五
- 韩顺平oracle视频笔记六
- 韩顺平oracle视频笔记七
- 韩顺平玩转oracle的笔记
- 看《韩顺平玩转oracle》学oracle,笔记
- Oracle学习笔记1(韩顺平玩转oracle)
- oracle学习笔记2(韩顺平玩转oracle)
- 【自学oracle】韩顺平oracle视频教程学习笔记
- 韩顺平老师Oracle教程笔记——网摘
- 韩顺平 oracle 视频 emp dept salgrade 表 sql 数据
- 一道编程题
- 总结_ dom4j(Y2B_converter)
- Kafka
- VMWare workstation12安装CentOS7,并建立共享目录
- Oracle知识架构
- 【2013】韩顺平Oracle记录
- 笔记_DDL+DCL+oracle边用边记
- 笔记_DML+查询
- 笔记_查询优化,及一些细节
- Android 绘图(一)
- 笔记_Bugzilla安装
- maven-jetty运行调试细节
- 笔记_eclipse优化
- 总结_J2EE系统的调优