内容正文:
数据库查询是数据库中一个最重要也是最基本的功能,它是从数据库中检索符合条件的数据记录的选择过程。SQL Server 2005的数据库查询使用T-SQL语言,其基本的查询语句是SELECT语句。
本章主要介绍SQL Server 2005数据库查询的方法及使用。
第8章 数据库查询
8.1 数据库查询
8.2 数据汇总
8.3 排序
8.4 分组
8.5 子查询
8.6 集合操作
8.7 存储查询结果
8.8 函数查询
第8章 数据库查询
T-SQL语言提供了SELECT语句进行数据库的查询,该语句具有灵活的使用方式和丰富的功能。其语法格式如下:
SELECT [ALL|DISTINCT] [ TOP <operator> ]
[<column_name >] [AS< column_name >] [, [<column_name >] <Select operator >[AS < column_name >]…]
FORM[<database_name >] < table_name >[[AS]Local_Alias] [[INNER | LEFT [OUTER] | RIGHT [OUTER] | FULL [OUTER]
JOIN[ <database_name>] <table_name> [[AS]Local_Alias][ON<联接条件> ]]
[INTO <select> |TO FILE <file_name> [ADDITIVE]
| TO PRINTER [PROMPT] | TO SCREEN]
[PREFERENCE PreferenceName][NOCONSOLE][PLAIN][NOWAIT]
[WHERE < operator 1> [AND < operator 2>…][AND | OR < operator >…]]
[GROUP BY < operator > ][, < operator > …]]
[HAVING ]< operator > ]
[UNION [ALL] <SELECT column_name > ]
[ORDER BY < column_name > [ASC |DESC] [, < column_name >
8.1 数据库查询
8.1.1 选择列
选择列指的是通过限定返回结果的列组成结果表。
1. 选择指定列
选择指定列指的是选择一个表中的部分列,各列名之间用逗号隔开。
【例8-1】查询学生表中学生的学号、姓名和院系名称。
SELECT 学号,姓名,院系名称
FROM 学生表
GO
【例8-2】查询教师表中教师的姓名和职称。
SELECT 姓名,职称
FROM 教师表
GO
8.1 数据库查询
2. 选择所有列
选择所有列指的是选择一个表中的全部列。可以将所有列名都列出,各列之间用逗号隔开,也可以使用符号“*”。
【例8-4】查询所有课程信息。
SELECT 课程号,课程名,学分,备注
FROM 课程表
GO
SELECT *
FROM 课程表
GO
8.1 数据库查询
3. 定义列别名
查询结果默认输出的列名都是建表时的列名。但有时用户希望查询结果输出时,显示自己指定的列名显示,这时就可以定义表列的别名。SELECT语句使用AS关键字来定义别名。
【例8-5】查询所有学生的姓名、性别,各列的别名是name、sex。图8-3 定义表列的别名
SELECT 姓名AS name,性别AS sex
FROM 学生表
GO
8.1 数据库查询
4. 替换结果中数据
在对表进行查询时,有时希望对所查询的某些列使用表达式进行计算。SELECT语句支持表达式的使用。
【例8-8】查询所有学生的分数信息,如果分数大于等于80,则为“优秀”;大于等于60,则为“及格”;小于60,则为“不及格”。使用CASE函数给每个学生的分数设定等级。
SELECT 学号,课程号,分数,等级=
CASE
WHEN 分数>=80 THEN '优秀'
WHEN 分数>=60 THEN '及格'
ELSE '不及格'
END
FROM 成绩表
GO
8.1 数据库查询
8.1.2 选择行
选择行指的是通过限定返回结果的行组成结果表。选择行可以和选择列一起使用。
1. 消除结果中重复行
在对表进行查询时,有时查询结果有许多重复行。SELECT语句使用DISTINCT关键字消除结果中的重复行。其语法格式如下:
DISTINCT column_name [,column_name…]
说明:DISTINCT关键字对后面的所有列消除重复行。一个SELECT语句中DISTINCT只能出现一次,而且必须放在所有列名之前。
【例8-10