资源描述
数据查询及统计数据查询及统计 本章主要内容本章主要内容 单表查询 多表连接查询 嵌套查询 聚集函数 分组数据库原理及应用数据库原理及应用数据库中使用的表数据库中使用的表数据库原理及应用数据库原理及应用单表查询单表查询单表查询单表查询F单表无条件查询单表无条件查询 命令格式:命令格式: SELECT ALL|DISTINCT TOP NPERCENT SELECT ALL|DISTINCT TOP NPERCENT AS AS , , AS AS ,.,. FROM FROM 表名表名| |视图名视图名 数据库原理及应用数据库原理及应用单表查询单表查询例题一例题一 查询全院学生的信息查询全院学生的信息.SELECT SELECT * *FROM STUDENTFROM STUDENT数据库原理及应用数据库原理及应用单表查询单表查询F单表有条件查询单表有条件查询命令格式:命令格式:SELECT ALL|DISTINCT SELECT ALL|DISTINCT AS AS , AS AS,.,.FROM FROM WHERE WHERE 数据库原理及应用数据库原理及应用单表查询单表查询例题二例题二 查询王坤的个人信息。查询王坤的个人信息。SELECT SELECT * *FROM STUDENTFROM STUDENTWHERE SNAME=WHERE SNAME=王坤王坤数据库原理及应用数据库原理及应用单表查询单表查询F模糊查询模糊查询LIKE(LIKE(模糊查询模糊查询) )用法:用法: NOT LIKE NOT LIKE ESCAPE ESCAPE 其含义是查找指定的属性列值与其含义是查找指定的属性列值与 相匹配的记录。相匹配的记录。 可以是一个完整的字符串,也可以含有通配符可以是一个完整的字符串,也可以含有通配符% %和和_ _。其中:。其中:%(%(百分号百分号) ):代表任意长度:代表任意长度( (长度可以为长度可以为0)0)的字符串;的字符串;_(_(下划线下划线) ):代表任意单个字符。:代表任意单个字符。ESCAPE ESCAPE 的作用是当用户要查询的字符串本身应含有的作用是当用户要查询的字符串本身应含有% %或或_ _时,可以使用该选项对通配符进行转义。时,可以使用该选项对通配符进行转义。如果如果LIKELIKE后面的匹配串中不含通配符,则可以用后面的匹配串中不含通配符,则可以用“=”(=”(等于等于) )运算符取代运算符取代LIKELIKE谓词,用谓词,用“!=”!=”或或“”(”(不等于不等于) )运算符取代运算符取代NOT LIKENOT LIKE谓词。谓词。数据库原理及应用数据库原理及应用单表查询单表查询例题三例题三 查询姓王的学生的信息。查询姓王的学生的信息。SELECT *FROM STUDENTWHERE SNAME LIKE 王王%数据库原理及应用数据库原理及应用多表连接查询多表连接查询多表连接查询多表连接查询语句格式:语句格式:SELECT ALL|DISTINCT SELECT ALL|DISTINCT 别名别名.ASAS ,别名别名.ASAS,.,.FROM FROM 1 别名别名1,1, 2 别名别名2,2, WHERE WHERE AND AND 数据库原理及应用数据库原理及应用多表连接查询多表连接查询实现根据系别查询学生的信息:实现根据系别查询学生的信息:例题一例题一 查询软件系学生的信息。查询软件系学生的信息。SELECT SELECT * *FROM STUDENT A,CLASS B,DEPARTMENT CFROM STUDENT A,CLASS B,DEPARTMENT CWHERE A.CLASSNO=B.CLASSNO AND WHERE A.CLASSNO=B.CLASSNO AND B.DEPTNO=C.DEPTNO AND DEPTNAME=B.DEPTNO=C.DEPTNO AND DEPTNAME=软件工程系软件工程系 数据库原理及应用数据库原理及应用多表连接查询多表连接查询例题二例题二 查询软件系查询软件系20072007级学生的信息。级学生的信息。SELECT SELECT * *FROM STUDENT A,CLASS B,DEPARTMENT CFROM STUDENT A,CLASS B,DEPARTMENT CWHERE A.CLASSNO=B.CLASSNO AND B.DEPTNO=C.DEPTNOWHERE A.CLASSNO=B.CLASSNO AND B.DEPTNO=C.DEPTNO AND DEPTNAME= AND DEPTNAME=软件工程系软件工程系 AND INYEAR=2007 AND INYEAR=2007数据库原理及应用数据库原理及应用多表连接查询多表连接查询例题三例题三 查询软件系查询软件系20072007级级2 2班学生的信息。班学生的信息。SELECT SELECT * *FROM STUDENT A,CLASS B,DEPARTMENT CFROM STUDENT A,CLASS B,DEPARTMENT CWHERE A.CLASSNO=B.CLASSNO AND B.DEPTNO=C.DEPTNOWHERE A.CLASSNO=B.CLASSNO AND B.DEPTNO=C.DEPTNO AND DEPTNAME= AND DEPTNAME=软件工程系软件工程系 AND INYEAR=2007 AND INYEAR=2007 AND CLASSNAME=07 AND CLASSNAME=07软件软件2 2班班 数据库原理及应用数据库原理及应用嵌套查询嵌套查询嵌套查询嵌套查询在在SQLSQL语言中,一个语言中,一个SELECT-FROM-WHERESELECT-FROM-WHERE语句称为一语句称为一个查询块。将一个查询块嵌套在另一个查询块的个查询块。将一个查询块嵌套在另一个查询块的WHEREWHERE子句或子句或HAVINGHAVING子句的条件中称为嵌套查询或子句的条件中称为嵌套查询或子查询。子查询。下面给出通过嵌套查询实现上面三个例题的下面给出通过嵌套查询实现上面三个例题的SQLSQL语句。语句。数据库原理及应用数据库原理及应用嵌套查询嵌套查询例题一例题一* * SELECT SELECT * *FROM STUDENT FROM STUDENT WHERE CLASSNO=(SELECT CLASSNO FROM CLASSWHERE CLASSNO=(SELECT CLASSNO FROM CLASS WHERE DEPTNO=(SELECT DEPTNO WHERE DEPTNO=(SELECT DEPTNO FROM DEPARTMENT FROM DEPARTMENT WHERE DEPTNAME= WHERE DEPTNAME=软件工程系软件工程系) ) ) )数据库原理及应用数据库原理及应用嵌套查询嵌套查询例题二例题二* *SELECT SELECT * *FROM STUDENT FROM STUDENT WHERE CLASSNO=(SELECT CLASSNO FROM CLASSWHERE CLASSNO=(SELECT CLASSNO FROM CLASS WHERE INYEAR=2007 AND WHERE INYEAR=2007 AND DEPTNO=(SELECT DEPTNO DEPTNO=(SELECT DEPTNO FROM DEPARTMENT FROM DEPARTMENT WHERE DEPTNAME= WHERE DEPTNAME=软件工程系软件工程系) ) ) )数据库原理及应用数据库原理及应用嵌套查询嵌套查询例题三例题三 * *SELECT SELECT * *FROM STUDENT FROM STUDENT WHERE CLASSNO=(SELECT CLASSNO FROM CLASSWHERE CLASSNO=(SELECT CLASSNO FROM CLASS WHERE CLASSNAME=07 WHERE CLASSNAME=07软件软件2 2班班 AND AND DEPTNO=(SELECT DEPTNO DEPTNO=(SELECT DEPTNO FROM DEPARTMENT FROM DEPARTMENT WHERE DEPTNAME= WHERE DEPTNAME=软件工程系软件工程系) ) ) )数据库原理及应用数据库原理及应用聚集函数聚集函数聚集函数聚集函数SQLSQL的聚集函数是综合信息的统计函数,也称为聚合的聚集函数是综合信息的统计函数,也称为聚合函数或集函数,包括计数、求最大值、求最小值、函数或集函数,包括计数、求最大值、求最小值、求平均值和求和等。聚集函数可作为列标识符出求平均值和求和等。聚集函数可作为列标识符出现在现在SELECTSELECT子句的目标列或子句的目标列或HAVINGHAVING子句的条件中。子句的条件中。数据库原理及应用数据库原理及应用聚集函数聚集函数聚集函数聚集函数具具 体体 用用 法法具具 体体 含含 义义COUNT COUNT COUNT(DISTINCT|ALLCOUNT(DISTINCT|ALL* *) ) 统计元组个数统计元组个数 COUNT COUNT COUNT(DISTINCT|ALL COUNT(DISTINCT|ALL ) ) 统计一列中值的个数统计一列中值的个数 SUM SUM SUM(DISTINCT|ALL SUM(DISTINCT|ALL ) ) 计算一列值的总和计算一列值的总和( (此列必须为此列必须为数值型数值型) ) AVG AVG AVG(DISTINCT|ALL AVG(DISTINCT|ALL ) ) 计算一列值的平均值计算一列值的平均值( (此列必须此列必须为数值型为数值型) ) MAX MAX(DISTINCT|ALL ) 求一列值中的最大值求一列值中的最大值 MIN MIN(DISTINCT|ALL ) 求一列值中的最小值求一列值中的最小值 数据库原理及应用数据库原理及应用聚集函数聚集函数例题一例题一 统计全院学生人数统计全院学生人数. .SELECT COUNT(SELECT COUNT(* *) AS ) AS 全院人数全院人数FROM STUDENTFROM STUDENT数据库原理及应用数据库原理及应用分组与排序分组与排序对查询结果集进行分组对查询结果集进行分组(1) (1) 命令格式:命令格式:GROUP BYGROUP BYHAVINGHAVING。(2) (2) 功能说明:把查询结果集中的各行按功能说明:把查询结果集中的各行按 进行分进行分组,在这些列上,对应值都相同的记录分在同一组。若无组,在这些列上,对应值都相同的记录分在同一组。若无HAVINGHAVING子句,则各组分别输出;若有子句,则各组分别输出;若有HAVINGHAVING子句,只有符子句,只有符合合HAVINGHAVING条件的组才输出。此时,条件的组才输出。此时,SELECTSELECT子句中,只能包子句中,只能包含两种目标列表达式:要么是聚集函数,要么是出现在含两种目标列表达式:要么是聚集函数,要么是出现在GROUP BYGROUP BY子句中的分组字段。子句中的分组字段。当当SELECTSELECT的目标列表达式清单中有聚集函数时,才使用的目标列表达式清单中有聚集函数时,才使用GROUP BYGROUP BY子句。子句。数据库原理及应用数据库原理及应用分组与排序分组与排序例题一例题一 查询各系的总人数。查询各系的总人数。SELECT DEPTNAME SELECT DEPTNAME 系名系名, COUNT(, COUNT(* *) AS ) AS 总人数总人数FROM STUDENT A,CLASS B,DEPARTMENT CFROM STUDENT A,CLASS B,DEPARTMENT CWHERE A.CLASSNO=B.CLASSNO AND WHERE A.CLASSNO=B.CLASSNO AND B.DEPTNO=C.DEPTNOB.DEPTNO=C.DEPTNOGROUP BY DEPTNAMEGROUP BY DEPTNAME数据库原理及应用数据库原理及应用分组与排序分组与排序例题二例题二 统计各系各级的人数统计各系各级的人数. .SELECT DEPTNAME SELECT DEPTNAME 系名系名, INYEAR , INYEAR 年级年级,COUNT(,COUNT(* *) ) AS AS 总人数总人数FROM STUDENT A,CLASS B,DEPARTMENT CFROM STUDENT A,CLASS B,DEPARTMENT CWHERE A.CLASSNO=B.CLASSNO AND WHERE A.CLASSNO=B.CLASSNO AND B.DEPTNO=C.DEPTNO B.DEPTNO=C.DEPTNOGROUP BY DEPTNAME,INYEARGROUP BY DEPTNAME,INYEAR数据库原理及应用数据库原理及应用分组与排序分组与排序例题三例题三 统计各班的人数。统计各班的人数。SELECT CLASSNAME SELECT CLASSNAME 班级班级,COUNT(,COUNT(* *) AS ) AS 总人数总人数FROM STUDENT A,CLASS B FROM STUDENT A,CLASS B WHERE A.CLASSNO=B.CLASSNO WHERE A.CLASSNO=B.CLASSNO GROUP BY CLASSNAMEGROUP BY CLASSNAME数据库原理及应用数据库原理及应用数据查询与统计数据查询与统计l单表查询l 多表连接查询 l 嵌套查询l 聚集函数 l 分组
展开阅读全文