数据库语言SQL――数据查询3

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

本章内容4.1基本查询4.2嵌套查询4.3连接查询多表连接查询多表查询指的是从多个源表中检索数据。因此,多表查询时,FROM子句中的数据源表要给出所有源表表名,各个表名之间要用逗号分隔。1.多表查询的FROM子句格式:FROM源表表名集例如,若一个查询用到三个表,表名分别为学生信息表、选修信息表,课程信息表。FROM子句应为:FROM学生信息表,选修信息表,课程信息表2.多表查询中的SELECT子句与单表查询的SELECT子句功能基本相同,也是用来指定查询结果表中包含的列名。不同的是:如果多个表中有相同的列名,则需要用表名.列名来限定列是那个表的列。例如,学生信息表和选修信息表中都有学号列,为了在结果表中包含学生信息表的学号列,则要用学生信息表.学号表示。还可用表名.*,表示表名指定的表中的所有列。例如,学生信息表.*,表示学生信息表的所有列。3.多表查询中的GROUPBY、HAVING、ORDERBY子句与单表查询中的用法基本相同。不同的是:如果列名有重复,则要用表名.列名来限定列是那个表的列。4.多表查询中的WHERE子句与单表查询中的用法差别较大。多表查询中往往要有多表的连接条件,当然还有表的一个或多个行选择条件,多个行选择条件两者用AND组合。这里着重介绍多表的连接条件。按连接条件的不同,连接分为:内连接、外连接。外连接又分为左外连接、右外连接。SQLServer2000默认情况下为内连接。(1)内连接等值连接与自然连接等值连接:即根据两个表的对应列值相等的原则进行连接。连接条件的形式往往是“主键=外键”,即按一个表的主键值与另一个表的外键值相同的原则进行连接。常用的等值连接条件形式:表名1.列名1=表名2.列名2【例】查询每个学生的基本信息以及他/她选课的情况。SELECT学生信息表.*,选修信息表.*FROM学生信息表,选修信息表WHERE学生信息表.学号=选修信息表.学号上述结果表中含有学生信息表的所有列和选修信息表的所有列,存在一个重复的列学号,这说明是等值连接。如果要去掉重复列,就要用SELECT子句指定结果表中包含的列名,这样就成为自然连接。如下:SELECT学生信息表.学号,姓名,性别,年龄,系别,课程号,成绩FROM学生信息表,选修信息表WHERE学生信息表.学号=选修信息表.学号【例】查询每个学生的学号、姓名、选修的课程名、成绩。SELECT学生信息表.学号,姓名,课程名,成绩FROM学生信息表,课程信息表,选修信息表WHERE学生信息表.学号=选修信息表.学号AND课程信息表.课程号=选修信息表.课程号【例】查询选修了2且成绩大于90分的学生的学号、姓名、成绩。SELECT学生信息表.学号,姓名,成绩FROM学生信息表,选修信息表WHERE学生信息表.学号=选修信息表.学号AND课程号=‘2’AND成绩90这里:用AND将一个连接条件和两个行选择条件组合成为查询条件【例】求计算机系选修课程大于等于2门课的学生的学号、平均成绩,并按平均成绩从高到低排序。SELECT学生信息表.学号,AVG(成绩)as‘平均分'FROM学生信息表,选修信息表WHERE学生信息表.学号=选修信息表.学号AND系别=‘计算机'GROUPBY学生信息表.学号HAVINGCOUNT(*)=2ORDERBYavg(成绩)DESC(3)外连接外连接不仅包括满足连接条件的行,而且还包括其中某个表中不满足连接条件的行。标准SQL中,外连接分为左外连接、右外连接。1)左外连接(LEFTOUTERJOIN)结果中包括“左”表中所有行及“右”表中所有匹配的行(不包括“右”表中不匹配的行)2)右外连接(RIGHTOUTERJOIN)结果中包括“右”表中所有行及“左”表中所有匹配的行(不包括“左”表中不匹配的行)1)左外连接(LEFTOUTERJOIN)例:查询所有学生姓名及其选课情况(课程号)selects.姓名,sc.课程号from学生信息表assleftouterjoin选修信息表asscon(s.学号=sc.学号)或者:Select学生信息表.姓名,选修信息表.课程号from学生信息表leftouterjoin选修信息表on(学生信息表.学号=选修信息表.学号)2)右外连接(RIGHTOUTERJOIN)例:查询选课的学生姓名及其选课情况(课程号)selects.姓名,sc.课程号from学生信息表assrightouterjoin选修信息表asscon(s.学号=sc.学号)或者:Select学生信息表.姓名,选修信息表.课程号from学生信息表rightouterjoin选修信息表on(学生信息表.学号=选修信息表.学号)复习题1.查询年龄在20岁以下的学生的基本信息2.查询名字中第2个字为“大”字的学生的姓名和学号3.列出所有同学的选课信息,包括未选课的同学4.求“计算机”系成绩大于85分的学生的人数5.统计每门选修课程不及格的人数,列出课程编号和不及格的人数。6.查询没有选修’3’课程的学生的学号和姓名(查询结果去掉重复值)

1 / 15
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功