-
select a.c1,b.c2 from ta a,tb b
不指定条件的连接查询会把两个表的记录按笛卡尔积连接起来(nxn) -
静态cursor与REF cursor
- 静态光标不能返回到客户端,ref光标能够被返回到客户端。
- ref光标不能全局定义,必须在过程中处理它,或返回到客户端应用程序。
- ref光标可以从子例程传递到父例程,而光标则不能。
-
动态游标最好不要自己定义,用oracle定义好的sys_refcursor。
-
游标for循环适用静态游标
5.ORA-01002: 提取违反顺序
原因1:在存储过程中已经fetch 了游标,而没有关闭游标,在java调用存储过程再次读取游标造成的。 -
any/all的用法
其后可以加列明和和常数,列必须是group by 中包含的。
select distinct name from student group by name,fenshu having fenshu>any 80 -
查找所有成绩>80的学生
select name from student t group by name having 80 <all ( select fenshu from student where t.name=name)
-
sum完成多类型数量统计
select sum (case when fenshu>80 then 1 else 0 end) 优秀,sum (case when fenshu<=80 then 1 else 0 end) 及格 from student t
-
事务
-
事务特性:ACID
- 原子性(atomicity):个事务中的所有操作,相当于一个原子操作,要么全部成功,要么全部失败
- 一致性(consistency):由程序员保证,最经典案例:转账
- 隔离性(isolation):指事务和事务之间的数据可见性,是最容易出问题的地方
- 持久性(durability):事务完成以后,所有的数据都将持久到数据库中,不会因为其他原因而丢失
-
事务隔离性
可能出现的问题:- 更新丢失:多个事务对一条数据同时更新,结果相互覆盖
- 脏读:读取到未提交数据
- 不可重复读:多次重复读取某条记录,结果不一致
- 幻读:多次读取,记录的数量不一致
解决问题:主要通过锁来解决,用锁来实现不同的隔离级别
- 读未提交:没解决上述任何问题,
- 读已提交:解决脏读
- 可重复读:解决不可重复读,mysql可以解决幻读
- 串行处理:所有事务串行执行,可以解决上述所有问题,但极大的降低数据库效率。
更新丢失往往由程序员处理
-
oracle 使用杂记
最新推荐文章于 2024-05-16 21:28:22 发布