数据库基础与应用复习一

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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的学生的全部选课的所有学生

相关文档
最新文档