数据库基础与应用复习一
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学生表:
课程表:
选课表:
数据库基础与应用复习(一)
必须要熟悉书上的两个数据库实例
1.
教学库:包括学生、课程和选课三个基本表
它们的定义分别为:
学生(学生号 char(7),姓名 char(6),性别 char(2), 专业 char(10)) 课程(课程号 char(4),课程名 char(10),课程学分 int) 选课(学生号 char(7),课程号 char(4),成绩 int) 2. 商品库:包括商品表 1 和商品表 2 两个基本表
它们的定义分别为:
商品表1(商品代号char(8),分类名char(8),单价float,数量int)
商品表2(商品代号char(8),产地char(6),品牌char(6))
商品表1:
商品表2:
根据主教材第四章所给的商品库和教学库,按照下列所给的每条SQL查询语句写出相应的功能
1.select x.商品代号,分类名,数量,品牌
from商品表1x,商品表2y
where x.商品代号=y.商品代号
从商品库中查询出每一种商品的商品代号、分类名、数量和品牌等信息
2.select distinct产地
from商品表2
从商品库中查询出所有商品的不同产地
3.select distinct品牌
from商品表2
从商品库中查询出所有商品的不同品牌
4.select count(distinct产地)as产地数
from商品表2
从商品库中查询出所有商品的不同产地的总数
5.select x.商品代号,分类名,产地,品牌
from商品表1x,商品表2y
where x.商品代号=y.商品代号and(品牌='熊猫'or品牌='春兰')
从商品库中查询出品牌为熊猫或春兰的所有商品的商品代号、分类名、产地和品牌等信息
6.select学生.学生号,count(*)as选课门数
from学生,选课
where学生.学生号=选课.学生号
group by学生.学生号
从教学库中查询出每个学生的选课门数
7.select课程.课程号,课程.课程名,count(*)as选课人数
from课程,选课
where课程.课程号=选课.课程号
group by课程.课程号,课程.课程名
从教学库中查询出每门课程的选课学生数
8.select distinct x.*
from学生x,选课y,选课z
where y.学生号=z.学生号and y.课程号<>z.课程号and x.学生号=y.学生号从教学库中查询出至少选修了两门课程的全部学生
9.select*
from学生
where学生号in(select学生号
from选课
group by学生号having count(*)=1)
从教学库中查询出只选修了一门课程的全部学生
10.select x.学生号,y.学生号,y.课程号
from选课x,选课y
where x.学生号=@s1and y.学生号=@s2and x.课程号=y.课程号
注:一个由字母开头的标识符再加上@字符前缀,则表示为一个变量,假定已保存着一个相应值。
从教学库中查询出学生号为@s1的学生和学生号为@s2的学生所选修的共同课程的课
程号
11.select x.*
from课程x,选课y
where x.课程号=y.课程号and y.学生号=@s1
and y.课程号not in(select课程号
from选课
where选课.学生号=@s2)
从教学库中查询出学生号为@s1的学生所选修、而学生号为@s2的学生没有选修的全部课程
12.select*
from课程
where not exists(select*
from选课
where课程.课程号=选课.课程号)
从教学库中查询出所有未被学生选修的课程
13.select*
from课程
where exists(select*
from选课
where课程.课程号=选课.课程号)
从教学库中查询出所有已被学生选修的课程
14.select*
from课程
where exists(select课程号
from选课
where课程.课程号=选课.课程号
group by课程号having count(*)between2and4)从教学库中查询出被2至4名学生选修的所有课程
15.select*
from学生
where exists(select*
from选课
where学生.学生号=选课.学生号
group by选课.学生号having count(*)=3)从教学库中查询出同时选修了3门课程的全部学生
16.select*
from学生
where学生号in(select学生号
from选课
group by学生号having count(*)<=2)or
not exists(select*
from选课
where学生.学生号=选课.学生号)从教学库中查询出最多选修了2门课程(含未选任何课程)的全部学生
17.select专业,count(*)as专业人数
from学生
group by专业
order by专业人数desc
从教学库中查询出每个专业的学生人数,并按人数多少降序排列
18.select专业,性别,count(*)as人数
from学生
group by专业,性别
order by专业
从教学库中查询出每个专业每种性别的学生人数,并按专业升序排列
19.select x.*,课程名,课程学分,成绩
from学生x,课程y,选课z
where x.学生号=z.学生号and y.课程号=z.课程号
order by x.学生号,z.成绩
从教学库中查询出每个学生选课的全部情况,并依次按学生号和成绩升序排列20.select*
from学生
where not exists(select y.课程号
from学生x inner join选课y on x.学生号=y.学生号
where x.姓名=@a and not exists(select*
from选课
where学生.学生号=选课.学生号
and y.课程号=选课.课程号)
)
从教学库中查询出选修了姓名为@a的学生的全部选课的所有学生