第11章 T-SQL高级查询 课件

2023-03-21
| 40页
| 100人阅读
| 14人下载
普通

内容正文:

SOLServer 2002 picatos Deveoper SaL server 2005- Busness Infomation Profesioal Worke 第11章 T-SQL高级查询 __________________ SQLServer2005 第1章二TS0L高级查询 ·11.1多表查询 ·11.2连接 ·11.3使用统计函数 ·11.4使用GROUP BY子句进行分类汇总 ·11.5使用COMPUTE和COMPUTE BY子句 ·11.6使用嵌套的子查询 SQLServer 2005 11.1 多表查询 1多表查询和笛卡儿乘积 前面讨论的查询,大多还局限在一张表内。但在更多的情况下,需要对多张 表中的数据同时进行查询。多表查询就是在FROM子句中出现多张表的情形 下面的$QL语句实现同时对两张表进行的查询: USE JWGL GO SELECT name,grade FROM student,result 这个查询的目的是查询每个学生的成绩,查询结果如下: 。 陈红85 陈红75 陈红65 陈红45 SQLServer 2005 11.1多表查询 ●●●●● 李凡 60 李凡 75 李凡 99 (所影响的行数为234行) 这个查询一共返回了234个结果,显然,这是不正确的。问题 出在对表连接条件的限制上。在上面的例子中,没有对表连 接条件作任何限制,所以SQL Server在student表中每取出 一条数据,就从result:表中取出一条数据与前者组合成一条 记录。在student中有9条记录,在result表中有26条记录, 所以,一共返回了234条记录。 SQLServer 2005 11.1 多表查询 这种情况在数据库理论中被称为笛卡儿乘积。 笛卡儿乘积返回的结果在大多数情况下是冗余、无 用的,所以应该采取措施避免笛卡儿乘积的出现。 。 没有WHERE子句的连接将产生连接所涉及的表的 笛卡尔积。 第一个表的行数乘以第二个表的行数等于笛卡尔积 结果集的大小。 通过包含一条WHERE子句来给出查询连接条件,就可 以有效避免出现笛卡儿乘积。 SQLServer 2005 11.1 多表查询 【例11.1】还是利用上述同一个例子,查询每个学生的成绩, 为了实现查询目标,应该使用WERE子句来给出查询连接条 件,实现查询。 SELECT name,course id,grade FROM student,result WHERE student.student id-result.student id 这时,返回了26条记录,查询结果是正确的。 般说来,为了有效避免笛卡儿乘积的出现,对所定义的查询 连接条件的数目是有规定的:如果有N个表出现在FROM的后 面,那么,所定义的连接条件不得少于N-1个。 SQLServer2005 11.1多表查询 2使用表的别名 ·在S9L语言中,允许对表使用别名,所以,可以用更简便明了的方法来书写上 面的查询语句。 ·如11.1的例子可以改写为: SELECT name,course_id,grade FROM student s,result r WHERE s.student_id=。student_id ·也可以按照ANSI92标准使用AS关键字来使用别名,如上面的查询可以更改 为: SELECT name,course_id,grade FROM student as s,result as r WHERE s.student_id=。student_id ·使用表的别名时,首先应在SELECT查询语句的FROM子句中指定表的别名。 SQLServer 2005 11.1 多表查询 3 使用联合运算UNION子句 如果有多个不同的查询结果数据集,但又希望将它们连接在一起,组成一组 数据。 ·这组数据是这多个结果集的逻辑联合。在这种情况下,可以使用UNION子句 它将两个或更多查询的结果组合为单个结果集,该结果集包含联合查询中 的所有查询的全部行。 ● 使用UNION组合两个查询的结果集的两个基本规则是:所有查询中的列 数和列的顺序必须相同,并且数据类型必须兼容。 所谓兼容就是各列的数据类型不必精确地进行匹配,服务器会自动地实现 不同长度字符串的转换,也可以在不同类型的数值之间实现相互转换。但 是,服务器不会把数值转换为字符串,也不会把日期类型转换为数值类型。 SQLServer 2005 11.1 多表查询 3 使用联合运算UNION子句 【例ll.2】使用UNION语句联合对学生表(Student)和教师表(Teacher) 的查询,列出学生和教师的姓名和出生日期。 SELECT name,birthday FROM student

资源预览图

第11章  T-SQL高级查询 课件
1
第11章  T-SQL高级查询 课件
2
第11章  T-SQL高级查询 课件
3
第11章  T-SQL高级查询 课件
4
第11章  T-SQL高级查询 课件
5
第11章  T-SQL高级查询 课件
6
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。