Oracle摘记

VARCHAR与VARCHAR2

1.varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符占两字节,数字,英文字符等都是一个字节;
2.VARCHAR2把空串等同于null处理,而varchar仍按照空串处理;
3.VARCHAR2字符要用几个字节存储,要看数据库使用的字符集,

 

存储过程和函数

存储过程:

Create [ or replace ] Procedure 名(参数列表)

As|is

声明部分

Begin

。。。。

[exception] End [];

 

 

函数:

Create [ or replace ] function 名(参数列表)

Return 类型

As|is

声明部分

Begin

。。。。

[exception] End [];

 

 

参数列表中参数的声明:

参数名       参数模式         参数类型

 Id        in | out | in out    number

 

默认时,为in,参数可为变量或者常量。

另外两种,必须为变量。

 

存储过程和函数的区别主要在返回值上。存储过程并非是没有返回,可以通过参数返回返回值的,自身不具有返回,即没有显示的返回。而函数除了参数列表的参数有返回能力以外,还有一个显式的返回值,即自身返回值。

 

exists 与 in

 

exits 相当于存在量词:表示集合存在,也就是集合不为空只作用一个集合. 
例如 exist P表示P不空时为真; not exist P表示p为空时为真in表示一个标量和一元关系的关系。 
例如:s in P表示当s与P中的某个值相等时 为真; s not in P 表示s与P中的每一个值都不相等时 为真 。

in和exists 
in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。 
一直以来认为exists比in效率高的说法是不准确的。 
如果查询的两个表大小相当,那么用in和exists差别不大。
如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in

 

当在限制语句NULL或NOT NULL 关键字时,不能写成 = NULL 或 <> NULL , 要写成 IS NULL。 因为NULL不是一个值。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值