
常用软件类: |
|杀毒安全 | |联络聊天 | |网络软件 | |多媒体类 | |系统工具 | |图形图像 | |系统工具 | |应用软件 | |行业软件 |
开发设计类: |
|动画制作 | |图像处理 | |3D设计 | |操作系统 | |站长学院 | |网络相关 | |WEB设计 | |数据库类 | |程序开发 |
第一节:SELECT指令简介
本节将通过几个数据库检索实例的组合,为大家介绍SELECT语句使用的一般语法形式。如果这是您第一次步入SQL语言的世界,建议您在进一步阅读之前,先温习一些关于SQL的基础知识。
如果您已经复习过相关的基础知识,那就我们就开始学习SELECT指令的具体用法。本文中我们遵从ANSI SQL标准来编写语句指令。为了确定您的数据库管理系统能否支持可以提高SQL代码执行效率的高级选项,您可能需要参阅相关的系统说明文档。
SELECT语句的一般形式如下:
| 以下是引用片段: SELECT select_list FROM source WHERE condition(s) GROUP BY expression HAVING condition ORDER BY expression |
指令的第一行告诉SQL处理器这是一个希望从某数据库中检索信息的SELECT语句。select_list参数指定了我们想要查询信息的类型。第二行的FROM子句定义了我们要查询的数据库表的名称,而WHERE子句则使我们能够限定返回结果集的数据记录所要满足的特殊条件(condition(s))。最后三个子句是该语句的一些高级特性,超出了本文内容范畴,可参考IT专家网上其他关于SQL语言的的资料。
实例是学习SQL语言的最佳途径。下面我们通过一个实例来看看数据库查询的过程,本文利用一个虚构的ABC公司人力资源数据库作为实例来详细的说明所有的相关查询。数据库全表如下:
|
EmployeeID |
LastName |
FirstName |
Salary |
ReportsTo |
|
1 |
思迷 |
乔 |
32000 |
2 |
|
2 |
欣碧 |
苏 |
45000 |
NULL |
|
3 |
康杜 |
汤 |
29500 |
2 |
|
4 |
琼斯 |
白 |
35000 |
2 |
|
5 |
艾伦 |
毕 |
17250 |
4 |
|
6 |
雷 |
艾 |
19500 |
4 |
|
7 |
庄生 |
柯 |
21000 |
3 |
查询全表数据
假设ABC公司的人力资源主管收到了一份包括了每个公司雇员的工资和上下级关系的月度报表。这份报表是利用SELECT语句的最简单形式生成的。它只是检索了包含在一个数据表里的所有信息,包括每一行每一列。返回此结果的查询语法如下:
| 以下是引用片段: SELECT * FROM employees |
可以看到这里使用的语法相当简洁明了。select_list 参数中出现的星号(*)是一个通配符,用以告知数据库我们想从用FROM子句定义的雇员表中获取所有的列的数据。如果想获取数据库中所有的信息,并不需要用WHERE子句来限制选择的表行。执行查询结果如下:
|
EmployeeID |
LastName |
FirstName |
Salary |
ReportsTo |
|
1 |
思迷 |
乔 |
32000 |
2 |
|
2 |
欣碧 |
苏 |
45000 |
NULL |
|
3 |
康杜 |
汤 |
29500 |
2 |
|
4 |
琼斯 |
白 |
35000 |
2 |
|
5 |
艾伦 |
毕 |
17250 |
4 |
|
6 |
雷 |
艾 |
19500 |
4 |
|
7 |
庄生 |
柯 |
21000 |
3 |
在下一节中,我们将会涉及更强大的查询功能,使你能够限定从数据库中查询到的数据。
第二节:限定查询结果
在第一节中,我们对利用SELECT语句以及执行一个简单的检索来获取一个表内所有信息的语法结构有了一个大概了解。本节将进一步介绍怎样执行限定获取信息的查询操作。
从一个表内查询特定列的信息
在上一个实例中,我们为人力资源主管生成了一份包括ABC公司所有雇员工资和上下级关系信息的报表。现在,部门内的几位中级经理由于职责所需也要求获取其中的雇员上下级关系信息。这些经理不需要关于工资的信息,所以我们会为他们提供一份包含数据库中指定信息的报表,这些限定信息包括雇员姓名、雇员ID号及雇员直属上司的ID号。
返回此结果的SELECT语句如下:
| 以下是引用片段: SELECT EmployeeID, LastName, FirstName, ReportsTo FROM employees |
这一查询与第一节中的SELECT语句查询有所不同。注意星号通配符被一个列名称组成的表达式列表代替,这些列是要包含在查询结果中的。出于保护隐私的考虑,提供给中级经理们的数据表中将省略掉工资(Salary)列。执行查询结果如下:
|
EmployeeID |
LastName |
FirstName |
ReportsTo |
|
---------- |
-------- |
--------- |
--------- |
|
1 |
思迷 |
乔 |
2 |
|
2 |
欣碧 |
苏 |
NULL |
|
3 |
康杜 |
汤 |
2 |
|
4 |
琼斯 |
白 |
2 |
|
5 |
艾伦 |
毕 |
4 |
|
6 |
雷 |
艾 |
4 |
|
7 |
庄生 |
柯 |
3 |
EmployeeIDLastNameFirstNameReportsTo