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

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 表


(6)listagg()函数的作用

列转行,能够将多条记录转化成一条记录,中间用特定的分隔符连接

话不多说。示例:

查看每个人身上的标签,标签之间以逗号隔开

对应的sql语句为:

 select name,listagg(tag,',') within group(order by tag) tags from table_a group by name

此时输出为:

group bu name,先按照name字段就行分组

listagg(tag,',') 实现行转列,将分组后的tag列表转化成一行记录,各个tag之间用逗号连接

within group(order by tag),tag行记录内的多个tag,升序排列


(7)||是什么意思?

相当于字符串连接,即相当于“+”

话不多说,示例:


(8)(+)代表什么?

这个要谈到左连接与右连接。

当此符号出现在连接条件的右边时,此时是左连接。

当此符号出现在连接条件的左边时,此时是右连接。

更加详细的解释见Oracle(+)号用法

不过需要注意的是,oracle中才有这种语法。mysql中是没有的,只能乖乖的写join了。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SunAlwaysOnline

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值