上海大学数据库上机作业上机练习5作业

合集下载

数据库上机练习题

数据库上机练习题

数据库上机练习题数据库上机练习题在学习数据库课程时,上机练习题是非常重要的一部分。

通过上机练习,我们可以巩固理论知识,提高实践能力,并且更好地理解数据库的概念和应用。

本文将介绍一些常见的数据库上机练习题,帮助读者更好地应对这些挑战。

一、基本查询数据库的基本查询是我们在实际应用中最常用的功能之一。

在上机练习中,我们通常需要编写SQL语句来实现一些简单的查询操作。

比如,查询某个表中的所有记录、按条件筛选记录、排序等等。

举个例子,假设我们有一个学生表,包含学生的学号、姓名、性别和年龄等字段。

我们可以通过以下SQL语句查询所有学生的信息:SELECT * FROM students;如果我们只想查询女生的信息,可以使用以下语句:SELECT * FROM students WHERE gender = '女';二、表的连接在实际应用中,我们经常需要从多个表中获取数据,并进行关联和处理。

上机练习中,表的连接是一个常见的考点。

通过表的连接,我们可以根据某个字段将两个或多个表关联起来,从而获取更丰富的信息。

举个例子,假设我们有一个学生表和一个课程表,学生表中包含学生的学号和姓名,课程表中包含课程的编号和名称。

我们可以使用以下SQL语句查询每个学生所选的课程:SELECT , FROM studentsINNER JOIN coursesON students.student_id = courses.student_id;三、子查询子查询是数据库中非常有用的一种技术,它可以将一个查询的结果作为另一个查询的输入。

在上机练习中,我们经常需要使用子查询来解决一些复杂的问题。

举个例子,假设我们有一个订单表和一个产品表,订单表中包含订单的编号和产品的编号,产品表中包含产品的编号和价格。

我们可以使用以下SQL语句查询每个订单的总金额:SELECT order_id,(SELECT SUM(price) FROM products WHERE products.product_id =orders.product_id) AS total_priceFROM orders;四、数据更新除了查询,数据库还提供了数据更新的功能。

上海大学数据库选修上机练习5

上海大学数据库选修上机练习5

《数据库系统与应用》上机习题*************************************************************************************************第五部分、SQL高级应用要求掌握:熟练掌握T-SQL语言,了解异常处理的相关语句,学会用游标方式对数据库进行操作。

一、做书上第十章的例题二、写出书上198页练习题10中第7、8、9、11题的结果,并上机验证。

完成第12、13、14题7、数据库中没有stud表8、9、重复插入ID的值11、12、编写一个程序,采用游标的方式输出所有课程的平均分use schoolgoset nocount ondeclare @s_cj int,@s_name char(8)declare c_cursor cursor forselect score、课程号,AVG(score、分数)from scoregroup by score、课程号order by score、课程号open c_cursorfetch next from c_cursor into @s_cj,@s_namewhile@@FETCH_STATUS=0beginprint CAST(@s_cj as char(8))+@s_namefetch next from c_cursor into @s_cj,@s_nameendclose c_cursordeallocate c_cursorgo13、编写一个程序,使用游标的方式输出所有学号,课程号,成绩等级use schooldeclare @s_xh int,@c_name char(8),@s_cj float,@dj char(1) declare c_cursor cursor forselect student、学号,score、课程号,score、分数from score,studentwhere score、学号=student、学号group by student、学号,score、课程号,score、分数order by student、学号beginset @dj=CASEwhen @s_cj>=90 then'A'when @s_cj>=80 then'B'when @s_cj>=70 then'C'when @s_cj>=60 then'D'else'E'endopen cfetch next from c_cursor into @s_xh,@c_name,@s_cjprint'学号课程号等级'print'---------------------------'while@@FETCH_STATUS=0beginprint @s_xh+' '+@c_name+' '+@s_cjfetch next from c_cursor into @s_xh,@c_name,@s_cjendclose c_cursordeallocate c_cursor14、编写一个程序,输出各班各课程的平均分use schoolgoset nocount ondeclare @s_cj int,@s_name char(8),@s_bj char(8)declare c_cursor cursor forselect student、班级,score、课程号,AVG(score、分数)from score,studentgroup by score、课程号,student、班级order by score、课程号,student、班级open c_cursorfetch next from c_cursor into @s_cj,@s_name,@s_bjprint'学号班级成绩'print'-------------------'while@@FETCH_STATUS=0beginprint CAST(@s_cj as char(8))+@s_name+@s_bjfetch next from c_cursor into @s_cj,@s_name,@s_bjendclose c_cursordeallocate c_cursorgo三、完成书上394页上机实验题3(1)对各出版社的图书比例情况进行分析,即图书比例高于50%为“很高”,图书比例高于30%为“'较高”,图书比例高于10%为“一般”。

