第5章2 SQL.ppt_第1页
第5章2 SQL.ppt_第2页
第5章2 SQL.ppt_第3页
第5章2 SQL.ppt_第4页
第5章2 SQL.ppt_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、3、 使用WHERE 子句查询特定的记录。 SELECT FROM WHERE 1) 关系表达式 说明: (1)关系表达式字符型数据之间的比较是对字符的ASCII值进行比较。 (2)字符串的比较是从左到由依次进行的。 (3)日期字符串可以按照“年月日”的格式书写。 关系运算符:=、=、!=或,2 )逻辑表达式 逻辑运算符:OR、AND、NOT 3) 特殊运算符,4 )有关关系运算符的使用 例:列出性别为女的学生姓名、家庭住址 SELECT name ,address FROM student_info where sex=女 例:列出1980年以后出生的学生的基本情况。 SELECT * FR

2、OM student_info where born_date 1980-12-31,5) 有关逻辑运算符的使用 例:列出所有家住“武汉市”的男学生姓名、家庭住址 Select name , address from student_info where substring(address,1,3)=武汉市 and sex=男 例:列出2001班或电话号码以“87”开头同学姓名、性别和电话号码 Select name , sex , tele_no from student_info where class_no=2001 OR SUBSTRING(tele_no ,1,2)=87 例:列出所

3、有年龄不是23岁的学生姓名、性别和出生日期 Select name , sex , born_date from student_info where not (year(getdate()-year(born_date)=23) 或 Select name , sex , born_date from student_info where (year(getdate()-year(born_date)!=23,例:列出年龄不为1820岁的所有学生名单 Select * from student_info where (year(getdate()-yaer(born_date) not be

4、tween 18 and 20 例:列出所有注释内容为空的学生姓名: Select name from student_info where comment IS NULL 例:列出2006和2007班学生的学号、姓名和性别 Select ID,Name,Sex from student_info where class in (2006,2007) 例:列出既不是2001班,也不是2002班学生的学生信息 Select * from student_info where class not in (2006,2007),例:列出所有“刘”姓且为双名的学生 Select * from stud

5、ent_info where name like 刘_ 例:列出所有刘姓、王姓的学生姓名: Select name from student_info where name like 刘,王% 例:列出所有电话号码第2个数为“7”,并以“88”结尾的学生的学号和姓名 Select ID,Name from student_info where tele_no like _7%88,4、 使用ORDER BY 子句对查询结果排序。 1) “ORDER BY”子句的基本格式 SELECT FROM WHERE ORDER BY ASC | DESC , 2) “ORDER BY”子句应用实例。 例

6、:将student_info 表中的学生按出生时间先后顺序排序 SELECT * FROM student_info ORDER BY born_date 例:列出2005年元旦前入学的学生名单,要求查询结果按入学时间降序显示,若入校时间相同,则按学号升序排列。 Select * from student_info where ru_date19 and sex=女,3)MAX和MIN函数的应用 MAX和MIN函数分别用于求表达式中所有值项的最大值和最小值,语句格式为: MAX / MIN (ALL|DISTINCT表达式 其中表达式是常量、列、函数或表达式,其数据类型可以是数字、字符和时间日

7、期类型。 例:查找年龄最大者和最小的学生出生日期。 Select MIN(born_date))年龄最大,MAX(born_date)年龄最小 From student_info 例:查询学号为2006的学生考试成绩中的最高分Select MAX(resullt) 最高分 From student_info where ID=2006,4)AVG函数的应用 AVG函数求表达式中所有项的平均值: 语法格式:AVG(ALL | DISTINCT 表达式) 其中表达式是常量、列、函数或表达式。ALL表示对所有值进行运算,DISTINCT表示去除重复值,默认为ALL。AVG忽略NULL值。 例:求出第

8、一学期所开课程的平均课时和平均学分。 Select AVG(course_time) 平均课时 , AVG(course_score) 平均学分 FROM course_info WHERE course_start=1,5)SUM函数的应用 SUM函数用于求表达式中所有项的总合。其格式为: SUM(ALL | DISTINCT 表达式) 其中表达式是常量、列、函数或表达式。ALL表示对所有值进行运算,DISTINCT表示去除重复值,默认为ALL。SUM 忽略NULL值。 例:求出第一学期所开课程的总课时和总学分。 SELECT sum(course_time) 总课时, sum(course

9、_score) 总学分 FROM course_info WHERE course_start=1,2、使用GROUP BY子句对表进行分组 利用SQL的GROUP BY子句,能够快速而简便地将查询结果表按照指定的字段进行分组,值相等的记录分为一组。 GROUP BY子句一般和SQL的聚合函数一起使用。 基本格式: SELECT FROM GROUP BY ,例:统计各班学生的总人数: SELECT class_no , COUNT(student_id) 学生人数 FROM student_info GROUP BY class_no 例:统计男、女学生各自的总人数和平均年龄。 SELECT

