oracle基础知识点总结
                                      目录                                                  
Oracle总结	2
一、数据类型	2
1.1、基本数据类型:	2
1.2、集合数据类型:	2
1.3、关系数据类型:	3
1.4、数据类型之间的转换	3
二、Oracle自带的函数	3
2.1、常用的函数	3
2.2、日期	4
三、建表和约束	5
3.1、建表	5
3.2、约束:	6
四、sql语句	6
五、存储过程:	7
六、事物的使用:	9
6.1、Oracle数据库中的事物	9
6.2、Asp.net(c#)中使用Oracle事物	9
七、存在的问题	10
Oracle总结
一、数据类型
Oracle 9i有3种数据类型:基本数据类型、集合类型和关系类型。
1.1、基本数据类型:
Char,nchar,Varchar2,Nvarchar2,number,Date, float,Long Raw,Long Raw,Rowid,Blog,Clob,Nclob,Bfile,Urowid,Boolean字符类型:Char,Nchar, Varchar2,Nvarchar2,Long字段是固定长度的情况或字段经常改变的情况下使用Char,Nchar如果储存的字段是变长的话使用Varchar2和Nvarchar2.  存储大量的变长字符类型使用Long,最大可达2GB带N的存储的Unicode字符,即汉字占一个字符,不带N汉字占两个字符日期类型:只有Date,使用的时候需要按照数据库的日期存储格式进行数值类型:
	Number,Float
	Number存储整数或浮点型数据,比如Number(4,2)代表4位,小数点为2位
	Float可以使用Number代替
	非结构化的变长字符的数据类型
	Raw(L)2KB和Long Raw(L)2GB存储二进制数据,不会在字符集间转换。 
	L为长度,以字节为单位,作为数据库列最大2000,作为变量最大32767字节。
1.2、集合数据类型:
	包括序列、数组类型和表类型3种。
	序列可以实现sql server中自增长列
	例子:
	Create sequence序列名increment by 1 start with 1 
	解释:从1开始,每次增长1
	使用的时候 序列名.nextval
1.3、关系数据类型:
也称作引用数据类型(REF),它以引用的方式定义了和其他对象的关系,存储的是指向不同对象数据表的数据的指针。
1.4、数据类型之间的转换
	1、Raw和Varchar2之间的转换????
1)utl_raw.cast_to_raw该函数按照缺省字符集(一般为GB2312),将VARCHAR2字符串转换为RAW。如: utl_raw.cast_to_raw(‘您好!’)
utl_raw.cast_to_varchar2该函数按照缺省字符集合(一般为GB2312),将RAW转换为VARCHAR2。如: utl_raw.cast_to_varchar2(字段名或十六进制或ASCII码)
	2、to_number将给出的字符转换为数字
	3、日期的插入和读取:to_char和to_date的使用:
	当往数据库中数据类型为date的字段插入值的时候需要使用to_date()进行类型转换
	当从数据库中取出数据的时候需要使用to_char()来取出需要的部分
二、Oracle自带的函数
2.1、常用的函数
	1.ASCII返回与指定的字符对应的十进制数; 如ascii(’A’) 
	2.CHR给出整数,返回对应的字符; chr(54740) 
	3.CONCAT连接两个字符串; 
	4.INITCAP返回字符串并将字符串的第一个字母变为大写;
	5.INSTR(C1,C2) 在一个字符串中搜索指定的字符,返回发现指定的字符的位置; 
	6.LENGTH返回字符串的长度; 需要注意汉字
	7.LOWER返回字符串,并将所有的字符小写
	8.UPPER返回字符串,并将所有的字符大写 
	9.RPAD和LPAD  语法:lpad(‘gray’,10,‘*’)结果:******gray
	10. LTRIM删除左边出现的字符串,RTRIM删除右边出现的字符串 
	11.SUBSTR(string,start,count) ,取子字符串,从start开始,取count个 
	如果start位负数则从倒数开始取
	12.REPLACE(’string’,’s1’,’s2’) ,在string中使用s2代替s1
	13.SOUNDEX返回一个与给定的字符串读音相同的字符串 
	14.TRIM(’s’ from ’string’) 在string中将s去掉,默认位空字符
	15.ABS返回指定值的绝对值 
	16.CEIL返回大于或等于给出数字的最小整数 如3.1返回4,5就返回5
	17.FLOOR对给定的数字取整数 
	18.MOD(n1,n2) 返回一个n1除以n2的余数 
	19.ROUND和TRUNC按照指定的精度进行舍入 
	Round进行四舍五入,Trunc不进行四舍五入
	20.TO_CHAR(date,’format’) 
21.TO_DATE(string,’format’) 将字符串转化为ORACLE中的一个日期 关于to_char和to_date的使用:当往数据库中数据类型为date的字段插入值的时候需要使用to_date()进行类型转换当从数据库中取出数据的时候需要使用to_char()来取出需要的部分 22. to_number将给出的字符转换为数字 23.STDDEV(distinct|all)
求标准差,ALL表示对所有的值求标准差,DISTINCT表示只对不同的值求标准差 24. 处理字段名可能出现null情况的函数
NVL(expr1, expr2) 如果expr1为null则转换为expr2
NVL2 (expr1, expr2, expr3) ->expr1不为NULL,返回expr2;为NULL,返回expr3。expr2和expr3类型不同的话,expr3会转换为expr2的类型 
NULLIF(expr1, expr2) ->相等返回NULL,不等返回expr1??
25.COALESCE (expression_1, expression_2, ...,expression_n)返回的结果为第一个结果不为null的表达式值,如果都为null则返回null,可以替换简单的case语句
26.CONVERT(c,dset,sset) 将源字符串sset从一个语言字符集转换到另一个目的dset字符集?
2.2、日期
	1、时间的取法
	取年:Select to_char(sysdate,’YYY’) from dual;
Y,YY,YYY,YYYY,YEAR取年的几位,依次为:8,08,008,2008, Two Thousand Eight取月:Select to_char(sysdate,’MM’) from dual;
	MM,RM,Month依次为:10,X,10月
	取季度:Q  select to_char(sysdate ,’Q’) from dual