【日常学习笔记】2019/1/10(Oracle语句学习)

版权声明:转载请注明 https://blog.csdn.net/qq_33591903/article/details/86217184

Oracle语句学习

(1)select * from dual中的dual到底是什么?

    

在sql-developer中测试发现,dual只是一个包含一列,永远只返回一条数据记录的虚拟表。使用dual,是为了构成select的语法规则。当我们需要查询一些不需要表名的数据时,但为了保证sql语法正确性,我们需要添加dual。

比如:

【1】查询当前用户

select user from dual;

【2】查询Oracle的系统时间

select sysdate from dual;


(2)trunc(number)函数

trunc()的作用是按照一定的规则截取传入的参数

【1】select trunc(123.456) from dual;    返回123    即直接去除小数位

【2】select trunc(123.456,2) from dual;    返回123.45    将小数点后2位的数字截去,说减去可能更容易理解

123.456-0.006=123.45

【3】select trunc(123.456,-2) from dual;    返回100    将小数点前2位的数字减去,即123.456-23.456=100


(3)nvl(a,b)函数

如果a为null值时,则返回b。如果a不为null值时,则返回a本来的值。

用java语言来概括就是

return a==null?b:a;


(4)sign(a)函数

如果a是负数,则返回-1

如果a是0,则返回0

如果a是正数,则返回1


(5)decode(key,x1,y1,x2,y2,.....xn,yn,defaultValue)函数

含义如下:类似于switch语句

switch(key){
    case x1:
        return y1;
    case x2:
        return y2;
    .......
    case xn:
        return yn;
    default:
        return defaultValue;
}

【1】查询某班男生和女生的数量

通常我们这么写:

select count(*) from 表 where 性别 = 男;

select count(*) from 表 where 性别 = 女;

之后好需要进行union

现在利用decode,可以这样写

select sum(decode(性别,男,1,0)),sum(decode(性别,女,1,0)) from 表


猜你喜欢

转载自blog.csdn.net/qq_33591903/article/details/86217184