第三章VF中SQL语言的应用2.ppt
文本预览下载声明
1检索学生表中的学号、姓名、性别和籍贯
2求所有学生在2004年的年龄
3求1987年以后出生的学生学号和姓名
4查找入学成绩大于等于600的同学的学号、姓名和入学成绩
5查找入学成绩在570分以上的女性学生,显示学号、姓名、性别和入学成绩
6入学成绩在500到600间的学生学号、姓名和入学成绩
7求籍贯为“江西南昌”或“吉林”的学生学号、姓名和籍贯
8查找江西籍的男性学生的学号和姓名
9求学生表中入学成绩在600分以上的人数
10求学生表中入学成绩的平均成绩
11按课程类别号,求各种类别课程的门数
;*;select …where 姓名 like “李%”
select ….where at(“李”,姓名)0
select …..where like(“李*”,姓名)
三个是等价的。
Like是SQL语言中的,因此,通配符是:%和_.
说明: _ 替代一个字符,
%替代多个字符。
Like()是VFP自带的函数,通配符是:*和?.
说明: ? 替代一个字符,
* 替代多个字符。
;简单的计算查询:
计算平均值avg(cj) as 平均成绩
计算总分:sum(cj) as 总成绩
求最高值:max(cj) as 最高分
求最小值:min(cj) as 最低分
;4.2.2 多表查询 ;select * from 学生表,成绩表的结果;带Where子句的多表查询;例4-31:将学生表和课程表进行自然联接,求结果集。
select * from 学生表,成绩表;
where 学生表.学号 = 成绩表.学号 ;4.2.2 多表查询(工作原理);上述SELECT语句的等价SQL语句如下:
select * ;
from 学生表 inner join 成绩表 ;
on 学生表.学号 = 成绩表.学号
inner join(内联接):这是最普通的联接类型。只输出满足连接条件的元组
outer join(外联接):分为left outer join(左外联接)和right outer join(右外联接),以指定表为连接主体,将主体表中不满足连接条件的元组一并输出
full join:完整外部联接,返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。;4.2.2 多表查询(工作原理);4.2.2 多表查询(工作原理);例4-33:将“学生表”、“成绩表”和“课程表”进行自然联接,求结果
select *;
from 学生表,成绩表,课程表;
where 学生表.学号 = 成绩表.学号;
and 课程表.课程号 = 成绩表.课程号
分析:将三个表进行自然连接,需要两个连接条件。先将“学生表”和“成绩表”自然联接,得到一个关系表,其中包含字段是“学生表”和“成绩表”字段的叠加。再将得到的关系表与“课程表”进行自然联接。最终的结果是将三个表的字段叠加,但记录是在“成绩表”的基础上扩展相关字段得到。
当然也可以理解为先进行“课程表”与“成绩表”的自然联接,然后再用得到的关系与“学生表”进行自然联接。;4.2.2 多表查询(工作原理);4.2.2 多表查询(工作原理);4.2.2 多表查询(工作原理);4.2.2 多表查询(举例);例4-35:求计算机科学技术2003-01班的所有成绩单
分析:已知条件为“班级表”中的“专业名称”,待求为“学生表”的“姓名”;“课程表”的“课程号、课程名”;“成绩表”的“成绩”。
select 姓名,课程表.课程号,课程名,成绩;
from 学生表,成绩表,课程表,班级表;
where 学生表.学号 = 成绩表.学号;
and 课程表.课程号 = 成绩表.课程号;
and 班级表.班级号 = 学生表.班级号;
and 专业名称 = 计算机科学技术2003-01班;例4-36:求“计算机科学技术2003-01班”的《微机操作》成绩单。
select 姓名,课程表.课程号,课程名,成绩;
from 学生表,成绩表,课程表,班级表;
where 学生表.学号 = 成绩表.学号;
and 课程表.课程号 = 成绩表.课程号;
and 班级表.班级号 = 学生表.班级号;
and 专业名称 = 计算机科学技术2003-01班;
and 课程名 = 微机操作;下面我们给出多表查询中使用GROUP BY子句的例子。
例4-37:求每个学生所修的总学分数。
select 姓名,sum(学分);
from 学生表,成绩表,课程表;
where 学生表.学号 = 成绩表.学号;
and 课程表.课程号 = 成绩表.课程号;
显示全部