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 ...