sql语句作业2 高级查询附答案

发布 2022-07-08 07:12:28 阅读 2117

sql作业2:高级查询。

一、连接查询。

例1.37 查询每个学生及其选修课程的情况。

select students.*,reports.*

from students,reports

where

例1.38 查询每个学生的学号(sno)、姓名(sname)、选修的课程名(cname)及成绩(grade)。

select sname, cname, grade

from students,reports,courses

where and

补例子:查询选修了c01课程且成绩为70分以上的学生学号姓名和成绩。

select

from students,reports

where and 'c01' and grade>70

例1.39 查`询每一门课的间接先修课(即先修课的先修课)。

select ,

from courses a , courses b

where

例1.40把例1.37中的等值连接改为左连接。

select students.*,from students,reports

where

二、嵌套查询。

例1.41 查询选修了编号为“c02”的课程的学生姓名(sname)和所在系(sdept)。

select sname

from students

where in (select sno

from reports

where cno in (select cno

from courses

where cname='数据结构'))

例1.42 查询与“李伟”在同一个系学习的学生学号(sno)、姓名(sname)和系名(sdept)。

select sno, sname, sdept

from students

where sdept in ( select sdept

from students

where sname=’李伟’);

例1.43 查询选修了课程名为“数据结构”的学生学号(sno)和姓名(sname)。

select sno, sname

from students

where sno in ( select sno

from reports

where cno in ( select cno

from courses

where cname='数据结构'))

例1.44 将例1.42改为带有比较运算符的嵌套查询。

select sno, sname, sdept

from students

where sdept= (select sdept

from students

where sname='李伟');

例1.45 查询非自动化系的不超过自动化系所有学生的年龄的学生姓名(sname)和年龄(sage)。

select sname, sage

from students

where sage<=all( select sage

from students

where sdept='自动化') and sdept!='自动化';

或者用下面的方法。

select sname, sage

from students

where sage<=all( select sage

from students

where sdept='自动化') and sdept not in ('自动化')

例1.46 查询所有选修了编号为“c01”课程的学生姓名(sname)和所在系(sdept)。

select sname,sdept

from students

where exists (select sno

from reports

where and cno='c01');

例1.47 将例1.42改为带谓词exists的查询,select sno,sname,sdept

from students

where exists ( select *

from students

where sname='李伟')

例1.48 查询选修了所有课程的学生姓名(sname)和所在系。

select sname,sdept

from students

where exists (select *

from reports

where );

三、集合查询。

例1.49 查询计算机科学系的学生或年龄不大于20岁的学生信息。

select students.*

from students

where sdept='计算机'

unionselect students.*

from students

where sage<=20;

例1.50 查询数学系的学生且年龄不大于20岁的学生的交集,这实际上就是查询数学系中年龄不大于20岁的学生。

select students.*

from students

where sdept='数学'

intersect

select students.*

from students

where sage<=20 ;

例1.51 查询数学系的学生与年龄不大于20岁的学生的差集。

select students.*

from students

where sdept='数学'

minusselect students.*

from students

where sage<=20;

SQL高级查询语句

交互式sql语句。1.1 创建数据库 unis db 日期 及其基本表 学生 课程 选课 1 建立一个 学生 表student,它由学号sno 姓名sname 性别ssex 年龄sage 所在系sdept五个属性组成,其中学号为主属性,ssex默认为 男 年龄大于0。2 建立 课程 表course,...

高级SQL查询语句练习

结合数据库系统原理教学的理论知识,通过实验让学生熟悉高级sql的用法,掌握sql语言的数据定义,及其他高级功能。普通pc windows系列操作系统 ibm db2 v8.1 数据库管理系统。c顾客cid cname city discnt c001 李广天津 10.00 c002 王开基北京 12...

SQL查询语句的高级应用

一 简单查询 简单的transact sql查询只包括选择列表 from子句和where子句。它们分别说明所查询列 查询的 表或视图 以及搜索条件等。例如,下面的语句查询testtable表中姓名为 张三 的nickname字段和email字段。select nickname,email from ...