工作用到Oracle以及PL/SQL来编写过程,特以此来手记。

数据类型:
布尔
图尔
标量数据类型:CHAR
VARCHAR2
LONE
LONG RAW
NUMBER
BINARY_INTEGER
PLS_INTEGER
BOOLEAN
BOOLEAN
DATE
TIMESTAMP
ORACLE 数据类型
字符:
CHAR:当需要固定长度的字符串的时候,
1——2000字节

VARCHAR2:
	支持可变长度的字符串
	1——4000字节	
LONG:
	最多可存储2GB	
	
数值:
整数,浮点数,实数
最高进度38位
声明语法:NUMBER(p[.s ])
	P表示精度,S表示小数点的位数		


日期时间:
	DATE:存储日期和时间部分,精确到整个的秒(不方便差值的计算)
	TIMESTAMP:存储日期,时间和时区信息,秒值精确到小数点后6位(方便差值的计算)
RAW:	用于存储2进制的数据
	最多可存储2000字节
LONG RAW:用于存储可变长度的二进制数据
	LONG RAW:数据类型最多可存储2GB	
LOB:大对象数据类型,可以存储多达4GB的非结构化信息,例如声音剪辑和	视频文件
LOB: CLOB:是大量的字符数据
	BLOB:是可以储存大的二进制对象,如音乐视频	
	BFILE:用于将二进制数据存储在数据库外部的操作系统文件中。

PL/SQL支持的内置数据类型;
标量类型和上面ORACLE的一样
LOB类型:
存储非结构化数据块
属性类型;
结构化数据块
%TYPE
提供某个变量或数据库表列的数据类型
%ROWTYPE
提供表示表中一行的记录类型

数字数据类型:	
	BINARY_INTEGER;
	存储有符号整数,所需存储空间少于NUMBER类型值
	NUMBER:
		整数,实数,浮点数
	PLS_INTEGER:
		存储有符号整数,可使算术计算快速而有效。
	(	可能溢出。)
字符类型:CHAR
	VARCHAR2
	LONG
	RAW
	LONG RAW
日期时间:DATE	
	TIMESTAMP
布尔类型:
	BOOLEAN:
LOB:
	BLOB:用于存储2进制
	CLOB:用于存储字符型
	NCLOB:存储大型UNICODE字符数据
	BFILE:

注:LOB下有个专门的控制函数,DBMS_LOB
declare: 存储过程

声明PL/SQL一般变量:
identifier datatype [NOT NULL]
[:= | DEFAULT expr];
例:
DECLARE
v_hiredate DATE;
v_deptno NUMBER(2) NOT NULL :=10;
v_location VARCHAR2(13):=“Atlanta”;
变量赋值:
使用赋值语句 :=
使用SELECTINTO
declare
enp_code number(4);
enp_salary number(7.2);
beging
enp_code:=7499;
slect sal+conn into enp_salary from emp
where eapno=enp_code;
dbms_output.put_line(enp_salary);
end;
/
set serveroutput on

替代变量
使用SQL*Plus替代变量来暂时保存值
	 1.单个(&)符号
	 2.两个(&&)符号
	 3.DEFINE和ACCEPT命令
在SQL命令中传递变量值
动态更改表头和表尾
默认Verify是打开,用来显示替代变量前后的值
例:select enpno,ename,sal,deptno from enp 
	where enpno=&employee_num;

替代变量可以替代: WHERE 条件
		  ORDER BY子句
		  列表达式
		  表名
		  整个SELECT语句
(&&):省略相同替代变量的每次输入,只需要输入一次

用户变量;
	DEFINE:预定义用户变量
	ACCEPT: 
		ACCEPT variable [datatype] [FORMAT format]
			[PROMPT text] [HIDE

常用系统函数:
SQL函数:单行函数
分组函数
分析函数
单行函数:对于从表中查询的每一行只返回一个值
可以出现在SELECT子句中和WHERE子句中
大致划分为:日期函数
数字函数
字符函数
转换函数
其他函数
日期函数:ADD_MONTHS(date,n):
给定的日期往前推或者后推
MONTHS_BETWEEN(date1,date2):
判断两个日期之间相差的月份
LAST_DAY(date):
返回包含日期的月份的最后一天
ROUND (date[,“fmt”]):
将日d按照fmt指定的格式舍入,fmt为字符串
NEXT_DAY(date,“char”):找到下个星期几
返回有fmt指定的单位的日期
TRUNC(date[,“fmt”]):
返回由fmt指定的单位的日期
EXTRACT(date_field from[datetime_value])
:找出日期或间隔值的字段值
字符函数:

TRANSLATE(STRING,from_str,to_str):返回将(所有出现的)from_str 中的每个支付替换成to_str中的相应字符以后的string
(一一对应)
Replace(char,searchstring,[rep String]
(整个替换)
DECODE(command,
0,’None’,
2,’Insert’,
3,’Select’,
6,’Update’,
7,’Delete’,
8,’Drop’,
‘Other’) command
from v$session where username is not null;
例子2:
DECODE(VALUE,‘0’,‘1’,‘2’)
若value为0,则为1,否则为2
数字函数:

转换函数:
TO_CHAR
TO_DATE
TO_NUMBER

Group By 和Having
Group by: 用于将信息划分为更小的组
每一组行返回针对该组的单个结果。
Having子句:用于指定Group By 子句检索行的条件

分析函数:
根据一组行来计算聚合值
用于计算完成聚集的累计排名,移动平均数等
分析函数为每组记录返回多个行
ROW_NUMBER返回连续的排位,不论值是否相同
RANK具有相等值的行排位相同,序数随后跳跃
DENSE_RANK具有相等值的行排位相同,序号是连续的