首页 理论教育 SQLServer2005单表查询-查询语句及结果窗口

SQLServer2005单表查询-查询语句及结果窗口

时间:2023-11-04 理论教育 版权反馈
【摘要】:图2-10 例2-5的查询语句及查询结果窗口6.用WHERE子句过滤记录SELECT语句中可以通过WHERE子句来限制查询的记录范围,使用时WHERE子句必须紧跟在FROM子句后面。图2-17 例2-12的查询语句及查询结果窗口例2-13 显示全部上海市学生的姓名、家庭地址。

SQLServer2005单表查询-查询语句及结果窗口

1.查询分析器的使用

为了说明SELECT语句的各种用法,下面以学生管理数据库为操作对象进行说明。在学生管理数据库中共包含了3张表:学生基本情况表、基本课程表、成绩表,分别见表1-7~表1-9。

这3张表中各个字段的数据类型、长度及其主键如图2-1~图2-3所示。

978-7-111-36808-3-Chapter02-1.jpg

图2-1 基本课程表的结构

978-7-111-36808-3-Chapter02-2.jpg

图2-2 学生基本情况表的结构

978-7-111-36808-3-Chapter02-3.jpg

图2-3 成绩表的结构

为了让初学者能直观地学习SELECT语句,并看到执行的结果,本任务所有的操作实例都是在“查询分析器”中直接操作。

下面看一条简单的查询语句的使用。

例2-1 显示所有学生的姓名和家庭地址

具体的操作步骤如下:

1)启动SQL Server服务器。

2)依次选择“开始”→“所有程序”→Microsoft SQL Server→“查询分析器”,打开“查询分析器”。

3)这时出现“连接到SQL Server”对话框,如图2-4所示。一般情况下,采用默认连接项即可,单击“确定”按钮

4)进入“查询分析器”界面后,在工具栏中单击数据库下拉列表框978-7-111-36808-3-Chapter02-4.jpg,选择“学生管理数据库”。

5)在SQL语句输入框中输入SQL语句,如图2-5所示。

6)然后单击工具栏中的978-7-111-36808-3-Chapter02-5.jpg图形按钮,执行该查询语句,其操作结果如图2-6所示。

978-7-111-36808-3-Chapter02-6.jpg

图2-4 连接到服务器

978-7-111-36808-3-Chapter02-7.jpg

图2-5 SQL语句输入窗口

978-7-111-36808-3-Chapter02-8.jpg

图2-6 查询结果窗口

为了熟练掌握SELECT语句的使用,本节先从单表查询入手,即查询的信息全部在一张表中。

2.查询指定的字段

一张表中的字段很多,一般情况下,用户只需要取表中的部分列,这就是关系运算中的投影运算,通过SELECT语句可以过滤掉不需要的列的数据。

例2-2 显示全部学生的姓名、性别、专业。

SELECT语句后面的各个字段的顺序可以与原表相同,也可以与原表不同,但是在结果中字段的顺序是与SELECT语句后面的各个字段的顺序相同的,如图2-7所示。

978-7-111-36808-3-Chapter02-9.jpg

图2-7 例2-2的查询语句及查询结果窗口

3.通配符“*”的使用

例2-3 显示全部学生的所有信息。

在SELECT语句中,可以使用通配符“*”来显示所有的字段,如图2-8所示。

978-7-111-36808-3-Chapter02-10.jpg

图2-8 例2-3的查询语句及查询结果窗口

4.基于字段的表达式的使用

例2-4 显示全部学生的姓名和出生年份。

SELECT后面可以用字段表达式,如图2-9所示。

978-7-111-36808-3-Chapter02-11.jpg

图2-9 例2-4的查询语句及查询结果窗口

5.使用DISTINCT短语去掉重复记录

例2-5 显示全部学生的姓名。

DISTINCT短语可以从结果表中去掉重复的记录,学生基本信息表中有两个名为“马爽”的学生信息,用了DISTINCT短语后结果表中只存在一个“马爽”,如图2-10所示。

978-7-111-36808-3-Chapter02-12.jpg

图2-10 例2-5的查询语句及查询结果窗口

6.用WHERE子句过滤记录