数据库上机实验题目和答案

数据库上机实验题目和答案

试用SQL的查询语句表达下列查询:1.检索王丽同学所学课程的课程号和课程名。

select Cno ,Cname from c where Cno in(select cno from sc where sno in (select sno from s where sname='王丽' ))2.检索年龄大于23岁的男学生的学号和姓名。

select sno,sname from swhere sex='男' and age>233.检索‘c01’课程中一门课程的女学生姓名select sname from swhere sex='女' and sno in(select sno from sc where cno='c01')4.检索s01同学不学的课程的课程号。

select cno from cwhere cno not in (select cno from sc where sno ='s01')5.检索至少选修两门课程的学生学号。

select sc.sno from s,scwhere s.sno=sc.snogroup by sc.snohaving count(o)>=26.每个学生选修的课程门数。

解法一:select so.sno sno,ount,s.snamefrom(select sc.sno sno,count(sc.sno) ccountfrom sc,swhere s.sno=sc.snogroup by sc.sno ) so,swhere s.sno=so.sno解法二:select sc.sno sno,s.sname,count(sc.sno) ccountfrom sc,swhere s.sno=sc.snogroup by sc.sno,sname7.求选修C4课程的学生的平均分。

《数据库技术与应用》上机大作业

《数据库技术与应用》上机大作业

《数据库技术与应⽤》上机⼤作业数据库⼤作业1、查询XS表中的所有列。

use XSCJselect *from XS;2、查询XS表中计算机专业同学的学号、姓名和总学分。

use XSCJselect 学号,姓名,总学分from XSwhere 专业名= '计算机';3、查询XS表中计算机专业同学的学号、姓名和总学分,结果中各列的标题分别指定为number、name和mark。

use XSCJselect 学号as number , 姓名as name , 总学分as markfrom XSwhere 专业名= '计算机';4、查询XS表中通信⼯程专业总学分⼤于等于42的学⽣情况。

use XSCJselect *from XSwhere 专业名= '通信⼯程' and 总学分>= 42;5、查询XS表中姓“王”且单名的学⽣情况。

use XSCJselect *from XSwhere 姓名like '王_';6、查询XS表中不在1979年出⽣的学⽣情况。

use XSCJselect *from XSwhere 出⽣时间not between '1979-01-01' and '1979-12-31';7、查询选修了课程号为101的学⽣情况。

use XSCJselect *from XSwhere 学号in ( select 学号from XS_KCwhere 课程号= '101');8、查询未选修离散数学的学⽣情况。

use XSCJselect *from XSwhere 学号not in ( select 学号from XS_KC where 课程号in ( select 课程号from KC where 课程名= '离散数学'));9、查询⽐所有计算机系的学⽣年龄都⼤的学⽣情况。

上海大学数据库上机作业上机练习5作业

上海大学数据库上机作业上机练习5作业

上大学数据库上机作业《数据库系统与应用》上机习题*************************************************************************************************第五部分、SQL高级应用一、做书上第十章的例题二、利用上次上机的学生_课程数据库1. 求选修了高等数学的学生学号和姓名。

