日期:2014-05-16  浏览次数:20495 次

Oralce常识

系统默认表 dual;

拿到sequence操作: select S_ETP_USER.CURRVAL userId from dual ;

一.Oracle数据类型
1.字符数据类型
  .>   char:可以存储字母数字值,长度在1到2000个字节。
  .>   varchar2:存储可变长度的char类型字符串,大小在1到4000个字节范围内。
   .>   long:存储可变长度的字符数据,最多存储2GB。
 long类型的使用限制:        
 **************************************
 *{
 *..  一个表中只有一列可以为long数据类型。
 *..  long列不能定义为唯一约束或主键约束。
 *..  long列上不能建立索引。
 *..  过程或存储过程不能接受long数据类型的参数。
 *}
 ***************************************
2.数字数据类型
.>   number:存储正数,负数,零,定点书和精度为38位的浮点数。
     number类型的格式: 
  number[(p[,s])]
         其中p为精度,表示数字的总位数; s为范围,表示小数点右边的位数,它在-84至127之间。
3.日期时间数据类型
.>   date:存储表的日期和时间数据,使用7个字节固定长度,
    每个字节分别存储世纪,年,月,日,小时,分和秒;值从公元前4712年1月1日到公元9999年12月31日。
    {
       Oracle中的sysdate函数功能是返回当前的日期和时间。
    }
.>   timestamp:存储日期的年,月,日以及时间的小时,分和秒值。其中秒值精确到小数点后6位,同时包含时区信息。
    {
       Oracle中的systimestamp函数功能是返回当前日期,时间和时区。
    }
4.raw和long raw数据类型(二进制数据)
.>  raw: 存储基于字节的数据。最多存储2000个字节,使用需指定大小。raw数据类型可以建立索引。
.>  long raw: 存储可变长度的二进制数据。最多能存储2GB;不能索引。与long类型的限制同效。
5.lob数据类型('大对象')
    ***********************************
    * lob类型可以存储多达4GB的非结构化信息。
    * Oracle中的表可以有多个lob列,每个lob列可以是不同的lob类型。
    ***********************************
.>  clob: 存储大量的单字节字符数据和多字节字符数据。例:非结构化的XML文档。
.>  blob: 存储较大的二进制对象。例:图形,视频,音频等。
.>  bfile: 文件定位器;指向位于服务器文件系统是的二进制文件(存储一个文件路径)。
     -----------------------------------------------
6.Oracle中伪列
.> rowid: 返回行地址,可用来定位表中的一行。可以唯一地标识数据库中的一行。
 重要的用途
 ****************************
 *..  能一最快的方式访问表中的一行
 *..  能显示表的行是如何存储的
 *..  可以作为表中行的唯一标识
 ****************************
.> rownum: 对于一个查询返回的每一行进行标识;可用于限制查询返回的行数。(不是数据表的实际列)

二.Oracle中的sql操作符
.>算数操作符:
 包括: +(加),-(减),*(乘),/(除)
  *和/具有相同的优先级,+和-j具有相同的优先级,*和/的优先级高于+和-。可用小括号来控制计算顺序。
.>比较操作符:
 包括:=(相等),!=(不相等),<(小于),>(大于),<=(小于等于),>=(大于等于)
       between....and...(检查是否在两个值之间)
       in(与列表中的值相匹配)
       link(匹配字符模式<模糊匹配>)
       is null(检查是否为空)
.>逻辑操作符:
 包括:
      and(与),or(或),not(非)
.>集合操作符:
 包括:
      union(联合):返回两个查询选定的所有不重复的行。
      union all(联合所有):合并两个查询选定的所有行,包括重复的行。
      intersect(交集):返回两个查询共有的行。
             minux(减集):返回有第一个查询选定但是没有被第二个查询选定的行。
.>连接操作符:
      || : 将两个或多个字符串合并成一个字符串,或者将一个字符串与一个数值合并在一起。


操作符的优先级
************************************************
*算数操作符  高
*连接操作符  |
*比较操作符  |
*not逻辑操作符  |         
*and逻辑操作符  |
*or逻辑操作符           低                               
************************************************

三.SQL函数
.>日期函数
 add_months(d,n)<d是日期,n是月数>:返回指定日期加上指定月数后的日期值。
 months_between(d1,d2)<d1,d2都是两个日期>:返回两个日期之间的月数。
 last_day(d)<d是日期>:返回指定日期当月的最后一天的日期值。
 round(d,[fmt])<d是日期,fmt指定格式模型>:返回日期值,此日期四舍五入为格式模型指定的单位。
   (fmt是一个选项,默认舍入为最靠近的那一天。
   如果格式为‘year’则舍入到年的开始,即1月1日;
   如果格式为‘month’则舍入到月的第一天;
   如果格式为‘day’则舍入到最靠近的星期天。
   )    
 next_day(d,day)<d是日期,day指定周内任何一天 如‘星期一’>:返回指定的下一个星期几的日期。
 trunc(d,[fmt])<d是日期,fmt指定格式模型>:返回日期值,指定日期截断为格式模型指定的单位的日期。
   (与round函数类似,不同的是它只舍不入。)
 extract(fmt from d)<fmt指定格式模型,d是日期>:提取日期时间类型中的特定部分。  
   (fmt取值可以是:year,month,day,hour,minute,second;注意此处的格式不能使用单引号。)
.>字符函数   
 函数     说明  输入         输出结果
 initcp(char)       首字母大写 select initcap('hell0') from dual     Hello
 lower(char)    转换为小写 select lower('FUN') from dual      fun
 upper(char)    转换为大写 select upper('sun') from dual      SUN
 ltrim(char,set)    左剪裁  select ltrim('xyzadams','xyz') from dual    adams
 rtrim(char,set)    右剪裁  select rtrim('xyzadams','ams')from dual            xyzad 
 translate(char,from,to)   按字符翻译 select translate('jack','abcd','1234') from dual   j12k
 peplace(char,search_str,replace_str) 字符串替换 select replace('jack and jue','j','bl') from dual  jack and blue
 instr(char,substr[,pos])  查找子串位置    select instr('worldwide','d') from dual     5 
 substr(char,pos,len)   取子字符串      select substr('abcdefg',3,2) from dual     cd
 concat(char1,char2)   连接字符串      select concat('Hello','world') from dual     Helloworld 
 =================================
 ..  chr(int)&l