1、第6章 关系数据库标准语言SQL命令,【主要内容】6-1 SQL概述6-2 查询查询,【目的要求】掌握SQL语言的基本概念掌握SQL语言的基本格式掌握SQL语言查询功能,6-1 SQL语言基本概念,1、SQL是结构化查询语言(Structured Query Language的缩写)2、特点:是一种一体化语言是一种高度非过程化语言非常简洁可以以命令方式交互使用(也可以作为程序代码)3、SQL的功能:数据查询数据定义数据操纵数据控制(此功能VFP没有),一.SQL语言概述,二.语句格式及功能1、命令格式 SELECT 目标字段名表; FROM 表名 关联语句; WHERE 筛选条件; ORDER
2、 BY 排序依据; GROUP BY 分组依据 ; HAVING 分组限制条件; INTO /TO 查询去向 NOCONSOLEPLAINNOWAIT,6-1 SQL语言基本概念,2、目标字段名表选项,符合条件的记录数:ALL 所有符合条件的记录(默认)DISTINCT 符合条件者重复的只出现一次TOP n 符合条件者的前n 个记录 必须有ORDER BY子句TOP n PERCENT符合条件者前n%个记录必须有ORDER BY子句所需字段* 表示所有字段表名.字段名 AS 标题,表名.字段名 AS 标题 函数(字段名),支持函数为:count,sum,avg,max,min (称为计算查询)
3、指定字段或要计算的结果COUNT:对一列中的值计算个数;COUNT(*):计算表中记录的个数;SUM 、AVG :求某一列值的总和和平均值(此列必须是数值型)MAX、 MIN :求某一列值的最大值、最小值(可以为字符型、数值、日期),6-1 SQL语言基本概念,6-2 SQL语言查询,一.简单查询 简单查询是指查询的内容来源于一个表文件。举例,1.显示学生表中所有记录、所有字段 select all * from 学生表 或 sele * from 学生表 2.显示成绩表中按学号排列的前10条记录、所有字段sele * top 10 from 成绩表 order by 学号3.显示成绩表中前1
4、0%条记录、部分字段(学号, 课程编号,成绩)、按成绩降序sele top 10 percent 学号,课程编号,成绩 from 成绩表 order by 成绩 desc4.显示学生表中所有记录的姓名、院系、年龄,按年龄降序Sele 姓名,院系,2007-year(出生日期) AS 年龄 from 学生表 order by 年龄 desc5.计算学生表中所有学生的入学成绩的平均分、最高分、最低分sele avg(入学成绩) as 平均入学成绩,max(入学成绩) as 最高成绩,min(入学成绩) as 最低成绩 from 学生表6.显示成绩表中所有不及格的学生的学号、课程编号、成绩Sele
5、学号、课程编号、成绩 from 成绩表 where 成绩450 order by 入学成绩 desc显示显示入学成绩在400-500分之间以上的后3名的学生信息sele top 3 * from 学生表 where 入学成绩 betw 450 and 500 order by 入学成绩,6-2 SQL语言查询,五、分组条件选项 由group by 引导,GROUP BY 字段表:按指定的字段分类(多个字段时按两个字段组合分组)HAVING 条件:只显示符合条件的组使用分组统计时,一般要用GROUP BY 子句例题:按院系分类汇总入学成绩sele 院系,sum(入学成绩) as 入学成绩总分 f
6、rom 学生表 group by 院系 order by 入学成绩总分 desc注意:若只有HAVING语句而无GROUP BY语句,则HAVING语句相当于WHERE语句。,6-2 SQL语言查询,六、排序依据选项 由order by 引导,ORDER BY 字段表:按指定的字段排序,可用多个字段进行多重排序,七、查询去向选项,INTO CURSOR 临时表名送临时表INTO TABLE 表名送表TO FILE 文件名 ADDITIVE送文本文件TO PRINT 送打印机TO SCREEN送屏幕,6-2 SQL语言查询,练习题,用SQL语言写出满足下列查询的命令:1.查询每个学生的姓名、院系
7、、平均成绩,并按平均成绩降序排序。2.查询每门课程的课程名称、平均成绩,并按平均成绩降序排序。3.查询学生表、成绩表、选课表中补考的学生的姓名、院系、课程名称、成绩,并按院系升序排列,生成补考学生表。,问题:显示入学成绩在平均成绩以上的学号,姓名,院系,入学成绩解决:第一步:求平均成绩 sele avg(入学成绩) from 学生表 (假如值为476.78) 第二步:显示在入学成绩平均成绩以上的学号,姓名,院系,入学成绩 sele 学号,姓名,院系,入学成绩 from 学生表 where 入学成绩476.78合并: sele 学号,姓名,院系,入学成绩 from 学生表 where 入学成绩
8、( sele avg(入学成绩) from 学生表) 特点:在SQL语句内还有SQL语句的,称为嵌套查询。书写要求:内层查询要用括号括起来。,八、嵌套查询,6-2 SQL语言查询,内外查询使用不同的表例1:显示计算机系学生的学号,成绩sele 学号,成绩 from 成绩表 where 学号 in (sele 学号 from 学生表 where 院系=计算机)例2:显示成绩没有不及格的学生的院系、学号、姓名,并按院系升序Sele 院系,学号,姓名from 学生表 where not 学号 in (sele 学号 from 成绩表 where 成绩60) order by 院系例:显示计算机基础课的学号,成绩sele 学号,成绩 from 成绩表 where 课程编号 in (sele 课程编号 from 选课表 where 课程名称=计算机基础),6-2 SQL语言查询,作业:1.查询张丽的所有成绩;2.查询计算机系的学生的所有成绩;3.查询大学语文不及格的同学的姓名、院系。,6-2 SQL语言查询,