在本节的最后,我们要再介绍3个关于ORDER BY的使用事项。
第一个使用事项是,排序键不一定非得是检索的对象。举例来讲,如果我们想让结果按照年龄排序,那么相应的表述就是ORDER BY age,也就是将age列指定为排序键(排序的依据)。事实上,age列并非一定要被检索出来:
换句话来讲,虽然例句(11)的检索对象只有姓名信息,而没有年龄信息,但是姓名信息依然会按照年龄从小到大的顺序返回并显示。
虽然这只是一个很简单的操作介绍,但希望能引起大家的关注。因为对于很多初学者来讲,我们往往会有一种默认判断:SQL语句的操作对象只能是那些被检索出来且被我们看见的信息。然而实际情况并不是这样的。请同学们记住,我们的操作对象自始至终都是表含有的数据。也就是说,一张表中的所有数据都处于可操作范围,即使它们有些没有被检索出来。
当然了,由于大家目前接触到的检索语句还不多,所以对这句话可能没有太深的理解。没有关系,我们将在后续的学习中借助实际案例为大家详细解释。
第二个使用事项是ORDER BY对于空值的处理。
请想象一下,如果现在有一位名叫Hellen的姑娘刚刚加入姻缘介绍所,不过她认为自己的年龄信息属于个人隐私,不愿公开,那么这就会导致在age列中存在空值——NULL。
至于空值究竟该如何理解,我们将在后续章节中为大家详细介绍。在此处,同学们就将其理解为“年龄信息未填写”即可。
话说回来,如果在age列存在空值的情况下,我们还需要按照年龄排序(ORDER BY age),那么这位名叫Hellen的女孩将出现在结果的开头或者结尾。
也就是说,如果排序键中存在空值,那么空值的对应行一般将出现在结果的开头或者结尾,这与我们指定升序还是降序有关。
第三个使用事项是ORDER BY的排序依据并不一定是表中的固有信息。举例来讲,如果一张表中只含有商品、单价和购买量这3项信息:
而我们后续又通过算术运算得到了一个付款金额,那么ORDER BY同样可以根据付款金额对结果排序:
我们将在后续章节为大家正式介绍算术运算符的使用,这里提到只是帮助大家事先了解ORDER BY的更多功能和用法。
以上就是本节的全部内容。我们不妨总结一下目前已掌握的各个关键词的书写顺位和执行顺位。
· 书写顺位:SELECT→FROM→ORDER BY。
· 执行顺位:FROM→SELECT→ORDER BY。
事实上,不是所有ORDER BY的执行顺位都在SELECT之后,ORDER BY有一个特殊用法,即出现在SELECT语句中,等大家学到窗口函数时自然就会明白。