NVL( string1, replace_with) :如果string1为NULL,则NVL函数返回replace_with的值,否则返回string1的值,如果两个参数都为NULL ,则返回NULL。
SIGN(n) :该函数用于检测数字的正负.如果数字n小于0,则函数的返回值位-1;如果数字n的值等于0,则函数的返回值等于0,如果数字n大于0,则函数的返回值等于1。
CEIL(n) :该函数用于返回大于等于数字n的最小整数。
FLOOR(n):该函数用于返回小于等于数字n的最大整数。
MOD(m,n) :该函数用于返回两个数字相除后的余数.如果数字n为0,则返回结果为m。
ROUND(n,[m]) :该函数用于执行四舍五入运算;如果省略m,则四舍五入至整数位;如果m是负数,则四舍五入到小数点前m位;如果m是整数,则四舍五入至小数点后m位。
TRUNC(n,[m]) :该函数用于截取数字。如果省略数字m,则将数字n的小数部分截去;如果数字m是正数,则将数字n截取到小数点后的第m位;如果数字m是负数,则将数字n截取到小数点前m位。
TRIM([ { { LEADING | TRAILING | BOTH },截取特定字符串。
ASCII(char):该函数用于返回字符串首字符的ASCII值。
CHR(char) :该函数用于将ASCII码值转变为字符。
CONCAT:该函数用于连接字符串,其作用于连接操作符(||)完全相同。
LENGTH(char):该函数用于返回字符串的长度,如果字符串的类型为CHAR,则其长度包括所有的后缀空格:如果char是null,则返回null。
ADD_MONTHS(d,n):该函数用于返回特定日期时间 d 之后(或之前)的n个月所对应的日期时间(n为正整数表示之后,n为负整数表示之前)。
TRUNC(d,[fmt]) :该函数用于截取日期时间数据.如果fmt指定年度,则结果为本年度的1月1日;如果fmt指定月,则结果为本月1日。
MOTNS_BETWEEN(d1,d2):该函数用于返回d1和d2之间相差的月数.如果d1小于d2,则返回负数;如果d1和d2的天数相同,或都是月底,则返回整数;否则Oracle以每月31天为准来计算结果的小数部分。
NEXT_DAY(d,char):该函数用于返回指定日期后的第一个工作日(由char指定)所对应的日期。
TO_CHAR(data[,fmt[,nls_param]]) :该函数用于将日期值转变为字符串,其中fmt用于指定日期格式,nls_param用于指定nls参数。
TO_CHAR(n[,fmt[,nls_param]]):用于将数字值转换为VARCHAR2数据类型。
TO_DATE(char[,fmt[,nls_param]]):该函数用于将符合指定日期的函数转变为DATE类型的数值。
DECODE函数为Oracle专属。
1)使用符号“||”
SELECT '工号为'||FNumber || '的员工姓名为' || FName FROM T_Employee WHERE FName IS NOT NULL
2)使用CONCAT()函数进行拼接,Oracle中的concat函数仅支持两个字符串进行拼接,如果要再多,可以嵌套使用。
SELECT CONCAT('工号:',FNumber) FROM T_Employee
Oracle中使用rownum来进行分页, 这个是效率最好的分页方法,hibernate也是使用rownum来进行oralce分页的
select * from ( select rownum r,a from tabName where rownum <= 20 ) where r > 10
字符类型:CHAR, VARCHAR2, NVARCHAR2
CHAR(12)表示包含12个字节的信息,CHAR字段最多可存储2000字节信息,如果创建表时不指定CHAR长 度,则默认为1。Oracle一个汉字占3个字节,一个字母或数字占1个字节,CHAR(12)可存储4个汉字。
VARCHAR2最多可存储4000字节的信息,VARCHAR2(n)中的n表示的是字节
NVARCHAR2也是最多4000字节信息,NVARCHAR2(n)中的n表示的是字符长度。
数字类型:NUMBER、 INTEGER
NUMBER(P, S)中P表示的是有效数字的位数,最多不超过38,S表示小数的位数。
INTEGER是NUMBER的子类型,等于NUMBER(38, 0),用来存储整数。
浮点数:BINARY_FLOAT类型、BINARY_DOUBLE类型
日期类型:DATE、TIMESTAMP
LOB类型:CLOB、BLOB、NCLOB
CLOB, 最大长度4G
BLOB, 存储二进制文件,如图像、声音、视频等,最大长度4G
NCLOB, 存储UNICODE类型数据,最大长度4G
LONG, RAW, LONG RAW类型
LONG存储变长字符串,最多2G字符数据
LONG RAW存储2G二进制数据
RAW存储二进制或字符类型数据
--转换日期型:to_date(x,y) --y的长度要和x保持一致
eg: to_date(sysdate,'yyyy-mm-dd hh24:mi:ss')
--转换字符型:to_char() --可以单独去'yyyy''mm''dd'...
--转换数字型:to_number()
delete from grade t2
where rowid != (select max(rowid)
from grade t
where t.name = '张三'
and t.subject = 'chinese')
and t2.name = '张三'
and t2.subject = 'chinese';
commit;
Truncate 和delete都可以将数据实体删掉,truncate 的操作并不记录到 rollback日志,所以操作速度较快,但同时这个数据不能恢复
Delete操作不腾出表空间的空间
Truncate 不能对视图等进行删除
Truncate是数据定义语言(DDL),而delete是数据操纵语言(DML)
tablespace --表空间对应用户数据的存储,在创建用户时一般会指定表空间,如果没,默认为users.存储用户的所有对象。
表空间包括:数据段segemnet --数据区extents --数据块data block,一个数据文件只能存储在一个表空间中。
function为函数,procedure为存储过程。
1)函数是存储过程的一种。
2)函数可以没有参数,但是一定需要一个返回值,存储过程可以没有参数,不需要返回值
3)函数return返回值没有返回参数模式,存储过程通过out参数返回值, 如果需要返回多个参数则建议使用存储过程
4)在sql数据操纵语句中只能调用函数而不能调用存储过程。
declare
--声明变量
变量 数据类型 := 初始值;
变量 数据类型 := &提示字段;--自定义输入数据
变量 表名.列名%type := 初始值;--使用某表的列定义数据类型
变量 表名%type := 初始值;--将整个表的数据拿到自身,需要使用其中的数据类型时,表名.列名调用即可。
begin
select...--sql取数语句
into...--对应变量
dbms_output.put_line();--数据输出格式
end;
declare
--声明部分
begin
--逻辑/操作部分
select...
if 条件1 and/or 条件2 then
操作1;
elsif 条件3 and/OR 条件4 then
操作2;
...
else
其他操作;
end if;
end;
declare
--声明部分
begin
--逻辑/操作部分
case
when 条件1 and/or 条件2 then
操作1;
when 条件3 and/OR 条件4 then
操作2;
...
else
其他操作;
end case;
end;
declare
--声明部分
begin
--逻辑部分
loop
--循环体
if 退出循环的条件 then
exit;
end if;
--退出循环的简写
exit when 退出循环的条件;
end loop;
end;
declare
--声明部分
begin
while 进入循环的条件 loop
--循环体
endloop;
end;
declare
--声明部分
begin
--逻辑部分
for 循环变量 in 循环下限 .. 循环上限 loop
--循环体
endloop;
end;
--声明显示游标的语法结构
declare
--声明部分
cursor 游标名 is
select查询结果集;
begin
--使用显示游标(其实就是 使用这个游标中的数据):结合循环,依次获取到游标指向的结果集的每一行
for 循环变量 in 游标名 loop
--循环体
--在循环体内可以依次使用结果集的每一行数据,使用的方式就是:循环变量.游标指向的结果集的列名
end loop;
end;
--开发规范:游标名以 c_ 开头
create [or replace] procedure 存储过程名[(参数1 [参数类型] 数据类型[,参数2 [参数类型] 数据类型,...])]
is/* / as*/
--声明/定义部分
begin
--操作/逻辑部分
end;
--开发规范:存储过程名以 sp_ 开头
CREATE OR REPLACE FUNCTION FUN_函数名(参数1 [IN|OUT|IN OUT] 数据类型,参数2 [IN|OUT|IN OUT] 数据类型……)
RETURN 返回结果的数据类型
IS /*|AS*/
BEGIN
自定义函数的的计算逻辑。
RETURN 计算结果 ; -- 函数的执行体中一定要包含 返回值
END ;