SELECT DISTINCT BRANCH_OFFICE
FROM EMPLOYEES
ORDER BY BRANCH_OFFICE ASC;
这一查询的成果如表4所示。请重视在ORDER BY之后是如何放置列名BRANCH _OFFICE的,这就是我们想要对其进行排序的列。为什么即使是成果表中只有一个列时我们也必须指出列名呢?这是因为我们还可以或许遵守表中其他列进行排序,即使它们并不显示出来。列名BRANCH_ OFFICE之后的关键字ASC默示遵守升序分列。若是你欲望以降序分列,那么可以用关键字DESC。
同样我们应当指出ORDER BY子句只将姑且表中的成果进行排序;并不影响本来的表。
假设我们欲望获得按项目组排序并从工资最高的雇员到工资最低的雇员分列的列表。除了工资括号中的内容,我们还欲望看到遵守聘请时候从比来聘请的雇员开端列出的列表。以下是你将要用到的语句:
SELECT BRANCH_OFFICE,FIRST_NAME,
LAST_NAME,SALARY,HIRE_DATE
FROM EMPLOYEES
ORDER BY SALARY DESC,
HIRE_DATE DESC;
这里我们进行了多列的选择和排序。排序的优先级由语句中的列名次序所决意。SQL将先对列出的第一个列进行排序。若是在第一个列中呈现了反复的行时,这些行将被遵守第二列进行排序,若是在第二列中又呈现了反复的行时,这些行又将被遵守第三列进行排序……如此类推。此次查询的成果如表5所示。
将一个很长的表中的所有列名写出来是一件相当麻烦的事,所以SQL容许在选择表中所有的列时应用*号:
SELECT * FROM EMPLOYEES;
此次查询返回全部EMPLOYEES表,如表1所示。
下面我们对开端时给出的SELECT语句的语法进行一下更新(竖直线默示一个可选项,容许在此中选择一项。):
SELECT [DISTINCT]
(column [{, columns}])| *
FROM table [ {, table}]
[ORDER BY column [ASC] | DESC
[ {, column [ASC] | DESC }]];
定义选择标准
在我们今朝所介绍的SELECT语句中,我们对成果表中的列作出了选择但返回的是表中所有的行。让我们看一下如何对SELECT语句进行限制使得它只返回欲望获得的行:
SELECT columns FROM tables [WHERE predicates];
WHERE子句对前提进行了设置,只有满足前提的行才被包含到成果表中。这些前提由断言(predicate)进行指定(断言指出了关于某件工作的一种可能的事实)。若是该断言对于某个给定的行成立,该行将被包含到成果表中,不然该行被忽视。在SQL语句中断言凡是经由过程斗劲来默示。例如,假如你须要查询所有姓为Jones的人员,则可以应用以下SELECT语句:
SELECT * FROM EMPLOYEES
WHERE LAST_NAME = \""Jones\"";
LAST_NAME = \""Jones\""项目组就是断言。在履行该语句时,SQL将每一行的LAST_NAME列与“Jones”进行斗劲。若是某一人员的姓为“Jones”,即断言成立,该人员的信息将被包含到成果表中(见表6)。
应用最多的六种斗劲
我们上例中的断言包含一种基于“等值”的斗劲(LAST_NAME = \""Jones\""),然则SQL断言还可以包含其他几种类型的斗劲。此中最常用的为:
便是 =
不便是 <>
小于 <
大于 >
小于或便是 <=
大于或便是 >=
下面给出了不是基于等值斗劲的一个例子:
SELECT * FROM EMPLOYEES
WHERE SALARY > 50000;
这一查询将返回年薪高于¥50,000.00的人员(拜见表7)。
逻辑连接符
有时我们须要定义一条不止一种断言的SELECT语句。举例来说,若是你仅仅想查看Davy Jones的