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