SELECT语句中可以通过WHERE子句来限制查询的记录范围,使用时WHERE子句必须紧跟在FROM子句后面。WHERE子句的使用非常灵活,经常和关系运算符、逻辑运算符、通配符和一些特殊的筛选语句组合成复杂的查询条件,因此,在讲述WHERE子句的使用之前先介绍一下这些运算符。

(1)关系运算符

关系运算符测试两个表达式是否相同。除了text、ntext或image数据类型的表达式外,关系运算符可以用于其他所有的表达式。关系运算符见表2-1。

表2-1 关系运算符

978-7-111-36808-3-Chapter02-13.jpg

(2)逻辑运算符

逻辑运算符对某个条件进行测试,以获得其真实情况。逻辑运算符和关系运算符一样,返回带有TRUE或FALSE值的布尔数据类型。逻辑运算符见表2-2。

表2-2 逻辑运算符

978-7-111-36808-3-Chapter02-14.jpg

(3)通配符

通配符是用来匹配或限制一些字符的符号,常见的通配符见表2-3。

(4)特殊的筛选语句

BETWEEN:用来定义一个区间范围。

IS NULL:测试字段值是否为空。

LIKE:字符串匹配操作。

EXISTS:检查某一字段是否有值,与IS NULL相反。

表2-3 通配符

978-7-111-36808-3-Chapter02-15.jpg

下面通过实例介绍WHERE子句的用法。

例2-6 显示全部女生的姓名、性别。

本例学习WHERE子句的用法,如图2-11所示。

例2-7 显示全部年龄不小于20岁的女生的姓名和性别。

本例学习逻辑运算符“与”和关系运算符的用法,如图2-12所示。

例2-8 显示全部年龄不是20岁的学生的姓名、性别、年龄。

本例学习逻辑运算符“非”的用法,如图2-13所示。

978-7-111-36808-3-Chapter02-16.jpg

图2-11 例2-6的查询语句及查询结果窗口

978-7-111-36808-3-Chapter02-17.jpg

图2-12 例2-7的查询语句及查询结果窗口

978-7-111-36808-3-Chapter02-18.jpg

图2-13 例2-8的查询语句及查询结果窗口

例2-9 显示年龄在18~21岁之间的全部学生的姓名、性别、年龄。

本例学习BETWEEN短语的用法,如图2-14所示。

例2-10 显示没有家庭地址的学生的姓名、性别。

本例学习IS NULL短语的用法,如图2-15所示。(www.xing528.com)

例2-11 显示电子商务和计算机应用专业学生的姓名、专业。

本例学习IN短语的用法,如图2-16所示。

978-7-111-36808-3-Chapter02-19.jpg

图2-14 例2-9的查询语句及查询结果窗口

978-7-111-36808-3-Chapter02-20.jpg

图2-15 例2-10的查询语句及查询结果窗口

978-7-111-36808-3-Chapter02-21.jpg

图2-16 例2-11的查询语句及查询结果窗口

例2-12 显示不是电子商务和计算机应用专业学生的姓名、专业。

本例学习NOT IN短语的用法,如图2-17所示。

978-7-111-36808-3-Chapter02-22.jpg

图2-17 例2-12的查询语句及查询结果窗口

例2-13 显示全部上海市学生的姓名、家庭地址。

本例学习LIKE短语和通配符“%”的用法,如图2-18所示。

978-7-111-36808-3-Chapter02-23.jpg

图2-18 例2-13的查询语句及查询结果窗口

例2-14 显示全部家庭地址中第4个汉字是“浦”的学生的姓名、家庭地址。

本例学习LIKE短语和通配符“%”、“_”的用法,如图2-19所示。

978-7-111-36808-3-Chapter02-24.jpg

图2-19 例2-14的查询语句及查询结果窗口

7.使用ORDER BY子句对查询结果进行排序

在SELECT语句中,使用ORDER BY子句可以对查询结果按一个或多个字段进行升序(ASC)或降序(DESC)排序。

例2-15 对学生按年龄由小到大显示。

本例学习ORDER BY子句按升序(ASC)排列查询结果表中的记录的用法,如图2-20所示。

978-7-111-36808-3-Chapter02-25.jpg

图2-20 例2-15的查询语句及查询结果窗口

