Oracle 笔记

本文介绍了Oracle数据库中的rownum和rowid的区别,以及如何使用left join和right join进行表连接。同时对比了truncate与delete的不同之处,并阐述了PL/SQL中function与procedure的主要差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. rownum and rowid

 

rownum是在得到结果集的时候产生的,用于标记结果集中结果顺序的一个字段,这个字段被称为“伪数列”,也就是事实上不存在的一个数列。它的特点是按顺序标记,而且是逐次递加的,换句话说就是只有有rownum=1的记录,才可能有rownum=2的记录。

 

和rownum相似,oracle还提供了另外一个伪数列:rowid。不过rowid和rownum不同,一般说来每一行数据对应的rowid是固定而且唯一的,在这一行数据存入数据库的时候就确定了。可以利用rowid来查询记录,而且通过rowid查询记录是查询速度最快的查询方法。(这个我没有试过,另外要记住一个长度在18位,而且没有太明显规律的字符串是一个很困难的事情,所以我个人认为利用rowid查询记录的实用性不是很大)rowid只有在表发生移动(比如表空间变化,数据导入/导出以后),才会发生变化。

 

顺便提一下,Oracle中的伪数列有:rownum,rowid,nextval,currval

 

2. left join / right join

tableA left join tableB  on   --相当与 from tableA,tableB where tableA.id=tableB.id(+)

最终记录数与tableA记录数相同

 

tableA right join tableB  on

最终记录数与tableB记录数相同

 

3. truncate 与 delete 区别

truncate:自动commit, 不能rollback,速度快,是DDL

delete:程序员控制commit,commit前可以rollback,速度慢,是DML,

 

4. PL/SQL function与Procedure区别  

Function and Procedure both are PL/SQL blocks, main difference between function and procedure is -
Function has to return some value using return clause whereas procedure may or may not return any value( no out parameter).
We can use functions in SQL query but can't use procedure.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值