《SQL Server 2005数据库案例教程教学课件严波第5章复杂查询》由会员分享,可在线阅读,更多相关《SQL Server 2005数据库案例教程教学课件严波第5章复杂查询(19页珍藏版)》请在金锄头文库上搜索。
1、,第五章 复杂查询,本章目标,使用LIKE进行模糊查询 掌握聚合函数的使用 使用GROUP By进行分组查询 掌握多表关联查询,模糊查询-LIKE,示例:查询姓名叫”王*军“的学生信息 通配符: %:包含零个或多个字符的任意字符串 _下划线 :任何单个字符 :指定范围a-f或集合acdef中的任意单个字符:不属于指定范围 (a-f) 或集合 (abcdef) 的任何单个字符。 提问:在author表中查找以 de 开始并且其后的字母不 为l 的所有作者的姓氏,SELECT * FROM STUDENT WHERE StuName LIKE 王_军,模糊查询-BETWEEN,示例:查询出生日期在
2、1980-1982年的学生信息 提问:查询出生日期不在1980-1982年的学生信息,等价于,SELECT * FROM STUDENT WHERE StuDate BETWEEN 1980 AND 1982,SELECT * FROM STUDENT WHERE StuDate=1980-01-01 AND StuDATE=1982-01-01,聚合函数,提问:想知道班级学员的总分,平均分等统计数据该怎么实现?,聚合函数示例,示例1:求全班的平均分 提问:求全班的最高分和最低分 示例2:统计全班的学生人数,SELECT AVG(Score) AS 平均成绩 FROM StuScore,SEL
3、ECT COUNT(*) 总人数 FROM Student,提问:统计参加考试科目001的人数,分组查询,提问:统计全班每个学生的平均成绩该如何实现?,GROUP,SELECT StuNo 学号, AVG(Score) 平均分 FROM StuScore GROUP BY StuNo,提问:如何统计全班各门课程的平均成绩呢?,HAVING过滤,提问:查询全班平均成绩大于75分的学生信息,SELECT StuNo 学号, AVG(Score) 平均分 FROM StuScore GROUP BY StuNo HAVING AVG(Score)75,如果将HAVING改为WHERE会怎么样?,关联
4、查询,提问:用户需要查看学生的详细信息以及成绩信息?所需要的数据分别在两个表中存储,如何同时访问这两个表的数据?,多表关联分类,内联接(INNER JOIN) 外联接 左外联接(LEFT JOIN) 右外联接(RIGHT JOIN) 完整外联接(FULL JOIN) 自联接(CROSS JOIN),内联接,一.传统语法 SELECT 列名, FROM 表名, WHERE 条件 二.SQL联接 SELECT 列名 FROM 表名 INNER JOIN 表名JOIN 表名 ON 连接条件 WHERE 条件,内联接,内联接-多表关联,示例:查询参加了考试的学生信息,成绩信息和具体科目信息,左外联接,右外联接,完全外联接,自联接,提问:查询员工信息以及经理的信息,总结,模糊查询用LIKE,BETWEEN AND关键字 对数据进行统计使用SQL内置的聚合函数 对数据进行分组用GROUP BY 查询的数据来自于多个表用关联查询 内联接筛选多表中完全匹配的行 左外联接以左表为主筛选数据 右外联接以右表为主筛选数据 内联接将表自身通过别名关联,