一、SQL函数
1、分类:单行函数(日期、数值、转换、字符等),多行函数,也称为分组函数(max、min、avg、sum、row_number、rank等)。
2、数值函数
- abs(n):求数字n的绝对值
- ceil(n):返回大于等于数字n的最小整数
- floor(n):返回小于等于数字n的最大整数
- round(n,[m]):执行四舍五入运算。如果省略m或为0,则四舍五入至整数位,如果m是负数,则四舍五入到小数点前m位,如果m是正数,则四舍五入至小数点后m位。
- trunc(n,[m]):截取数字。如果省略m,则将数字n的小数部分截取,如果m是负数,则将n截取至小数点前的m位,如果m是正数,则将数字n截取至小数点后的第m位。
- power(n,m):求数字n的m次方。
- sqrt(n):开方。
- mod(n,m):取余。
- sign(n):如果数字n为正数,则标记为1,为负数,则标记为-1,为0,则标记为0。
3、字符函数(输入参数是字符型,返回值是字符型和数值型)
- lower(char):将字符串转换为小写格式。
- upper(char):将字符串转换为大写格式。
- length(char):返回字符串的长度。
- ltrim(char,[,set]):去掉字符串char左端包含的set中的任何字符。set默认为空格。
- rtrim(char,[,set]):去掉字符串char右端包含的set中的任何字符。set默认为空格。
- replace(char,search_string[,replace_string]):将字符串中的字符替换为指定的字符。
- substr():截取,concat():合并,instr():获取字符串的索引位置。Oracle中索引从1开始。
4、转换函数
- to_number(char[,fmt[,nls_param]]):将符合特定字符串格式的字符串转换为数字值。
- to_char(date|[,fmt[,nls_param]]):将日期型转换为字符串,其中fmt用于指定日期格式。
- to_date(char[,fmt[,nls_param]]):将符合特定格式的字符串转换为date类型的值。
- nvl(expr1,expr2):将null转变为实际值。如果expr1是null,则返回expr2;如果expr1不是null,则返回expr1。
- nvl2(expr1,expr2,expr3):如果expr1不是null,则返回expr2,为null,则返回expr3。
二、多表查询
1、集合操作符
- union:返回查询检索到的所有不重复的行。
- intersect:返回两个查询都检索到的行(重复行)。
- union all:返回查询检索的所用行,包括重复行。
- minus:返回第一个查询检索到的行减去第二个查询检索的行所剩余的行。
2、连接查询(联合查询,内外连接,自连接,子查询)
三、事务处理
1、commit:提交事务,rollback:回滚事务,savepoint:保存点,rollback to 保存点:回滚到保存点。
2、事务的ACID属性(原子性,一致性,隔离性,持久性)
四、过程和函数
1、存储过程
1 --创建存储过程 2 create [or replace] procedure procedure_name(argument1 [model] datatype1,argument1 [model] datatype1,...)--指定参数数据类型时,不能指定其长度 3 is[as] 4 PL/SQL BLOCK; 5 --调用存储过程 6 declare 7 begin 8 存储过程名/存储过程名(argument); 9 end;
2、函数
1--创建函数语法 2 create [or replace] function function_name(argument1 [model] datatype1,argument1 [model] datatype1,...) 3 return datatype 4 is[as] 5 PL/SQL BLOCK; 6 --创建函数 7 create or replace funciton get_user 8 return varchar2 9 is 10 v_user varchar(100); 11 begin 12 select ename into v_user from scott.emp where empno='7369'; 13 return v_user; 14 end; 15 --使用变量接受函数返回值 16 declare 17 username varchar(100); 18 begin 19 username:=get_user; 20 dbms_output.put_line(username); 21 end; 22--可以使用SQL语句直接调用函数,带out和in out参数的函数不能在SQL中被调用 23 select get_user from dual;