SQL学习笔记(一)索引记录

首先还是老规矩,把用到的表贴出来,表名emp

问题1. 

在where子句中不能直接使用别名,这是因为where的执行顺序在select之前,也就是说,在通过where子句对数据进行筛选的时候,别名并不存在。

问题2. 在select语句中使用条件逻辑

在示例表中   SAL  字段表示工资,如果员工的工资少于2000,则返回NO,如果超过4000,则返回YES,否则返回OK,这样的需求类似于高级语言中的IF-ELSE语句,那么这个功能如何通过SQL来实现呢?

通过case表达式(关于case表达式的介绍,在前面的文章中有提到)

SELECT ename,sal,
case when sal < 2000 then 'NO'
     when sal > 4000 then 'YES'
     else 'OK'
end as STATUS
from emp;

 

问题3.随机返回若干行记录

从表中获取特定数量的随机记录

SELECT ename,job
from emp
ORDER BY RAND() limit 5;

在这里使用了ORDER BY子句,可能有些人会有疑问,在emp表中并没有出现供ORDER BY用来排序的字段,那么排序是如何进行的呢?原因饮食ORDER BY子句可以接受一个函数的返回值,并利用该返回值改变结果集的顺序。

我们换一种形式来展示

SELECT ename,job,RAND() as rand
from emp
ORDER BY rand limit 5;

这里我们将随机值进行输出,可以看到每一行数据按照随机值升序排序之后,取前五行。

问题4.把NULL值转换为实际值

实际生产中,我们不希望从数据库中拿出来的数据是NULL值,所以需要把NULL值做一些转换,当值为NULL值转换为特定的值,避免因为NULL而差生意料之外的问题。

1.通过coalesce函数,该函数能返回参数列表中第一个非空的值

SELECT ename,job,comm,COALESCE(comm,0)
from emp;

2.通过case表达式对comm进行判断,如果是null,则转换成别的值。

 

以上代码在MYSQL数据库测试有效。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

巴塞罗那的风

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

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

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

打赏作者

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

抵扣说明:

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

余额充值