例2-16 在学生基本情况表中添加“家庭人数”列,类型为int,并为每个学生添加“家庭人数”的值,然后按学生年龄升序加家庭人数降序进行组合排序,显示出学生的姓名、年龄、家庭人数。

本例学习ORDER BY子句对多个字段先按升序(ASC)、再按降序组合排列查询结果表中的记录的用法,如图2-21所示。

978-7-111-36808-3-Chapter02-26.jpg

图2-21 例2-16的查询语句及查询结果窗口

8.SQL的集合函数的使用

SQL提供了各种统计汇总函数来帮助用户进行统计汇总,在SELECT语句中也可以用到这些函数,常见的有统计满足条件的记录个数的函数COUNT()、求某列最大值函数MAX()、求某列最小值函数MIN()、求列平均值函数AVG()、列求和函数SUM()等。下面举例说明这些函数的使用方法。

例2-17 统计男生的数量。

本例学习函数COUNT()的用法,如图2-22所示。

978-7-111-36808-3-Chapter02-27.jpg

图2-22 例2-17的查询语句及查询结果窗口

例2-18 显示年龄最大的学生的年龄。

本例学习函数MAX()的用法,如图2-23所示。

978-7-111-36808-3-Chapter02-28.jpg

图2-23 例2-18的查询语句及查询结果窗口

例2-19 显示年龄最小的学生的年龄。

本例学习函数MIN()的用法,如图2-24所示。

978-7-111-36808-3-Chapter02-29.jpg

图2-24 例2-19的查询语句及查询结果窗口

例2-20 统计学生的平均年龄。

本例学习函数AVG()的用法,如图2-25所示。

978-7-111-36808-3-Chapter02-30.jpg

图2-25 例2-20的查询语句及查询结果窗口

例2-21 统计学生的年龄总和。

本例学习函数SUM()的用法,如图2-26所示。

978-7-111-36808-3-Chapter02-31.jpg

图2-26 例2-21的查询语句及查询结果窗口

9.使用GROUP BY子句对查询结果进行分组

利用GROUP BY子句可以快速简洁地将查询结果表按照指定的字段进行分组,值相等的记录被分为一组。GROUP BY子句一般和集合函数一起使用。

例2-22 统计男、女生各自的人数和平均年龄。

本例学习GROUP BY子句与集合函数的用法,如图2-27所示。

10.利用HAVING子句筛选结果表

HAVING子句可以对分组后的结果表进行筛选,这种筛选与WHERE子句是不同的,WHERE的作用对象是表,而HAVING子句的作用对象是GROUP BY子句所产生的组。

978-7-111-36808-3-Chapter02-32.jpg

图2-27 例2-22的查询语句及查询结果窗口

例2-23 统计选修了一门以上课程的学生的学号及其选修的课程数量。

本例学习HAVING子句的用法,如图2-28所示。

978-7-111-36808-3-Chapter02-33.jpg

图2-28 例2-23的查询语句及查询结果窗口

11.INTO子句的使用

在SELECT语句中使用INTO子句可以创建一张新表。注意:此时创建的结果表存储在数据库中,而不会在屏幕上显示,需要用查询语句将新建立的表显示出来。如果INTO子句后面的表名前有“#”号,则表示该新表为临时表,临时表与正常表的区别是临时表并不在数据库中保存,当退出数据库管理系统时会自动消失。

例2-24 创建信息管理系的学生表。

本例学习INTO子句的用法,如图2-29所示。

978-7-111-36808-3-Chapter02-34.jpg

图2-29 2-24的查询语句及查询结果窗口

12.TOP限定子句的使用

通过TOP子句可以限定只取前面n条记录。

例2-25 取学生基本情况表中的前3条记录。

本例学习TOP子句的用法,如图2-30所示。

978-7-111-36808-3-Chapter02-35.jpg

图2-30 例2-25的查询语句及查询结果窗口

13.UNION子句的使用

关键字UNION允许将两个或多个查询结果表进行逻辑联合,其结果是“并”运算,但是参加UNION操作的各个结果表的结构必须一样,在进行联合时,系统会自动将重复的记录去掉。

例2-26 显示国际贸易专业的学生以及全部女生。

本例学习UNION的用法,如图2-31所示。

978-7-111-36808-3-Chapter02-36.jpg

图2-31 例2-26的查询语句及查询结果窗口

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