第6章高级数据查询。
6.1 一般数据查询功能扩展6.1.1使用top限制结果集。
1)top n :取查询结果的前n行数据。
2)top n percent: 取查询结果的n %行数据。
3)with ties:表示包括最后一行取值并列的结果。
6.1.2 使用case函数1.简单的case 函数case函数语法格式:
case测试表达式。
when简单表达式1the结果表达式1
when简单表达式2th结果表达式2
when简单表达式nth结果表达式n
els结果表达式n+1
6.1.3 将查询结果保存到新表中。
select 查询列表序列into<新表名>
from数据源。
6.2 查询结果的并、交、差运算 6.2.1 并运算。
select语句1
union [all]
select语句2
union [all]
select语句n
6.2.2交运算。
select语句1
intersect
select语句2
intersect
select语句n
6.2.3差运算。
select语句1
except
select语句2
except
select语句n
6.3相关子查询1.使用子查询进行基于集合的测试。
通常运算符in和not in.其形式为:where表达式[not] in(子查询)
2.使用子查询进行比较测试。
比较运算符(=、形式:where 表达式比较运算符(子查询)
3.使用子查询进行存在性测试。
通常使用exists谓词,其形式:where[not] exists(子查询)
6.4其他形式的子查询1.替代表达式的子查询。
指在select语句的选择列表中嵌入一个只返回一个标量值的select语句,这个查询语句通常都是通过一个聚合函数来返回一个单值。
2.派生表。
select * from(select * from t1) as temp 这里的temp就是派生表。
6.5 其他一些查询功能6.5.1 开窗函数。
在sql server中,一组行被称为一个窗口,开窗函数是指可以用于“分区”或“分组”计算的函数。这些函数结合over子句对组内的数据进行编号,并进行求和、计算平均值等统计。因此,从这个角度来说,sum 、**g、以用 row-number(对数据进行编号的函数)等都可以称为开窗函数。
1. 将over子句与聚合函数结合使用。
语法格式:over([partition by value_expression,… n] ]
2. 将over子句与排名函数一起使用。
sql server提供了四个排名函数:rank、 ntile、 dense_rank和row_number.
1) 函数语法格式:
rank()over([ partition_by_clause>,…n] ]
over([partition by value_expression,… n] ]
6.5.2 公用表表达式。
小结:本章介绍了sql语言中的一些高级查询功能,这些高级查询语句在不同的数据库产品中可能语法不完全一致,而且有些数据库产品也不一定都支持这些操作。这里介绍的语句在sql server 2008 平台上都支持,因此读者可在这个平台上测试这些语句。
本章主要介绍用了使用top限制查询返回结果、分情况的case函数、查询结果的并、交、差运算、相关子查询以及其他一些查询功能。
case函数用于对数据进行分情况判断,它一般是用在select语句的查询列表中,对数据库中的数据进行分情况显示不同内容,但也可以用在update语句中,用于根据不同的条件对数据进行不同的更改。
相关子查询部分介绍了基于集合的相关子查询、替代表达式的子查询以及派生表形式的子查询。相关子查询的特点是先执行外层查询,然后再执行内层查询,内层查询是根据外层查询结果中的一行数据进行的。相关子查询在内层查询中关联外层查询;替代表达式的子查询是指可以将子查询写在查询列表中,但这个子查询必须是返回一个标量值的查询;派生表子查询是将子查询写在from子句中,这种形式的子查询对外层查询来说就像一个表,可以在外层查询中使用派生表子查询的结果。
查询结果的并、交、差运算是对多个查询语句形成的结果集进行操作。在很多情况下,集合的交运算和差运算可以用in和not in形式的子查询实现。在实现查询结果的并、交、差运算时要求各查询语句的查询列个数必须相同,对应列的语义一致、数据类型兼容。
这些操作的最终结果都是采用第一个查询语句的列标题作为整个操作结果的列标题,因此当需要改变操作结果的列标题时,只需对第一个查询语句指定列别名即可。
在其他一些查询功能中,介绍了开窗函数和公用表表达式,其中开窗函数是iso sql标准支持的。开窗函数结合over子句对数据进行分区,再通过排名函数对组内的数据进行编号,或通过聚合函数对组内数据进行求和、计算平均值等统计。公用表达类似于一个临时表,它是将查询语句产生的结果集指定一个临时名字,之后就可以在select、 insert、 update 、delete等语句中使用命名好的公用表表达式。
高级数据查询
1.学生管理数据库。学生表 表名 student 属性 sno 字符型,最大7个字符表示学生学号。sname 字符型,最大8个字符表示学生姓名。sage 整型表示学生年龄。ssex 字符型,最大2个字符表示学生性别。sdate 日期型表示学生入学时间。sdept 字符型,长度为20 表示所在系。约束...
实验五高级数据查询
一 操作。1 新建查询 启动ssms,工具栏栅选择 新建查询 在查询编辑窗口使用sql语句进行查询操作。2 在 新建查询 窗口中,编辑 新建 保存 执行sql脚本文件。3 检验并保存程序执行结果。练习 使用t sql语句完成以下题目。1 查询所在城市是 上海 的出版商出版的书刊名 书价 作者名 出版...
数据查询练习
1.从图书管理数据库mbook中查询出所有读者的信息。2.查询姓名为 王林 的读者的借书证号 专业和借书量。3.计算 sql server实用教程 第3版 借出多少本。4.模糊查询书名中有 sql sever 字样的图书的书名 作译者和出版社。查询结果中将这三列的标题更改为bookname auth...