1
数据库技术及应用
1.8.1.1 5.1.1 简单查询
5.1.1 简单查询

SELECT语句具有强大的查询功能,只需熟练掌握SELECT语句的一部分,就可以轻松地利用数据库来完成自己的工作。下面是最基础的SELECT语句使用方式:

简单查询的语法结构只包括选择列表、FROM子句和WHERE子句,它们分别说明所查询的列、查询的表或视图以及搜索条件等。

【例5-1】从Student数据库的Student_info表中查询姓名为“王强”的学号和系别信息。

(1)启动MicrosofT-SQL Server Management Studio。

(2)单击工具栏上的按钮,或者执行“文件”→“新建”→“使用当前连接查询”命令,建立一个新的查询。

(3)在查询编辑窗口中输入如下T-SQL代码:

(4)单击工具栏上的按钮,执行以上T-SQL代码命令,并查看结果,如图51所示。

1.选择列表

选择列表(SELECT_list)用于指出所查询的列,可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等。

1)选择所有列

在SELECT语句中,提供了一种快速选择表中所有列的方法,将列按照在源表中的顺序进行排序。其语法为:

图5-1 查询结果

其中,表示源表中所有的信息,tablename表示要查询的数据信息的源表。

【例5-2】显示Student数据库的Student_info表中所有列的信息。

(1)启动MicrosofT-SQL Server Management Studio。

(2)单击工具栏上的按钮,或者执行“文件”→“新建”→“使用当前连接查询”命令,建立一个新的查询。

(3)在查询编辑窗口中输入如下T-SQL代码:

(4)单击工具栏上的按钮,执行以上T-SQL代码命令,查看结果,如图52所示。

图5-2 查询所有列结果

2)选择部分列并指定它们的显示次序

查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。

【例5-3】显示Student数据库的Student_info表中所有姓名及性别字段列的信息。

(1)启动MicrosofT-SQL Server Management Studio。

(2)单击工具栏上的按钮,或者执行“文件”→“新建”→“使用当前连接查询”命令,建立一个新的查询。

(3)在查询编辑窗口中输入如下T-SQL代码:

(4)单击工具栏上的按钮,执行以上T-SQL代码命令,并查看结果,如图53所示。

图5-3 查询部分列结果

3)更改列标题

使用SELECT语句查询数据时,可以使用别名的方法根据需要对数据显示的标题进行修改,或者为没有标题的列增加临时的标题。对列使用别名的操作有3种方式:

一种是采用符合ANSI规则的标准方法,即在列表达式中给出列名。

【例5-4】对Student_info表中的Sid、Sname、Sgender和Sdepart列使用别名。

(1)启动MicrosofT-SQL Server Management Studio,单击工具栏上的按钮,建立一个新的查询。

(2)在查询编辑窗口中输入如下T-SQL代码:

(3)单击工具栏上的按钮,执行以上T-SQL代码,查看结果,如图54所示。

图5-4 使用别名

另一种方法是使用SQL Server2008支持的“=”符号来连接列表达式。例如,如下的语句返回与图5-4相同的结果:

USE Student

SELECT Sid AS'学号',Sname AS'姓名',Sgender AS'性别',Sdepart AS'系列',FROM

Student_info

第3种方法是在指定列标题时,使用AS关键字连接列表达式和指定的列名。例如,上例中的SELECT语句如下:

4)经过计算的列值

在进行数据查询时,经常需要对查询到的数据进行再次计算。这时可在SELECT语句中使用计算列完成。计算列并不存在于数据表中,它是通过对某些列的数据进行计算得到的结果。

【例5-5】查询Student_info表中全体学生的姓名及年龄。

(1)启动MicrosofT-SQL Server Management Studio,执行“文件”→“新建”→“使用当前连接查询”命令,建立一个新的查询。

(2)在查询编辑窗口中输入如下T-SQL代码:

(3)单击工具栏上的按钮,执行以上T-SQL代码命令,查看结果,如图55所示。

图5-5 对数据进行两次计算

注意:SELECT语句中列的第二项不是通常的列名,而是一个计算表达式,是用当前的年份(假设为2012年)减去学生的出生年份,所得的即是学生的年龄。由于计算列没有列名,因此这里指定了一个别名“年龄”。计算列不仅可以是算术表达式,还可以是字符串常量、函数等。

5)删除重复行

SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。

【例5-6】查询Student_info表中全体学生的Saddr列信息。

(1)启动MicrosofT-SQL Server Management Studio,单击工具栏上的按钮,建立一个新的查询。

(2)在查询编辑窗口中输入如下T-SQL代码:

(3)单击工具栏上的按钮,执行以上T-SQL代码命令,查看结果,如图56所示。

此时,可以使用DISTINCT关键字重新获得Saddr列中删除了相同行后的值,语句如下:

语句执行后,结果如图5-7所示。

图5-6 使用DISTINCT关键字前

图5-7 使用DISTINCT关键字后

6)限制返回的行数

使用SELECT还可以指定查询结果返回的行数,语句如下:

TOPn用于指定查询结果返回的行数,而出现TOPn PERCENT时,说明n表示的是一个百分数,指定返回的行数等于总行数的百分之几。

【例5-7】查询Student_info表中前两条信息。

(1)启动MicrosofT-SQL Server Management Studio,执行“文件”→“新建”→“使用当前连接查询”命令,建立一个新的查询。

(2)在查询编辑窗口中输入如下T-SQL代码命令:

(3)执行以上T-SQL代码命令,查看结果,如图5-8所示。

图5-8 查询表中前两条信息

【例5-8】查询Student_info表中50%的信息。

(1)启动MicrosofT-SQL Server Management Studio,单击工具栏上的按钮,建立一个新的查询。

(2)在查询编辑窗口中输入如下T-SQL代码:

(3)单击工具栏上的按钮,执行以上T-SQL代码命令,查看结果,如图59所示。

图5-9 查询表中50%的信息

2.FROM子句

FROM子句用于指定SELECT语句查询及与查询相关的表或视图。当FROM子句同时指定了多个表或视图时,它们之间用逗号分隔。如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如,在Student_info和SC表中同时存在Sid列,在查询两个表中的Sid时,应使用下面的语句格式加以限定:

在FROM子句中可用以下两种格式为表或视图指定别名:

例如,上面语句可用表的别名格式表示为:

3.使用WHERE子句设置查询条件

WHERE子句用于设置查询条件,过滤掉不需要的数据行。例如,下面语句查询性别为男的数据:

WHERE子句还可包括各种条件运算符。