10、 COUNT(student_id) 总人数, AVG(year(getdate()-year(born_date) 平均年龄 FROM student_info GROUP BY student_sex,1)使用ORDER BY子句对统计结果排序 例:统计各班学生的总人数并按总人数从大到小排序 SELECT class_no , COUNT(student_id) 学生人数 FROM student_info GROUP BY class_no ORDER BY COUNT(student_id) DESC 例:按图书类别统计其平均价格并按平均价格从低到高排序 SELECT type,AVG

11、(price)average price FROM titles GROUP BY type HAVING typeUNDECIDED ORDER BY AVG(price) ASC,2 )使用HAVING子句筛选结果表: 在实际使用中,往往还要对分组后的结果按某种条件再进行筛选,而只输出满足用户指定条件的记录。在SQL中,HAVING子句能完成此功能。 “WHERE”子句和“HAVING”子句的区别在于作用对象不同: WHERE子句的作用对象是表,是从表中选择出满足筛选条件的记录。 HAVING子句的作用对象是组,是从组中选择出满足筛选条件的记录。 例:将总人数大于45的班级学生总人数显示出

12、来。 SELECT class_no 班级名, COUNT(student_id) 总人数 FROM student_info GROUP BY class_no HAVING COUNT(student_id)45,3)GROUP BY 子句中的ALL选项 如果使用 ALL 关键字,那么查询结果将包括由 GROUP BY 子句产生的所有组,即使某些组不符合WHERE子句指定的条件的行。没有 ALL 关键字,包含 GROUP BY 子句的 SELECT 语句将只显示符合WHERE条件的行的组。 例: USE pubs SELECT type, AVG(price) FROM titles WH

13、ERE royalty = 10 GROUP BY ALL type,4)使用GROUP BY子句应注意: (1)在GROUP BY子句中不能使用集合函数。 (2)必须在GROUP BY子句中列出SELECT选择列表中所有的非集合项。,3、COMPUTE子句 生成合计作为附加的汇总列出现在结果集的最后。当与 BY 一起使用时,COMPUTE 子句在结果集内生成控制中断和分类汇总(分组统计)。可在同一查询内指定 COMPUTE BY 和 COMPUTE。 )语法 COMPUTE AVG | COUNT | MAX | MIN | STDEV | STDEVP | VAR | VARP | SUM

14、 ( expression ) ,.n BY expression ,.n ,)参数: AVG | COUNT | MAX | MIN | STDEV | STDEVP | VAR | VARP | SUM 指定要执行的聚合。 AVG:数字表达式中所有值的平均值 COUNT:选定的行数 MAX:表达式中的最高值 MIN:表达式中的最低值 STDEV:表达式中所有值的统计标准偏差 STDEVP:表达式中所有值的填充统计标准偏差 SUM:数字表达式中所有值的和 VAR:表达式中所有值的统计方差 VARP:表达式中所有值的填充统计方差,)使用规则 ()在集合函数中不能使用DISTINCT关键字。 (

15、)COMPUTE 子句中的统计列必须包含在SELECT语句的选择列表中。 ()由于COMPUTE 子句产生非标准行,所以包含COMPUTE子句的SELECT语句中以能使用INTO关键字将查询结果写入表中。 () COMPUTE BY子句必须与ORDER BY子句同时联合使用,并且COMPUTE BY子句的统计列名列表必须与ORDER BY子句中的相同,或为其子集,且二者从左到右的排列顺序必须一致。,)例:使用简单 COMPUTE 子句生成 titles 表中 price 及 advance 的求和总计: USE pubs SELECT type, price, advance FROM titles ORDER BY type COMPUTE SUM(price), SUM(advance) 例:在 COMPUTE 子句中加入可选的 BY 关键字,以生成每个组的小计: USE pubs SELECT type, price, advance FRO

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论