第三节:教你如何画龙点睛
在本文的前两节,我们尝试了一些基本数据库查询操作和能够限定查询结果的有效指令。这一节我们将增加两个可以提升查询结果可读性的技巧。
为查询结果中的列重命名
我们经常会遇到这种情况,数据库表中一些列的标题晦涩难懂,即便是同一公司IT部门以外的用户也不一定清楚这些标题的含义。幸好SQL提供了这样一个机制,让我们可以改变查询输出结果里的标题,提高了结果的可读性。
还是以上面的ABC公司为实例,之前的数据库只是把关于酬劳的一列标为“Salary”,但是没有说明工资的时间范围。如果我们想要通过执行一个查询,使数据库列出ABC公司每个雇员姓名以及各自的年薪,可以用下面的查询语法,把原来的数据库稍做修改润色:
SELECT LastName, FirstName, Salary AS 'Annual Salary'
FROM employees
注意SELECT语句的第三个参数表达式与之前的例子稍显不同。AS指令修改了输出结果中的列标题。必须用单引号把新标题括起来以便把两个单词中间的空格符包括在内。
EmployeeID LastName FirstName Annual Salary ReportsTo
---------- -------- --------- ------ ---------
1 思迷 乔 32000 2
2 欣碧 苏 45000 NULL
3 康杜 汤 29500 2
4 琼斯 白 35000 2
5 艾伦 毕 17250 4
6 雷 艾 19500 4
7 庄生 柯 21000 3
从查询结果中删除重复值
让我们来接受最后一项挑战吧。人力资源部主管想让我们递交一份包含那些有下属的雇员ID号。我们可以通过以下的查询语法获得这一数据:
SELECT ReportsTo
FROM employees
返回结果如下:
ReportsTo
---------
2
NULL
2
2
4
4
3
生活哪能那么简单啊,没看出里面的圈套吧?人力资源主管看了一眼查询结果,就发难了:为什么雇员ID号重复了好几次啊?然后就把我们打发回编辑板前重新根据他的要求去除重复值。只要按照下面的语法在select_list中插入一个关键词DISTINCT就可以达成主管的要求了:
SELECT DISTINCT ReportsTo
FROM employees
返回结果如下:
ReportsTo
---------
2
NULL
4
3
从返回结果我们可以看到,重复的ID号已经被删除了,生成就是主管想要的报表。注意,NULL值也出现在查询输出的结果里了。NULL可以被看作是一个特殊值,当我们使用了DISTINCT关键词后,它会出现在查询结果里,而且只会出现一次。
本文介绍的内容到此为止,接下来就是多进行实练操作了。