




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
孙和平刘天民张静孙和平刘天民张静孙和平刘天民张静孙和平刘天民张静教师计算机网络计算机网络数据库计算机网络计算机网络数据库计算机网络计算机网络数据库计算机网络计算机网络数据库课程孙和平S2孙和平S2张静S2张静S2刘天民S1刘天民S1张静S1张静S1孙和平张静刘天民张静教师S2S2S1S1学生孙和平张静刘天民张静教师计算机网络S2数据库S2计算机网络S1数据库S1课程学生孙和平张静刘天民张静教师S2S2S1S1学生孙和平刘天民张静教师计算机网络计算机网络数据库课程学生与教师教师与课程A.教师=B.教师问题的提出4多表查询
涉及2表及2表以上的查询为连接查询连接查询中,用来连接两个表的条件为连接条件。格式为:[<表名1>.]<字段名1><比较运算符>[<表名2>.]<字段名2>比较运算符为:=、<、>、<=、>=、!=字段名:连接字段类型必须是可比的,连接字段不一定同名等值连接:比较运算符为‘=’,否则为非等值连接1)等值连接(P108/2)(P129/3)例题列出学生的课程成绩和学生的全部信息SELECT学生表.*,课程号,成绩
FROM学生表,成绩表
WHERE学生表.学号=成绩表.学号学号姓名性别年龄所在院系班级名入学年份课程号成绩200203001刘成涛男18计算机软件2班2002-08-27C80198200203001刘成涛男18计算机软件2班2002-08-27C80299200203002沈香娜女18计算机软件2班2002-08-27C80470200206001李涛男19电子学电子1班2002-08-27C80185200206002李涛男19电子学电子1班2002-08-27C803822)自身连接(P108)(P129/3)在特定问题中,连接操作是一个表自己和自己进行连接,这种连接为自身连接。例题
列出先修课的先修课
这种情况,一定要假设有两个“一模一样”的表课程号课程名先修课C801高等数学NULLC802C语言C807C803数据结构C802C804数据库原理C803C805操作系统C807C806编译原理C803C807离散数学NULLF课程号课程名先修课C801高等数学NULLC802C语言C807C803数据结构C802C804数据库原理C803C805操作系统C807C806编译原理C803C807离散数学NULLSS例题
列出先修课的先修课SELECTF.课程号,S.先修课‘先修课的先修课’
FROM课程表F,课程表S WHEREF.先修课=S.课程号3)复合条件连接
在WHERE字句中,有多个连接条件称为复合连接
例题列出软件2班学生的成绩,要求输出班级名,学号,姓名、课程名,成绩SELECT班级名,A.学号,姓名,课程名,成绩
FROM学生表A,成绩表B,课程表C WHERE(A.学号=B.学号)AND(B.课程号=C.课程号) AND班级名=‘软件2班’公共属性需指明表文件名学号姓名性别年龄所在院系班级名入学年份学生表A学号课程号成绩成绩表B课程表C课程号课程名先修课教师名课程号班级名学时数授课表D例题列出选修了“C801”课程并且成绩在90分以上学生的学号、姓名、所在院系和班级名SELECTA.学号,姓名,所在院系,班级名FROM学生表A,成绩表BWHEREA.学号=B.学号AND课程号='C801'AND成绩>904)嵌套查询
(P111/2)(P/134/3)SELECT-FROM-WHERE是一个查询块,在WHERE中可以包含另一个查询,这种结构称为嵌套查询.外层查询: 最上层的查询
子查询: 子句中的查询块
结构化的含义:SQL中的‘S’含义,体现在以层层嵌套的方法来构造查询语句
例题
查询”沈香娜”同学所在班级的所有学生名单
沈香娜班级名所有学生名
SELECT学号,姓名,性别,年龄,所在院系,班级名FROM学生表WHERE班级名=(SELECT班级名
FROM学生表
WHERE姓名='沈香娜')例题列出选修了”离散数学”的学生的学号;姓名和所在院系离散数学名离散数学号选修了此课程的学号→学生SELECT学号,姓名,所在院系FROM学生表WHERE学号IN(SELECT学号
FROM成绩表
WHERE课程号IN(SELECT课程号
FROM课程表
WHERE课程名='离散数学'))200009001葛文聊女22国际贸易国贸2班2000-08-29200104019邓绣莉女21会计学会计1班2001-09-2200203001刘成涛男18计算机软件2班2002-08-27200206001李涛男19电子学电子1班2002-08-27200203002沈香娜女18计算机软件2班2002-08-27200206002李涛男19电子学电子1班2002-08-27200203003肖竹一女19计算机软件2班2002-08-27200203001C80198200203002C80470200206001C80185200203001C80299200206002C803825)带有EXISTS的子查询(P113/2)(P134/2)SELECT学号,姓名,年龄,所在院系FROM学生表WHEREEXISTS(SELECT* FROM成绩表
WHERE学号=学生表.学号)例题查询选修了任意一门课程的学生学号,姓名,年龄,所在院系【EXISTS】是表之间的关系。在【SELECT】列表中不需要指定字段名,而用【SELECT*】来代替。在WHERE条件【学生表·学号】中引用了【学生表】,这个表在子查询中没有声明。因为【学生表】已在外查询中围部分声明了。【EXISTS】通常使用一个关联子查询。外围查询的每一条记录在子查询中测试是否满足条件。使用【EXISTS】后,若内层查询结果为空,则外层的【WHERE】子句返回假值,否则返回真值。SELECT学号,姓名,年龄,所在院系
FROM学生表
WHERE年龄=(SELECTMAX(年龄)FROM学生表)例题列出年龄最大的学生名单SELECT学号,姓名,年龄,所在院系
FROM学生表
WHERE年龄>(SELECTAVG(年龄) FROM学生表)ORDERBY年龄例题按顺序显示年龄超过平均年龄的学生名单6)在WHERE子句中使用集合函数SELECTA.学号,姓名,所在院系,班级名,成绩
FROM学生表A,成绩表B WHEREA.学号=B.学号AND课程号=‘C801‘AND成绩=(SELECTMAX(成绩) FROM成绩表
WHERE课程号='C801')例题列出选修‘C801’最高成绩的学生名单:学号,姓名,所在院系,班级名,成绩SELECT* FROM学生表
WHERE所在院系='计算机'例题显示计算机系学生或选修了‘C803’课程学生名单SELECT* FROM学生表
WHEREEXISTS(SELECT* FROM成绩表
WHERE学号=学生表.学号and课程号=‘C803’)UNION7)UNION:并操作(P1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论