《2011关系数据库语言SQL-2》由会员分享,可在线阅读,更多相关《2011关系数据库语言SQL-2(40页珍藏版)》请在金锄头文库上搜索。
1、第四章 关系数据库语言 SQL4.2 查询语句4.2.1 基本查询 4.2.2 使用列表达式 4.2.3 WHERE从句的进一步使用 4.2.4 数据汇总 4.2.5 连接查询 4.2.6 嵌套查询 4.2.7 联合查询 4.2.8 使用系统内置函数的查询SQL查询语句的完整语法描述如下: SELECT ALL|DISTINCT , FROM , WHERE GROUP BY HAVING ORDER BY ASC|DESC ;温故知新: 回忆: WHERE从句常用的查询条件 查询条件谓词比较=,=,!,!)统计一列中值的个数 Sum (distinct | all)求一列值的总合(数 值型)
2、 Avg (distinct | all)求一列值的平均数 Max (distinct | all)求一列值中的最大值 Min (distinct | all)求一列值中的最小值例:查询学生总数 例题1:比较: select count(*) as 学生数 from stu_info 和 select count(xh) from stu_info(因为学号是主码,所以没有空值,以上计算结果相同)例题2:select count(bh) from stu_infoselect count (distinct bh) from stu_info若将bh 换成 xbm?例:查询学生选修高等数学的最
3、高分和最低分。 Select max(kscj) as 高等数学最高分,min(kscj) as 高等数学最低分 From xk Where kch=090101例:已知数据库表XK中高等数学课程的代码为 090101,查询学生选修高等数学的平均成绩: select avg(KSCJ) as 高数平均分 from XK where KCH=090101(2)GROUP BY子句Group by 子句将查询结果表按某一列或多列值 分组,值相等的分为一组。常常与聚合函数联合使 用,用于针对分组进行统计汇总,使的每个分组都 有一个函数值。 如:在表xk中查询各课程编号及相应的选课人数 SELECT
4、kch,count(xh) as 选课人数 FROM xk GROUP BY kch 如何理解Group by 思考: 用销售人员编号来分组的话,分几组? 结果是一个关系(二维表)吗?有几个元祖? 用count能求出什么?用sum能求出什么? 还可以用什么来分组?(3)HAVING 短语HAVING短语指定分组或聚合的条件。只 有满足条件的分组才被选出来,列出来,HAVING 通常与GROUP BY子句一起使用。例:查询选修了3门以上课程的学生及选课数:SELECT XH, COUNT(*) FROM xk GROUP BY XH HAVING (COUNT(*) 3)例:只查询选修了3门以上
5、课程的学号前4 位是2010的学生的学号及选课数。SELECT XH, COUNT(*) FROM xk WHERE (XH LIKE 2010%) /位置不能放后面 GROUP BY XH HAVING (COUNT(*) 3)Where与having 有什么区别?Having 短语指定选择组的条件,只有 满足条件的组才被选出来。Where子句从基本表中选择满足条件的 元组,而不是指定满足条件的分组,这 是二者的根本区别。若一个查询同时涉及两个以上的表,称为连接 查询。连接查询是关系数据库中最主要的查询,包括 等值连接、自然连接、非等值连接、自身连接、外 连接、内连接、左连接、右连接查询。我
6、们重点学 习的是等值连接。4.2.5 连 接 查 询连接查询中用来连接两个关系的条件称为 连接条件或连接谓词,格式:.其中比较运算符主要有:=、=、ALL|ANY例:查询其他班级中比物理012班某个学生年龄小的 学生的姓名和年龄Select xm,nl,bh from stu_info Where nl物理012延伸select xh,nl,xm from stu_info where nl=60 AND KSCJ=70 AND KSCJ=80 AND KSCJ=90 THEN 优秀END FROM XKWHERE KCH=090101cast(表达式 AS 数据类型):将表达式的值转换 为数据类型参数所指定的类型。参数表达式可以任何 有效的数据类型,数据类型是系统提供的基本类型,不 能为用户自定义类型。 例:查询选课表,其中KSCJ、XH等数据类型都 是CHAR,现要查询考试成绩在50-60分的学生及成绩 ,并将成绩加10分显示。SELECT XH, KSCJ,CAST(KSCJ AS FLOAT)+10 AS 加分后成绩 FROM XK WHERE KSCJ LIKE 5_