第3章作业解答参考文档格式.docx
- 文档编号:20430277
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:18
- 大小:19.83KB
第3章作业解答参考文档格式.docx
《第3章作业解答参考文档格式.docx》由会员分享,可在线阅读,更多相关《第3章作业解答参考文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
Integer
班级人数
Monitor
班长学号
Grade
学号
课程号
Gmark
Decimal(4,1)
成绩
图1成绩管理数据库中的表结构
2000101
李勇
男
20
00311
2000102
刘诗晨
女
19
2000103
王一鸣
00312
2000104
张婷婷
21
2001101
李勇敏
01311
2001102
贾向东
22
2001103
陈宝玉
2001104
张逸凡
1
数据库
4
2
离散数学
3
管理信息系统
操作系统
5
数据结构
6
数据处理
7
C语言
计算机软件
2000
120
计算机应用
140
2001
220
92
88
86
78
55
65
66
54
83
70
80
90
76
56
图2成绩管理数据库中的数据
设习题二中第10题成绩管理数据库的表结构说明中加入了完整性约束说明,如图3-6所示,请用SQL语句完成图中约束的说明。
完整性约束
主码
男或女,默认为男
大于14,小于65
学生所在班级号
外部码,级联
1、2、3、4、5、6之一
班级号
大于1,小于100
外部码
主属性,外部码,级联
大于0,小于100`
图3加了约束说明后的表结构
--创建course表
createtablecourse
(
cnochar
(1)primarykey,
cnamevarchar(20)notnull,
creditsmallint
)
--创建class表
createtableclass
clnochar(5)primarykey,
specialityvarchar(20)notnull,
inyearchar(4)notnull,
numberinteger,
monitorchar(7)
--创建student表
createtablestudent
snochar(7)primarykey,
snamevarchar(20)notnull,
ssexchar
(2)notnull,
sagesmallint,
clnochar(5)notnullforeignkey(clno)referencesclass(clno)ondeletecascade
--为class表添加参照完整性
altertableclass
addconstraintmonitorforeignkey(monitor)referencesstudent(sno)ondeletenoaction
--创建grade表
createtablegrade
snochar(7)notnullforeignkey(sno)referencesstudent(sno)ondeletecascade,
cnochar
(1)notnullforeignkey(cno)referencescourse(cno)ondeletecascade,
gmarkdecimal(4,1)
--插入数据class
insertintoclass(clno,speciality,inyear,number)
values('
00311'
'
计算机软件'
2000'
120)
--插入数据course
insertintocourse
1'
数据库'
4)
--插入数据student
insertintostudent
2000101'
李勇'
男'
20,'
--修改数据class
updateclass
setmonitor='
whereclno='
--插入数据grade
insertintograde
92)
11.针对以上四个表,用SQL语言完成以下各项操作:
1给学生表增加一属性Nation(民族),数据类型为Varchar(20);
altertablestudent
addnationvarchar(20)
②删除学生表中新增的属性Nation;
dropcolumnnation
③向成绩表中插入记录(”2001110”,”3”,80);
values('
2001101'
3'
80)
④修改学号为”2001110”的学生的成绩为70分;
updategrade
setgmark=70
wheresno='
⑤删除学号为”2001110”的学生的成绩记录;
deletegrade
fromgrade
⑥为学生表创建一个名为IX_Class的索引,以班级号的升序排序;
createindexIX_Class
onstudent(clnoasc)
⑦删除IX_Class索引。
dropindexstudent.IX_Class
12.针对以上四个表,用SQL语言完成以下各项查询:
①找出所有被学生选修了的课程号;
selectdistinctcno
②找出01311班女学生的个人信息;
select*
fromstudent
01311'
andssex='
女'
3出01311班、01312班的学生姓名、性别、出生年份;
selectsname,ssex,2010-sageasbirthyear
orclno='
01312'
4找出所有姓李的学生的个人信息;
wheresnamelike'
李%'
⑤找出学生李勇所在班级的学生人数;
--使用连接查询
selectnumber
fromclass,student
whereclass.clno=student.clnoandsname='
--或使用嵌套子查询
fromclass
whereclno=
(selectclno
fromstudent
wheresname='
②找出课程名为操作系统的平均成绩、最高分、最低分;
selectavg=avg(gmark),max=max(gmark),min=min(gmark)
fromgrade,course
whereo=oandcname='
操作系统'
⑦找出选修了课程的学生人数;
selectcount(distinctsno)as选课人数
⑧找出选修了课程操作系统的学生人数;
selectcount(sno)as选操作系统人数
selectcount(*)as选操作系统人数
wherecno=
(selectcno
fromcourse
wherecname='
⑨找出2000级计算机软件班的成绩为空的学生姓名。
Selectsname
Fromstudent,grade,class
Wherestudent.sno=grade.snoandstudent.clno=class.clno
andspeciality='
andinyear='
andgmarkisnull
Fromstudent
Wheresnolike'
2000%'
andclnoin
(selectclno
fromclass
wherespeciality='
andsno=any
(selectsnofromgrade
wheregmarkisnull))
4.针对以上四个表,用SELECT的嵌套查询完成以下各项查询:
1找出与李勇在同一个班级的学生信息;
select*
whereclno=(
selectclno
fromstudent
wheresname=’李勇’)
2找出所有与学生李勇有相同选修课程的学生信息;
wheresnoin
(selectdistinctsno
fromgrade
wherecnoin
(selectcno
fromgrade
wheresno=
(selectsno
fromstudent
wheresname=’李勇’)))
3找出年龄介于学生李勇和25岁之间的学生信息;
wheresagebetween
(selectsage
wheresname=’李勇’)and25
--使用自身连接查询
selects1.*
fromstudents1,students2
wheres1.sagebetweens2.sageand25ands2.sname='
ands2.sno<
s1.sno
4找出选修了课程操作系统的学生学号和姓名;
selectsno,sname
(selectsno
wherecno=
(selectcno
fromcourse
wherecname=’操作系统’))
--或使用相关子查询
selectsname,sno
whereexists
(select*
wheresno=student.snoandcno=
(selectcno
fromcourse
wherecname=’操作系统’))
--或使用连接查询
selectstudent.sno,sname
fromstudent,grade,course
wherestudent.sno=grade.snoando=o
andame=’操作系统’
5找出所有没有选修1号课程的学生姓名;
selectsname
wheresnonotin
(selectsno
fromgrade
wherecno=1)
`
--或使用all关键字
wheresno<
>
all
wherenotexists
(select*
wheresno=student.snoandcno=1)
⑥找出选修了全部课程的学生姓名。
(提示:
可找出这样的学生,没有一门课程是他不选修的。
fromcourse
wherenotexists
(select*
fromgrade
wheregrade.sno=student.snoando=o))
14.针对以上四个表,用SQL语言完成以下各项查询:
1查询选修了3号课程的学生学号及其成绩,并按成绩的降序排列;
selectsno,gmark
wherecno=’3’
orderbygmarkdesc
2查询全体学生信息,要求查询结果按班级号升序排列,同一班级学生按年龄降序排列;
orderbyclno,sagedesc
3求每个课程号及相应的选课人数;
selectcno,count(distinctsno)as选课人数
groupbycno
--包括没被选修课程及其相应的选课人数,方法一,使用并集:
union
selectcno,0
fromcourse
wherecno<
(selectcno
fromgrade)
--包括没被选修课程及其相应的选课人数,方法二,使用外连接查询:
selecto,count(distinctsno)as选课人数
fromcourse,grade
whereo*=o
groupbyo
4查询选修了3门以上课程的学生学号。
Selectsno
Fromgrade
Groupbysno
Havingcount(cno)>
=3
15.针对以上四个表,用SQL语言完成以下各项操作:
1对每个班,求学生的平均年龄,并把结果存入数据库;
--方法一,使用into关键字
selectclno,avg(student.sage)asavg_age
intot_avgage
groupbyclno
--方法二,先新建表,后带子查询的插入数据
createtables_avg
(clnochar(6)primarykey,
avg_ageint)
go
insertintos_avg
selectclno,avg(sage)
方法三,使用视图的方式,但注意视图只保存查询定义并不存放实际数据:
createviews_avg_age
as
selectclno,avg(sage)asavg_age
groupbyclno
2将01311班的全体学生的成绩置零;
setgmark=0
wheresnoin(selectsno
whereclno=’01311’)
3删除2001级计算机软件的全体学生的选课记录;
错解:
delete
fromgrade,student,class
wheregrade.sno=student.snoandstudent.clno=class.clno
andspeciality=’计算机软件’andinyear=’2001’
正解:
deletefromgrade
whereclnoin
(selectclno
fromclass
whereinyear=’2001’
andspeciality=’计算机软件’))
4学生李勇已退学,从数据库中删除有关他的记录。
]
--删除grade表中李勇同学选课记录
wheresno=
(selectsno
fromstudent
wheresname=’李勇’)
--修改李勇所在班级人数
updateclass
setnumber=number-1
whereclno=
fromstudent
wheresname=’李勇’)
--若李勇是班长,则还应修改该班级班长的数据
setmonitor=null
whereclno=
(selectclno
--删除student表中李勇学生记录
wheresname=’李勇’
16.视图操作:
1建立01312班选修了1号课程的学生视图Stu_01312_1;
createviewStu_013121_1
selectstudent.sno,sname,ssex,sage,clno
fromstudent,grade
wherestudent.sno=grade.snoandclno=01312andcno=1
2建立01312班选修了1号课程并且成绩不及格的学生视图Stu_01312_2;
createviewStu_013121_2
selectStu_013121_1.*
fromStu_013121_1,grade
whereStu_013121_1.sno=grade.snoandgmark<
60
3建立视图Stu_year,由学生学号、姓名、出生年份组成。
CreateviewStu_year
As
Selectsno,sname,2002-sageasbirth_year
Fromstudent
4查询1983年以后出生的学生姓名。
FromStu_
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 作业 解答 参考