USE学生课程SELECT学生.学号,姓名,选课.课程号FROM学生,选课,课程WHERE学生.学号=选课.学号AND课程.课程号=选课.课程号AND课程名='高等数学'2.求C1课程的成绩高于张三的学生学号和成绩。

USE学生课程SELECT x.学号,x.成绩FROM选课x,选课yWHERE x.课程号='C1'AND x.成绩>y.成绩AND y.学号='S4'AND y.课程号='C1'ORDER BY x.学号DESC第二种:USE学生课程SELECT学号,成绩FROM选课WHERE课程号='C1'AND成绩>(SELECT成绩FROM选课,学生WHERE课程号='C1'AND姓名='张三'AND选课.学号=学生.学号)3.求其他系中比自动化学院某一学生年龄小的学生。

USE学生课程SELECT学号,姓名,年龄,单位FROM学生WHERE年龄<(SELECT MAX(年龄)FROM学生WHERE单位='自动化学院')AND单位!='自动化学院'ORDER BY学号DESC4.求其他系中比自动化学院学生年龄都小的学生。

USE学生课程SELECT学号,姓名,年龄,单位FROM学生WHERE年龄<(SELECT MIN(年龄)FROM学生WHERE单位='自动化学院')AND单位!='自动化学院'ORDER BY学号DESC5.求选修了C2课程的学生的姓名。

数据库上机作业5

数据库上机作业5

实验5 SQL的数据操纵功能实验目的学会使用MS SQL SERVER 2000的查询分析器完成SQL的数据操纵功能,主要包括数据插入、删除与修改。

知识点拨:1.数据插入语法格式:2.数据修改语法格式:3.数据删除语法格式:4.SELECT … INTO…语句的使用:实验内容1.数据插入2.数据修改3.数据删除4.SELECT … INTO…语句:实验步骤1.选择数据库JX;注意:以下操作请验证结果!2.数据插入:1)向学生表加入一条记录,其学号、姓名、性别和系别分别为:(’06011’,’王文娟’,’女’,’计算机’);INSERTINTO Student (Sno,Sname,Ssex,Sdept)V ALUES('06011','王文娟','女','计算机')2)向学生表加入一条记录,其姓名、性别和系别分别为:(’王娟’,’女’,’计算机’),观察运行结果;INSERTINTO Student (Sname,Ssex,Sdept)V ALUES('王娟','女','计算机')运行结果:不能将值NULL 插入列'Sno',表'JX.dbo.Student';列不允许有空值。

INSERT 失败。

