天天看点

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

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

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

问题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;           
SQL学习笔记(一)索引记录

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

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

SELECT ename,job
from emp
ORDER BY RAND() limit 5;           
SQL学习笔记(一)索引记录

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

我们换一种形式来展示

SELECT ename,job,RAND() as rand
from emp
ORDER BY rand limit 5;           
SQL学习笔记(一)索引记录

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

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

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

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

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

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