一、IS NULL使用
有时,你可能想要编写显示在特定列中包含NULL值(表示未知的值)的行,你可以使用IS NULL。
比如:
SQL>select empno, ename, comm from emp where comm is null;
二、Order by子句
利用Order by子句对查询的结果进行排序。ASC(ascending order)为升序排序,也是系统默认的排序。DESC(descendingorder)为降序排序。
语法格式:
(其中列名1为需要查询的列,列名2为按照该列进行排序)
1.升序排序
select 列名1 from 表名 order by 列名2 ASC;
2.降序排序
select 列名1 from 表名order by 列名2 DESC;
提问:如果老板想要查看工资在1500以上,且工资按照从高到低排序进行查询。
SQL>select empno, ename, sal from emp
2 where sal >=1500 order by sal desc
例1:在当前student表中查询出年龄大于21岁的学生信息,且要求查询结果按照年龄降序排序。
解:先查询当前student表中的所有信息:
再查询出所有年龄大于21的学生信息,且查询结果按照sage列降序排序:
【注意】千万不要先写order by再写where,如下图:
因为按照逻辑来说,肯定是先筛选(where)再排序(order by),所以上图先排序再筛选是错误语法!
例2:要求根据emp表查询出来的结果
按照empno, ename降序且sal升序排列。
(对多个列同时排序)
解:升序可不写asc:
SQL>select empno,ename,sal from order by empno desc,ename desc,sal;
例3:如何按照别名进行排序
解:SQL>select empno a,ename from emp order by a;
其中a是empno列的别名,那么order by a就是将查询结果按照empno列升序排列。
例4:如何用列号来进行排序?
解:SQL>select empno, ename from emp order by 2;
其中empno和ename是查询的列,那么order by 2就是按照第2个列进行升序排序(不写asc也不写desc就是默认升序排序),即按照ename列排序。