3)创建一个与学生信息表结构完全相同的基本表CP_Student,用以存储计算机和外国语系学生信息;CREATE TABLE CP_Student(Sno CHAR(5)PRIMARY KEY,Sname V ARCHAR(10)UNIQUE,Ssex CHAR(2),Sbirth SMALLDA TETIME,Sdept V ARCHAR(20),Total SMALLINT)4)将Student中计算机系和外国语系的学生信息插入到CP_Student;INSERTINTO CP_StudentSELECT*FROM StudentWHERE Sdept IN('计算机','外国语')3.数据修改:1)把教师“王芳”改为“王芳龄”;UPDATE TeacherSET Tname='王芳龄'WHERE Tno='2'2)将职称是副教授的教师工资提高2%;UPDATE TeacherSET Tpay=Tpay*1.02WHERE Tprof='副教授'3)将计算机系和外国语系学生的考试成绩分别下调4%和增加2分;UPDATE StudentSET Total=Total*0.96WHERE Sdept='计算机'UPDATE StudentSET Total=Total+2WHERE Sdept='外国语'4)把李强同学的所有分数都加1分;(可使用UPDA TE。

上海大学数据库上机作业上机练习4作业(最新整理)

上海大学数据库上机作业上机练习4作业(最新整理)

上大学数据库上机作业《数据库系统与应用》上机习题*************************************************************************************************第四部分、SQL查询━━嵌套和组合统计查询要求掌握:利用SQL查询语言表达嵌套查询语句以及数据查询中的统计计算和组合操作。

1、做书上第九章余下的例题,并完成书上练习题9中第11、12、13、14题11.if exists(SELECT*FROM sys.objects WHERE name=student)12.二、利用图书_读者数据库1. 求机械工业出版社出版的各类图书的平均价。

USE图书读者SELECT类别,AVG(定价)AS平均价FROM图书WHERE出版社='机械工业出版社'GROUP BY类别2. 求各类图书的最高价、最低价、图书的数量。

USE图书读者SELECT类别,MAX(定价)AS最高价,MIN(定价)AS最低价,COUNT(*)AS数量FROM图书GROUP BY类别3. 查找图书类别,要求类别中最高的图书定价不低于全部按类别分组的图书平均定价的1.5倍。

USE图书读者SELECT类别FROM图书WHERE定价=ALL(SELECT MAX(定价)FROM图书WHERE定价<=ALL(SELECT AVG(定价)*1.5FROM图书))4.计算机类和机械工业出版社出版的图书。

USE图书读者SELECT*FROM图书WHERE出版社='机械工业出版社'AND类别='计算机'5.查询所有读者借阅过的书,要求按读者姓名、书名来排序。

USE图书读者SELECT读者.编号,借阅.读者编号,姓名,书名FROM图书,读者,借阅WHERE读者.编号=借阅.读者编号AND借阅.书号=图书.书号ORDER BY姓名6. 查询所有在2008.11.15日以后被借阅过的图书名及借阅者。

计算机三级数据库技术(上机操作)机试模拟试卷47(题后含答案及解析)

计算机三级数据库技术(上机操作)机试模拟试卷47(题后含答案及解析)

计算机三级数据库技术(上机操作)机试模拟试卷47(题后含答案及解析)全部题型 2. 程序设计题程序设计题1.设有n个人坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数。

报数到第m个人。

此人出圈,再从他的下一个人重新开始从1到m报数。

如此进行下去直到所有的人都出圈为止。

先要求按出圈次序,每10个人为一组,给出这n个人的顺序表。

请编写函数Josegh( )实现此功能,并调用函数WriteDat( )把编号按照出圈顺序输出到文件out.dat中。

设n=100,S=1。

m=10进行编程。

【试题程序】#include&lt;stdio.h&gt; #define N 100 #define S 1 #define M 10 int p[-loo’],n,s,m; void WriteDat(void);void Josegh(void) { } void main( ) { m=M;n=N;s=S;Josegh( );WriteDat( ); } void WriteDat(void) { int i:FILE*fp; fp=fopen(”out.dat”,”W”);for(i=N一1li&gt;=0;i一一){ printf(”%4d”.p[i]); fprintf(fp,‘%4 d’,p[i]); if(i%10==O){ printf(“\、n”)} fprintf(fP,“\n”);} } fclose(fp);} 正确答案:void Josegh(void){int i.j,temp;/*定义变量*/for(i=0;i&lt;n;i++)/*人员编号*/p[i]=i+1;s=0; for(i=n;i&gt;=2;i一一) /*依次出圈*/{s=(s+m一1)%it temp=pFs];for(j=s;j&lt;i一1,j++) p[j]=p[j+1];p[i—1]=temp; }}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

上大学数据库上机作业
《数据库系统与应用》上机习题*************************************************************************************************
第五部分、SQL高级应用
一、做书上第十章的例题
二、利用上次上机的学生_课程数据库
1. 求选修了高等数学的学生学号和姓名。

USE学生课程
SELECT学生.学号,姓名,选课.课程号
FROM学生,选课,课程
WHERE学生.学号=选课.学号AND课程.课程号=选课.课程号AND课程名='高等数学'
2.求C1课程的成绩高于张三的学生学号和成绩。

USE学生课程
SELECT x.学号,x.成绩
FROM选课x,选课y
WHERE x.课程号='C1'AND x.成绩>y.成绩AND y.学号='S4'AND y.课程号='C1'
ORDER BY x.学号DESC
第二种:
USE学生课程
SELECT学号,成绩
FROM选课
WHERE课程号='C1'AND成绩>(SELECT成绩FROM选课,学生WHERE课程号='C1'
AND姓名='张三'AND选课.学号=学生.学号)
3.求其他系中比自动化学院某一学生年龄小的学生。

USE学生课程
SELECT学号,姓名,年龄,单位
FROM学生
WHERE年龄<(SELECT MAX(年龄)FROM学生
WHERE单位='自动化学院')AND单位!='自动化学院'
ORDER BY学号DESC
4.求其他系中比自动化学院学生年龄都小的学生。

USE学生课程
SELECT学号,姓名,年龄,单位
FROM学生
WHERE年龄<(SELECT MIN(年龄)FROM学生
WHERE单位='自动化学院')AND单位!='自动化学院'
ORDER BY学号DESC
5.求选修了C2课程的学生的姓名。

USE学生课程
SELECT姓名
FROM学生,选课
WHERE学生.学号=选课.学号AND课程号='C2'
6.求没有选修C2课程的学生的姓名。

USE学生课程
SELECT DISTINCT姓名
FROM学生,选课
WHERE学生.学号=选课.学号AND姓名not in(SELECT姓名
FROM学生,选课WHERE学生.学号=选课.学号AND选课.课程号='C2')
7.查询选修了C1、C2、C3、C7全部四门课程的学生的姓名。

USE学生课程
SELECT姓名
FROM学生
WHERE学号in(SELECT学号FROM选课WHERE课程号='C1')
AND学号in(SELECT学号FROM选课WHERE课程号='C2')
AND学号in(SELECT学号FROM选课WHERE课程号='C3')
AND学号in(SELECT学号FROM选课WHERE课程号='C7')
第二种:
USE学生课程
SELECT姓名
FROM学生,选课
WHERE学生.学号=选课.学号AND课程号in('C1','C2','C3','C7')
GROUP BY姓名
HA VING COUNT(*)=4
8.求至少选修了学号为S2的学生所选修的全部课程的学生的学号和姓名。

USE学生课程
SELECT学生.学号,姓名
FROM学生,选课
WHERE学生.学号=选课.学号AND选课.课程号
in(SELECT课程号FROM选课WHERE学号='S2')
AND选课.学号!='S2'
GROUP BY学生.学号,姓名
HA VING COUNT(选课.学号)
>=(SELECT COUNT(*)FROM选课WHERE学号='S2')
9.选修了C1课程,同时也选修C2课程的学生学号。

USE学生课程
SELECT学号
FROM选课
WHERE课程号='C1'AND学号in(SELECT学号FROM选课WHERE课程号='C2') 10.求学生总人数。

USE学生课程
SELECT COUNT(学号)AS总人数
FROM学生
11.求课程和选修该课程的人数。

USE学生课程
SELECT选课.课程号,课程名,COUNT(学号)AS选修该课程人数
FROM选课,课程
WHERE选课.课程号=课程.课程号
GROUP BY选课.课程号,课程名
12.求选修课超过3门的学生学号。

USE学生课程
SELECT学号,COUNT(课程号)AS选课数
FROM选课
GROUP BY学号
HA VING COUNT(课程号)>3
13.编写一个程序,计算各学院的总人数及男女生的人数,生成下图的查询。

USE学生课程
SELECT单位,COUNT(*)AS总人数,
SUM(CASE性别WHEN'男'THEN 1 ELSE 0 END)AS男生人数,
SUM(CASE性别WHEN'女'THEN 1 ELSE 0 END)AS女生人数
FROM学生
GROUP BY单位。

相关文档
最新文档