《数据查询及统计.ppt》由会员分享,可在线阅读,更多相关《数据查询及统计.ppt(24页珍藏版)》请在三一办公上搜索。
1、数据查询及统计,本章主要内容,单表查询 多表连接查询 嵌套查询 聚集函数 分组,数据库原理及应用,数据库中使用的表,数据库原理及应用,单表查询,单表查询单表无条件查询 命令格式:SELECT ALL|DISTINCT TOP NPERCENT AS,AS,.FROM 表名|视图名,数据库原理及应用,单表查询,例题一 查询全院学生的信息.SELECT*FROM STUDENT,数据库原理及应用,单表查询,单表有条件查询命令格式:SELECT ALL|DISTINCT AS,AS,.FROM WHERE,数据库原理及应用,单表查询,例题二 查询王坤的个人信息。SELECT*FROM STUDENT
2、WHERE SNAME=王坤,数据库原理及应用,单表查询,模糊查询LIKE(模糊查询)用法:NOT LIKE ESCAPE 其含义是查找指定的属性列值与相匹配的记录。可以是一个完整的字符串,也可以含有通配符%和_。其中:%(百分号):代表任意长度(长度可以为0)的字符串;_(下划线):代表任意单个字符。ESCAPE 的作用是当用户要查询的字符串本身应含有%或_时,可以使用该选项对通配符进行转义。如果LIKE后面的匹配串中不含通配符,则可以用“=”(等于)运算符取代LIKE谓词,用“!=”或“”(不等于)运算符取代NOT LIKE谓词。,数据库原理及应用,单表查询,例题三 查询姓王的学生的信息。
3、SELECT*FROM STUDENTWHERE SNAME LIKE 王%,数据库原理及应用,多表连接查询,多表连接查询语句格式:SELECT ALL|DISTINCT 别名.AS,别名.AS,.FROM 别名1,别名2,WHERE AND,数据库原理及应用,多表连接查询,实现根据系别查询学生的信息:例题一 查询软件系学生的信息。SELECT*FROM STUDENT A,CLASS B,DEPARTMENT CWHERE A.CLASSNO=B.CLASSNO AND B.DEPTNO=C.DEPTNO AND DEPTNAME=软件工程系,数据库原理及应用,多表连接查询,例题二 查询软件
4、系2007级学生的信息。SELECT*FROM STUDENT A,CLASS B,DEPARTMENT CWHERE A.CLASSNO=B.CLASSNO AND B.DEPTNO=C.DEPTNO AND DEPTNAME=软件工程系 AND INYEAR=2007,数据库原理及应用,多表连接查询,例题三 查询软件系2007级2班学生的信息。SELECT*FROM STUDENT A,CLASS B,DEPARTMENT CWHERE A.CLASSNO=B.CLASSNO AND B.DEPTNO=C.DEPTNO AND DEPTNAME=软件工程系 AND INYEAR=2007
5、AND CLASSNAME=07软件2班,数据库原理及应用,嵌套查询,嵌套查询在SQL语言中,一个SELECT-FROM-WHERE语句称为一个查询块。将一个查询块嵌套在另一个查询块的WHERE子句或HAVING子句的条件中称为嵌套查询或子查询。下面给出通过嵌套查询实现上面三个例题的SQL语句。,数据库原理及应用,嵌套查询,例题一*SELECT*FROM STUDENT WHERE CLASSNO=(SELECT CLASSNO FROM CLASS WHERE DEPTNO=(SELECT DEPTNO FROM DEPARTMENT WHERE DEPTNAME=软件工程系),数据库原理及
6、应用,嵌套查询,例题二*SELECT*FROM STUDENT WHERE CLASSNO=(SELECT CLASSNO FROM CLASS WHERE INYEAR=2007 AND DEPTNO=(SELECT DEPTNO FROM DEPARTMENT WHERE DEPTNAME=软件工程系),数据库原理及应用,嵌套查询,例题三*SELECT*FROM STUDENT WHERE CLASSNO=(SELECT CLASSNO FROM CLASS WHERE CLASSNAME=07软件2班 AND DEPTNO=(SELECT DEPTNO FROM DEPARTMENT W
7、HERE DEPTNAME=软件工程系),数据库原理及应用,聚集函数,聚集函数SQL的聚集函数是综合信息的统计函数,也称为聚合函数或集函数,包括计数、求最大值、求最小值、求平均值和求和等。聚集函数可作为列标识符出现在SELECT子句的目标列或HAVING子句的条件中。,数据库原理及应用,聚集函数,数据库原理及应用,聚集函数,例题一 统计全院学生人数.SELECT COUNT(*)AS 全院人数FROM STUDENT,数据库原理及应用,分组与排序,对查询结果集进行分组(1)命令格式:GROUP BYHAVING。(2)功能说明:把查询结果集中的各行按进行分组,在这些列上,对应值都相同的记录分在
8、同一组。若无HAVING子句,则各组分别输出;若有HAVING子句,只有符合HAVING条件的组才输出。此时,SELECT子句中,只能包含两种目标列表达式:要么是聚集函数,要么是出现在GROUP BY子句中的分组字段。当SELECT的目标列表达式清单中有聚集函数时,才使用GROUP BY子句。,数据库原理及应用,分组与排序,例题一 查询各系的总人数。SELECT DEPTNAME 系名,COUNT(*)AS 总人数FROM STUDENT A,CLASS B,DEPARTMENT CWHERE A.CLASSNO=B.CLASSNO AND B.DEPTNO=C.DEPTNOGROUP BY
9、DEPTNAME,数据库原理及应用,分组与排序,例题二 统计各系各级的人数.SELECT DEPTNAME 系名,INYEAR 年级,COUNT(*)AS 总人数FROM STUDENT A,CLASS B,DEPARTMENT CWHERE A.CLASSNO=B.CLASSNO AND B.DEPTNO=C.DEPTNOGROUP BY DEPTNAME,INYEAR,数据库原理及应用,分组与排序,例题三 统计各班的人数。SELECT CLASSNAME 班级,COUNT(*)AS 总人数FROM STUDENT A,CLASS B WHERE A.CLASSNO=B.CLASSNO GROUP BY CLASSNAME,数据库原理及应用,数据查询与统计,单表查询 多表连接查询 嵌套查询 聚集函数 分组,