多表查询.ppt

上传人:李医生 文档编号:9325742 上传时间:2021-02-18 格式:PPT 页数:16 大小:1.16MB
返回 下载 相关 举报
多表查询.ppt_第1页
第1页 / 共16页
多表查询.ppt_第2页
第2页 / 共16页
多表查询.ppt_第3页
第3页 / 共16页
多表查询.ppt_第4页
第4页 / 共16页
多表查询.ppt_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《多表查询.ppt》由会员分享,可在线阅读,更多相关《多表查询.ppt(16页珍藏版)》请在三一文库上搜索。

1、学生与教师 教师与课程,A.教师=B.教师,问题的提出,4 多表查询,涉及2表及2表以上的查询为连接查询,连接查询中,用来连接两个表的条件为连接条件。格式为: . 比较运算符为:=、 =、 != 字段名:连接字段类型必须是可比的,连接字段不一定同名 等值连接:比较运算符为 =,否则为非等值连接,1)等值连接(P108/2) (P129/3),例题 列出学生的课程成绩和学生的全部信息 SELECT 学生表.*,课程号,成绩 FROM 学生表,成绩表 WHERE 学生表.学号=成绩表.学号,2) 自身连接 (P108)(P129/3),在特定问题中,连接操作是一个表自己和自己进行连接,这种连接为自

2、身连接。 例题 列出先修课的先修课 这种情况,一定要假设有两个“一模一样”的表,例题 列出先修课的先修课 SELECT F.课程号,S.先修课 先修课的先修课 FROM 课程表 F, 课程表 S WHERE F.先修课=S.课程号,3)复合条件连接,在WHERE 字句中,有多个连接条件称为复合连接,例题 列出软件2班学生的成绩,要求输出班级名, 学号,姓名、课程名,成绩 SELECT 班级名,A.学号,姓名,课程名,成绩 FROM 学生表 A,成绩表 B, 课程表 C WHERE (A.学号=B.学号) AND (B.课程号=C.课程号) AND 班级名=软件2班,公共属性需指明表文件名,学号

3、 姓名 性别 年龄 所在院系 班级名 入学年份,学生表 A,例题 列出选修了“C801”课程并且成绩在90分以上学生的学号、姓名、所在院系和班级名 SELECT A.学号,姓名,所在院系,班级名 FROM 学生表 A,成绩表 B WHERE A.学号=B.学号 AND 课程号 =C801 AND 成绩90,4) 嵌套查询 (P111/2) (P/134/3) SELECT-FROM-WHERE 是一个查询块,在WHERE中可以包含另一个查询,这种结构称为嵌套查询. 外层查询:最上层的查询 子查询:子句中的查询块,结构化的含义:SQL中的S含义,体现在以层层嵌套的方法来构造查询语句,例题 查询”

4、沈香娜”同学所在班级的所有学生名单,沈香娜 班级名 所有学生名,SELECT 学号,姓名,性别,年龄,所在院系,班级名 FROM 学生表 WHERE 班级名=(SELECT 班级名 FROM 学生表 WHERE 姓名=沈香娜),例题 列出选修了”离散数学”的学生的学号;姓名和所在院系,离散数学名离散数学号 选修了此课程的学号学生,SELECT 学号,姓名,所在院系 FROM 学生表 WHERE 学号 IN (SELECT 学号 FROM 成绩表 WHERE 课程号 IN (SELECT 课程号 FROM 课程表 WHERE 课程名=离散数学),5) 带有EXISTS的子查询(P113/2)(P

5、134/2),SELECT 学号,姓名,年龄,所在院系 FROM 学生表 WHERE EXISTS(SELECT * FROM 成绩表 WHERE 学号 = 学生表.学号 ),例题 查询选修了任意一门课程的学生学号,姓名,年龄,所在院系,【EXISTS】是表之间的关系。在【SELECT】列表中不需要指定字段名,而用【SELECT *】来代替。,在 WHERE条件【学生表学号】中引用了【学生表】,这个表在子查询中没有声明。因为【学生表】已在外查询中围部分声明了。,【EXISTS】通常使用一个关联子查询。外围查询的每一条记录在子查询中测试是否满足条件。,使用【EXISTS】后,若内层查询结果为空,

6、则外层的【WHERE】子句返回假值,否则返回真值。,SELECT 学号,姓名,年龄,所在院系 FROM 学生表 WHERE 年龄=(SELECT MAX(年龄) FROM 学生表),例题 列出年龄最大的学生名单,SELECT 学号,姓名,年龄,所在院系 FROM 学生表 WHERE 年龄(SELECT AVG(年龄) FROM 学生表) ORDER BY 年龄,例题 按顺序显示年龄超过平均年龄的学生名单,6 )在WHERE 子句中使用集合函数,SELECT A.学号,姓名,所在院系,班级名,成绩 FROM 学生表 A,成绩表 B WHERE A.学号=B.学号 AND 课程号=C801 AND

7、 成绩= (SELECT MAX(成绩) FROM 成绩表 WHERE 课程号=C801),例题 列出选修C801最高成绩的学生名单:学号,姓名,所在院系,班级名,成绩,SELECT * FROM 学生表 WHERE 所在院系=计算机,例题 显示计算机系学生或选修了C803课程学生名单,SELECT * FROM 学生表 WHERE EXISTS (SELECT * FROM 成绩表 WHERE 学号=学生表.学号 and 课程号=C803),UNION,7 )UNION: 并操作(P115/2)(P136/3),8) INTO 子句,创建一个永久表或临时表,记录由SELECT 查询结果组成,即查询的输出结果输出到所创建的表文件中 符号 # 为临时表标识,SELECT * INTO 计算机系学生 FROM 学生表 WHERE 所在院系=计算机 查看 SELECT * FROM 计算机系学生,例题 查询计算机系的学生,查询结果用表文件保存,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1