为什么php做不了大网站,兴扬汽车网站谁做的,wordpress 用户授权,买国外空间哪个网站好目录
检索查询
题目一
题目二
题目三
题目四
题目五
题目六
题目七
题目八
题目九#xff08;本篇最难的题目#xff09;
分析
实现#xff08;两种方式#xff09; 模板
总结 检索查询
按照要求查找数据库中的数据
题目一
找出没有选修任何课程的学…目录
检索查询
题目一
题目二
题目三
题目四
题目五
题目六
题目七
题目八
题目九本篇最难的题目
分析
实现两种方式 模板
总结 检索查询
按照要求查找数据库中的数据
题目一
找出没有选修任何课程的学生的学号、姓名(即没有选课记录的学生
select sid,name
from pub.student
where sid in ((select sid from pub.student)minus(select distinct sidfrom pub.student_course)
) 关键点 1、没有选修任何课的学生所有学生-选了课的学生 所有学生select sid from pub.student 选了课的学生select distinct sid from pub.student_course 2、减号就是minus关键字 题目二
找出至少选修了学号为“200900130417”的学生所选修的一门课的学生的学号、姓名(不包含这名同学)。
select sid,name
from pub.student
where sid in((select distinct sidfrom pub.student_coursewhere cid in (select cidfrom pub.student_coursewhere sid200900130417))minus(select sidfrom pub.studentwhere sid200900130417)
) 关键点 找“200900130417”学号的学生选修的全部课程——》找pub.student_course中cid在全部课程中的选课记录——》拿出sid在pub.student中进一步获取name 题目三
找出至少选修了一门其先行课程号为“300002”号课程的学生的学号、姓名。 select sid, namefrom pub.studentwhere sid in(select sidfrom pub.student_coursewhere cid in ( select cidfrom pub.student_coursewhere pcid300002)
) 关键点 1、找先行课程号为“300002”号的课程——》找pub.student_course中cid在前面课程中的选课记录——》拿出sid在pub.student中进一步获取name 2、题目二和题目三的思路是相似的 题目四
找出选修了“操作系统”并且也选修了“数据结构”但是没有选修“程序设计语言”的学生的学号、姓名。
select sidnamefrom pub.studentwhere sid in((select sidfrom pub.student_coursewhere cid(select cidfrom pub.coursewhere name操作系统))intersect(select sidfrom pub.student_coursewhere cid(select cidfrom pub.coursewhere name数据结构))minus(select sidfrom pub.student_coursewhere cid(select cidfrom pub.coursewhere name程序设计语言)))关键点 1、干了A并且干了B但没有干CA的结果 交 B的结果 减 C的结果 2、intersect关键字取交集 题目五 找出姓名叫“李龙”的学生的学号及其选修全部课程的课程号、课程名和成绩。
create view test3 as
select sidcid,pub.course_name,score
from pub.student natural join pub.student_course natural join pub.course
where pub.student_name李龙
create view test2_05 asselect sid,cid,name,scorefrom pub.student_course natural join pub.coursewhere sid in(select sidfrom pub.studentwhere name李龙)关键点 1、 第一个代码是错误的。因为pub.student和pub.course中都有name属性而这两者自然连接显然是不合理的 2、将三个自然连接拆为两个自然连接一个嵌套select语句 题目六
查询2010级、计算机科学与技术学院、操作系统的学生成绩表内容有学号、姓名、成绩。 select sid,name,scorefrom pub.student_course natural join pub.studentwhere class2010 and dname计算机科学与技术学院 and cid(select cidfrom pub.coursewhere name操作系统)关键点 1、同样考察自然连接的应用 题目七
查询所有不姓张、不姓李、也不姓王的学生的学号sid、姓名name
select sid,name
from pub.student
where name not like 张%
and name not like 李%
and name not like 王%关键点 1、 不姓Anot like ‘A% 2、 名字不叫Bnot like ‘%B’ 题目八
找出有间接先行课的所有课程的课程号、课程名称。
select cid ,name
from pub.course
where fcid in (select cidfrom pub.coursewhere fcid is not NULL
) 关键点 1、 不为空is not NULL 2、间接关系的处理例祖孙关系 题目九本篇最难的题目
找出选修了所有课程的学生的学号、姓名。
分析
第一想法拿出所有课程——》令pub.student_course选用sidcid除取所有课程cid——》得到sid这个sid所选用的课程就是全部课程
问题是SQL语言不提供直接可以用的除运算
实现两种方式
方法一、
select sid,name
from pub.student
where not exists(select cidfrom pub.coursewhere not exists(select * from pub.student_coursewhere pub.student_course.cidpub.course.cid and pub.student_course.sidpub.student.sid)
)方法二、
select sid,name
from pub.student
where not exists((select cidfrom pub.course)minus(select cidfrom pub.student_coursewhere pub.student_course.sidpub.student.sid)
) 模板
查询做了所有至少A的B
SELECT * FROM S
WHERE NOT EXISTS(SELECT * FROM C WHERE C.cno IN (C001,C002)AND NOT EXISTS(SELECT * FROM SCWHERE SC.cno C.cno AND SC.sno S.sno )
)总结 本文的所有题目均来自《数据库系统概念》黑宝书、山东大学数据库实验二。不可用于商业用途转发。 如果能帮助到大家大家可以点点赞、收收藏呀~