SQL练习创建数据库数据查询数据更新
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库作业-相关操作练习
班级:计算机1103B 学号:2009080305302 姓名:傅笔贵
1、创建数据库
用SQL语句创建上述三个表,包括完整性约束(实体、参照、用户定义)S表创建:(完整性约束写于编辑表里):
S表插入:
S表:
C表创建:
C表插入:(由于学时书上没给,因此自行编写)
C表:
SC表创建:
SC表插入:
SC表:
2、数据查询
1)查询信息系学生中的最大年龄、最小年龄、平均年龄
2)查询学生“李勇“选修了哪些课程(列出课程名称及成绩)
3)查询选修了数据库类课程的学生学号、姓名
4)查询成绩大于90分的学生学号、姓名、课程名称、成绩
5)统计每个系的学生人数
6)查询“数据库”课程的最高分、最低分和平均分
7)统计每个学生的选课门数,并按选课门数的递增顺序显示结果
8)统计各系修课的学生总数和考试的平均分
9)查询平均成绩80分以上的学生学号、姓名,所在系
10)查询学生的选课情况,要求列出每位学生的选课情况(包括位选课的学生),
包括:学生学号、姓名、课程号、修课成绩
11)列出“数据库”课程成绩前三名的学号、姓名、所在系和成绩
12)查询哪些课程无人选修
13)统计每门课的最高、最低、平均分
14)列出3门以上课程不及格的学生学号、姓名、所在系
(无人3门以上课程不及格,可喜可贺)
15)列出所有课程全部及格的学生学号、姓名、所在系
16)按学号统计每位学生的学分(>60分有学分)
3、数据更新
1)将一个新学生记录(学号:95020;姓名:陈冬;性别:男;所在系:IS;年龄:18岁)插入到S表中。
插入语句:
插入结果:
2)插入一条选课记录( '95020','C01 ')。
插入语句:
插入结果:
3)将每门课的最高分、最低分、平均分插入数据库
(没明白题的意思)
4)求学生的平均年龄,并把结果存入数据库
(同样没明白这是要干什么)
5)将信息系所有学生的数据库课程的成绩提高10%。
由于分数超过90的学生提高10%成绩会超过100分,违背用户自定义完整性约束,因此加上额外条件Grade<=90。
6)在S表中删除四门以上课程不及格的学生记录。
4、视图操作
1)创建信息系选修了数据库课程的学生视图。
创建视图语句:
创建结果:
2)通过视图检索信息系数据库课程成绩大于80分的学生记录(学号、姓名、性
别、成绩)
3)将所有学生的学号及其平均成绩定义为一个视图
创建视图语句:
创建视图结果:
4)检索平均成绩大于80分的学生学号、姓名,平均分
5)创建视图(修课成绩在平均成绩之上的元组构成)
创建语句:
其中利用到的另一个视图temp1的创建语句如下:
创建结果:
首先是temp1的创建结果:
其次是利用了视图temp1的S4的创建结果:
6)修课成绩在平均成绩之上的同学,该课程成绩加10%。
由于存在用户自定义完整性约束,因此在成绩提高10%之后会超过100分的学生,成绩自动变为100分。
因为(5)中创建的视图中含有聚集函数,因此无法直接更新,采用下述方法完成题目要求:
通过这个方法,存在bug,解法存疑。