上海大学数据库上机作业上机练习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

《数据库系统与应用》上机习题*************************************************************************************************第五部分、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作业

上大学数据库上机作业《数据库系统与应用》上机习题*************************************************************************************************第五部分、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 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作业(最新整理)

上大学数据库上机作业《数据库系统与应用》上机习题*************************************************************************************************第四部分、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(题后含答案及解析)全部题型 2. 程序设计题程序设计题1.设有n个人坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数。
报数到第m个人。
此人出圈,再从他的下一个人重新开始从1到m报数。
如此进行下去直到所有的人都出圈为止。
先要求按出圈次序,每10个人为一组,给出这n个人的顺序表。
请编写函数Josegh( )实现此功能,并调用函数WriteDat( )把编号按照出圈顺序输出到文件out.dat中。
设n=100,S=1。
m=10进行编程。
【试题程序】#include<stdio.h> #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>=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<n;i++)/*人员编号*/p[i]=i+1;s=0; for(i=n;i>=2;i一一) /*依次出圈*/{s=(s+m一1)%it temp=pFs];for(j=s;j<i一1,j++) p[j]=p[j+1];p[i—1]=temp; }}。
数据库期末上机试题参考答案

公司数据库由下面三个表组成:上机测试题目:要求完成以下操作:一、使用SQL命令创建名为‘corporation’的公司数据库(参数自己定义)。
(5分)CREATE DATABASE corporationON(name=CP_dat,filename="'+ @data_path+'saledat.mdf",size=8,maxsize=10,filegrowth=1)LOG ON(name=sales_log,filename ="'+@data_path +'salelog.ldf",size=1mb,filegrowth=1mb)二、分别将公司数据库中雇员、部门、工作三个表命名为Employee、Department、work。
按照上述表格内容创建这三个数据表(列名使用汉语拼音),并向三个数据表输入数据。
(5分)USE corporationGO--创建雇员表CREATE TABLE Employee (emp_no char(3) NOT NULL,emp_name char(6) NULL,age INT NULL,address nchar(2) NULL,sal INT NULL)INSERT INTO Employee V ALUES('E01', 'tom', 35, '广州',8000)INSERT INTO Employee V ALUES('E02', 'dennis',24,'顺德',5000)INSERT INTO Employee V ALUES('E03', 'john ',20,'广州',4000)INSERT INTO Employee V ALUES('E04', 'rick',41,'顺德',7000)INSERT INTO Employee V ALUES('E05', 'bill',45,'河源',7500)INSERT INTO Employee V ALUES('E06', 'frank',35,'广州',6000)INSERT INTO Employee V ALUES('E07', 'jank',25,'佛山',3000)INSERT INTO Employee V ALUES('E08', 'mike',23,'佛山',3500)--创建部门表CREATE TABLE Department (dep_no char(3) NOT NULL,dep_name nvarchar(2) NULL,dep_manager char(3) NULL)INSERT INTO Department V ALUES('D01','人事','E04')INSERT INTO Department V ALUES('D02','信息','E01')INSERT INTO Department V ALUES('D03','销售','E05')INSERT INTO Department V ALUES('D04','财务','E06')--创建工作表CREATE TABLE work (emp_no char(3) NULL,dep_no char(3) NULL,dep_year INT NULL)INSERT INTO work V ALUES('E01','D02',6)INSERT INTO work V ALUES('E01','D03',1)INSERT INTO work V ALUES('E01','D04',2)INSERT INTO work V ALUES('E02','D01',2)INSERT INTO work V ALUES('E02','D04',0)INSERT INTO work V ALUES('E03','D02',0)INSERT INTO work V ALUES('E04','D01',4)INSERT INTO work V ALUES('E04','D02',1)INSERT INTO work V ALUES('E05','D03',2)INSERT INTO work V ALUES('E06','D04',4)INSERT INTO work V ALUES('E07','D04',1)INSERT INTO work V ALUES('E08','D03',2)三、用SQL语句完成下列查询,上机验证之后将SQL语句按题号保存。
数据库原理及应用上机测试(包含数据库初学者大部分题目详解过程)

数据库原理及应用上机测试请注意:1、将本文档以“学号+姓名+分数+数据库原理及应用上机测试.doc”重命名;2、每完成一题登分,最后统计总分。
一、数据库和表的基本操作(20分)1、请用T-SQL语句创建一个名为“班级姓名kaoshi”数据库。
数据库包括一个主要数据文件,一个日志文件。
主要数据文件名为“学号姓名”,初始大小为10MB,最大值为100MB,增长率为10%;日志文件名为“学号姓名_log”,初始大小为10MB,最大值为60MB,增长率为6%,请截图在下方证明你调试成功。
(10分,调试成功计10分,不成功计0分)2、请用T-SQL语句创建一个新的工作表,命名为“班级姓名kaoshi”。
由学号bigint,自动增长序列为1(初始值为2011040201)、姓名char(8)、性别 char(2)、出生日期smalldatetime、系名 char(12)五个字段组成,在定义表时需要完成下列要求:学号为主键,性别的取值是男或女,出生日期的默认值是当前日期。
即getdate()函数产生的当前日期。
请截图在下方证明你调试成功。
(10分,调试成功计10分,不成功计0分)二、数据查询操作(40分,8小题,5分一题,有效果计5分,没有效果或者效果错误不计分)将老师发下来的素材:THXY_SM.mdf,附加到自己电脑的中,以下所有操作的数据均来自数据库中的8个表。
注意:1、以下所有操作题的截图请参考上图,要注意清晰度。
2、打开学生表,将某位同学的姓名修改为自己的姓名。
以下结果中要以看到自己姓名的数据为准。
1、请写出查询“学生”表中全体学生的姓名(要能看到考生自己的姓名)及年龄。
请操作,并截取效果图。
2、请写出在“学生表”中查找学号的倒数第二位在4~5之间的同学的姓名和学号的T-SQL语句。
请操作,并截取效果图。
3、请写出在“学生表”中查找星期五出生的同学,输出他们的姓名(要能看到考生自己的姓名1)、性别、出生日期以及星期几出生的T-SQL语句。
(完整版)上海大学数据库上机作业上机练习2作业(1)

上大学数据库上机作业《数据库系统与应用》上机习题*************************************************************************************************第二部分、SQL查询━━单表查询二、使用购进凭证数据库。
(由老师提供复制,内含“商品信息表”和“购进凭证表”)⒈只显示购进凭证表中凭证号、单价、数量;并输出一个计算字段“金额”,计算金额的公式是:单价×数量。
(注:不是增加字段)USE 购进凭证SELECT 凭证号,单价,数量,(单价*数量)AS '金额'FROM 购进凭证表⒉加入筛选条件:只输出“饼干”大类商品。
USE 购进凭证SELECT 商品编号,品名,大类编号,大类名FROM 商品信息表WHERE 大类名='饼干'⒊除了“饼干”,再同时输出“酒类”商品;再同时输出“饮料”、“糖果”商品。
USE 购进凭证SELECT *FROM 商品信息表WHERE 大类名in('饼干','酒类','饮料','糖果')ORDER BY 大类编号ASC⒋按大类名排序、同一大类的单价从大到小排序。
USE 购进凭证SELECT 凭证号,商品编号,单价,数量,大类名,部门名称FROM 购进凭证表ORDER BY 大类名,单价DESC⒌清除原筛选条件,重设条件:只输出单价不在10至30元之间的酒类商品。
USE 购进凭证SELECT 凭证号,商品编号,单价,,量,大类名,部门名称FROM 购进凭证表WHERE 大类名='酒类', 单价not between 10 and 30⒍统计所有商品的总数量、总金额。
USE 购进凭证SELECT SUM(数量)AS'总数量',SUM(单价*数量)AS 总金额FROM 购进凭证表⒎统计饼干大类的总数量、总金额。
数据库上机实验(有答案)

数据库上机实验内容及要求(第二部分)1.建立工厂管理数据库工厂(包括厂名和厂长名)需要建立一个管理数据库存储以下信息:(1)一个厂内有多个车间,每个车间有车间号、车间主任姓名、地址和联系电话;(2)一个车间有多个工人,每个工人有职工号、姓名、年龄、性别和工种;(3)一个车间生产多种产品,产品有产品号和价格;每种产品只能由一个车间生产;(4)一个车间制造多种零件,一种零件也可能为多个车间制造。
零件有零件号、重量和价格;(5)一种产品可由多种零件组成,一种零件也可以装配出多种产品;(6)产品和零件均存入仓库;(7)厂内有多个仓库,仓库有仓库号、仓库主任姓名和电话。
根据以上需求分析结果,按照下述要求,设计并建立工厂管理数据库。
◆分析实体及联系,设计E-R图。
◆将E-R图转换成关系模式,并规范化到3NF。
◆在Microsoft SQL Server2000中基于“企业管理器”建立数据库及相关对象(主码,外码,索引,约束等)。
◆测试数据入库2.基于“查询分析器”,完成并保存下述题目的SQL脚本(1)建立“工种”是“钳工”的所有职工详细信息的视图;create view View_工人_钳工asselect*from职工表where工种='钳工'with check option(2)建立“车间号”是“CJ01”的钳工详细信息的视图;create view View_钳工_CJ01asselect*from View_工人_钳工where车间号='CJ01'(3)建立使用了“零件号”是“LJ0002”的所有产品详细信息的视图;create view View_产品_零件LJ0002asselect产品表.产品号,价格,车间号,仓库号from装配表,产品表where装配表.产品号=产品表.产品号and零件号='LJ0002'(4)对零件表按照“零件号”建立唯一索引;create unique index Index_U_零件号on零件表(零件号)(5)对职工表按照“性别”建立聚簇索引;create clustered index Index_C_性别on职工表(性别)(6)查询使用了“零件号”是“LJ0002”的产品的生产车间号;select车间号from装配表,产品表where装配表.产品号=产品表.产品号and零件号='LJ0002'(7)查询“职工号”是“ZG0001”的职工所在车间的“车间主任姓名”和“联系电话”;select车间主任姓名,联系电话from职工表,车间表where职工表.车间号=车间表.车间号and职工号='ZG0001'(8)查询使用了“零件号”是“LJ0002”的所有产品的生产车间的“车间主任姓名”和“联系电话”;(连接查询、嵌套查询实现)select车间主任姓名,联系电话from产品表,装配表,车间表where产品表.产品号=装配表.产品号and产品表.车间号=车间表.车间号and装配表.零件号='LJ0002'select车间主任姓名,联系电话from车间表where车间号in(select车间号from产品表where产品号in(select产品号from装配表where零件号='LJ0002'))(9)查询使用了“零件号”是“LJ0002”的所有产品的“产品号”和“零件数量”,且查询结果按照“零件数量”降序排列;select产品号,零件数量from装配表where零件号='LJ0002'order by零件数量desc(10)查询使用了“零件号”是“LJ0002”的产品数;select count(*)as产品数from装配表where装配表.零件号='LJ0002'(11)查询“LJ0002”号零件装配产品的使用总量;select sum(零件数量)as使用总数from装配表where零件号='LJ0002'(12)查询使用了3种以上零件的产品号;select产品号from装配表group by产品号having count(*)>=3【注意】:下机时保存数据库文件(.mdf和.ldf)及SQL脚本文件到U盘。
8个数据库的上机实验作业题

实验作业要求:这是数据库的上机实验作业题,请大家任选其中的两个数据库,完成以下任务:(1)绘制E-R图(2)写出所有关系模式(即表)(3)写出创建所有表的SQL语句(包括外键参考语句)注意事项:在作业中要明确标出是哪两个数据库。
数据库设计实例一学生选课数据库某学院有基本实体集:系、教师、学生和课程。
它们各有属性:系:系编号、系名,位置课程:课程号,课程名称,开课学期学生:学生学号,学生姓名、性别、地址教师:员工号,教师姓名,办公室实体间有联系:每个系有一位系主任,有多位教师;一个教师仅在一个系任;每个系开设多门不同课程;每门课程各由一位教师授课;一个学生可以在不同的系选修多门课程。
存在联系有:1对1 :系与系主任(系主任是教师)1对多:系与教师、系与课程,教师与课程多对多:学生与课程数据库设计实例二虚拟主机业务管理有实体:职工(职工号、姓名、性别、出生年月、工作类别、职称、密码、备注)主机(主机序号、操作系统、生产厂商、状态、空间数量、备注)用户单位(用户单位名称、联系人姓名、联系电话)实体之间的关系:职工(销售员)与主机的管理关系是一对多的关系一个销售员可销售多台主机,一台主机只能由售员销售。
职工(运行维护员)与主机的维护关系是多对多关系,一个运行维护员可维护多台主机,一台主机能多个运行维护员维护。
职工(管理员)与主机是一对多关系,一个管理员管理多台主机,一台主机只能由一个管理员管理,主机与用户单位是多对多的,一台主机可分配给多个用户单位,一个用户单位可租用多台主机。
每次租用由一位销售员经手数据库设计实例三再就业信息管理有实体:职工(编号、姓名、性别、出生年月、工作类别、职称、工作年限、专业、学历)企业(企业编号、企业名称、企业性质、联系人姓名、联系电话)岗位(岗位编号、岗位名称、学历要求、职称要求、工种、工作年限)实体之间的关系职工与岗位之间的申请关系是多对多的关系,一个职工可申请多个就职岗位,同样一个岗位能被许多职工申请。
数据库上机实验部分题目及答案

上机实验部分题目及答案一、实验目的1、基本表的定义、修改和删除2、视图的建立、删除和查询3、约束的命名、删除和重定义二、实验结果存放创建表homework8(result ),将每题的题目序号和SQL语句写到此表。
三、实验内容现有图书管理数据库的一个关系模式:book(总编号,分类号,书名,作者,出版单位,单价)1.利用SQL语句创建book的表结构,其中总编号为主码,书名的类型为char(50),并给主码的约束命名(主码约束命名参照第五章内容)。
2.利用SQL在book这个表中分别插入以下所给元组:34、为“数据库导论”设置“出版日期”的值为2009年6月5日,为“计算机基础”设置“出版日期”的值为2008年3月4日。
5、删除总编号为445503的元组。
6、删除列“出版日期”。
7、将列“书名”的类型改为char(100),其中修改列类型的语句为:alter table <表名>[modify 列名数据类型]8、删除book的主码约束(参照第五章)9、将表book中的总编码设置为主码(参照87页内容)。
11.建立表book1,其表结构与内容参照第2题。
12. 为表book1建立科学出版社所出图书的视图science13、删除表book1,其中删除表的格式为:drop table <表名>[restrict|cascade constraint] 其中restrict与cascade参数的含义参照87页14、为表book建立高等教育出版社所出图书的视图education15、查询视图education中的所有内容16、删除视图educationdrop table homework8drop table bookcreate table homework8(ti smallint,res char(400))create table book(总编码char(8) ,分类号char(7),书名char(50),作者char(30),出版单位char(200),单价char(8),constraint total primary key(总编码) )insertinto homework8(ti,res)values (1,'create table book(总编码char(8) ,分类号char(7),书名char(50),作者char(30),出版单位char(200),单价char(8),constraint total primary key(总编码) )')22222222insertinto book(总编码,分类号,书名,作者,出版单位,单价)values ('445501','TP3/12','数据库导论','王强','科学出版社','17.90')insertinto book(总编码,分类号,书名,作者,出版单位,单价)values ('445502','TP3/12','数据库导论','王强','科学出版社','17.90')insertinto book(总编码,分类号,书名,作者,出版单位,单价)values ('445503','TP3/12','数据库导论','王强','科学出版社','17.90')insertinto book(总编码,分类号,书名,作者,出版单位,单价)values ('332211','TP5/10','计算机基础','李伟','高等教育出版社','18.00')3333333alter table bookadd 出版日期char(20)alter table bookadd 页数char(5)444444444444444444444444444444444444444update bookset 出版日期='2009年6月5日'where 书名='数据库导论'update bookset 出版日期='2008年3月4日'where 书名='计算机基础'55555555555555555555555555555555555555 deletefrom bookwhere 总编号='445503'66666666666666666666666666666666666666 alter table bookdrop column 出版日期777777777777777777777777777777777777777 alter table bookmodify 书名char(100)8888888888888888888888888888888888888 alter table bookdrop constraint total9999999999999999999999999999999999999 alter table bookadd primary key (总编码)11 11 11 11 11 11 11 11 11 11 create table book1(总编码char(8) ,分类号char(7),书名char(50),作者char(30),出版单位char(200),单价char(8),constraint total primary key(总编码))12 12 12 12 12 12 12 12 CREATE VIEW scienceASSELECT 总编码,分类号,书名,作者,出版单位,单价FROM book1WHERE 出版单位='科学出版社'13DROP TABLE book114CREATE VIEW educationASSELECT 总编码,分类号,书名,作者,出版单位,单价FROM bookWHERE 出版单位='高等教育出版社'15SELECT *FROM education16DROP VIEW education。
数据库上机习题及答案

数据库上机习题及答案 Revised by Liu Jing on January 12, 2021数据库及应用复习题一、设计题有一个[学生课程]数据库,数据库中包括三个表:学生表Student由学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)、所在系(Sdept)五个属性组成,记为:Student(Sno,Sname,Ssex,Sage,Sdept) ,Sno 为关键字。
课程表Course由课程号(Cno)、课程名(Cname)、先修课号(Cpno)、学分(Ccredit)四个属性组成,记为:Course(Cno,Cname,Cpno,Ccredit) Cno为关键字。
成绩表SG由学号(Sno)、课程号(Cno)、成绩(Grade)三个属性组成,记为: SG(Sno,Cno,Grade) (SNO, CNO)为关键字。
用SQL语言实现下列功能:1.建立学生表Student,其中学号属性不能为空,并且其值是唯一的。
2.向Student表增加“入学时间(Scome)”列,其数据类型为日期型。
3.查询选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排列。
4.查询学习1号课程的学生最高分数、平均成绩。
5.查询与“李洋”在同一个系学习的学生。
6.将计算机系全体学生的成绩置零。
7.删除学号为05019的学生记录。
8.删除计算机系所有学生的成绩记录。
1.CREATETABLE Student(Sno CHAR(5) NOT NULL UNIQUE,Sname CHAR(20),Ssex CHAR(2),Sage INT,Sdept CHAR(15))2.ALTER TABLE Student ADD Scome DATETIME 3.SELECT Sno, GradeFROM SGWHERE Cno='3'ORDER BY Grade DESC4.SELECT MAX(Grade), AVG(Grade)FROM SCWHERE Cno='1'5.SELECT Sno, Sname, SdeptFROM StudentWHERE Sdept IN(SELECT Sdept FROM StudentWHERE Sname='李洋')6. UPDATE SGSET Grade=0WHERE Sno in( SELECT Sno FROM StudentWHERE Sdept = '计算机系')7.DELETE FROM StudentWHERE Sno='05019'8. DELETE FROM SGWHERE Sno in( SELECT Sno FROM StudentWHERE Sdept = '计算机系')二、设计题现有关系数据库如下:数据库名:教师数据库教师表(编号 char(6),姓名,性别,民族,职称,身份证号)课程表(课号 char(6),名称)任课表(ID,教师编号,课号,课时数)用SQL语言实现下列功能的sql语句代码:1. 创建上述三表的建库、建表代码(14分);要求使用:主键(教师表.编号,课程表.课号)、外键(任课表.教师编号,任课表.课号)、默认(民族)、非空(民族,姓名)、唯一(身份证号)、检查(性别、课时数),自动编号(ID)2. 将下列课程信息添加到课程表的代码(6分)课号课程名称100001 SQL Server数据库100002 数据结构100003 VB程序设计修改课号为100003的课程名称:Visual Basic程序设计删除课号为100003的课程信息3. 写出创建[任课表视图](教师编号,姓名,课号,课程名称,课时数)的代码;(4分)4. 写出创建[某门课任课教师]内嵌表值函数以及检索的代码;(6分)检索:所有代'SQL Server数据库'这门课程的老师姓名;5. 写出创建[统计课时数]:输出最大课时数、最低课时数、平均课时的存储过程以及执行代码;(6分)6.写出创建:计算某教师代课总课时,并将值返回的存储过程以及执行代码。
数据库上机考试试题及答案

1下列说法中正确的是:( D )A 、 SQL 中局部变量可以不声明就使用B 、 SQL 中全局变量必须先声明再使用C 、 SQL 中所有变量都必须先声明后使用D 、 SQL 中只有局部变量先声明后使用;全局变量是由系统提供的用户不能自己建立。
2.哪个关键字用于测试跟随的子查询中的行是否存在( B )。
A.MOV B.EXISTSC.UNION D.HAVING3 .下列哪些语句用于创建存储过程( A )?A、CREATE PROCEDUREB、CREATE TABLEC、DROP PROCEDURED、其他5.在SQL中,SELECT语句的“SELECT DISTINCT”表示查询结果中 ( C )。
A.属性名都不相同B.去掉了重复的列C.行都不相同D.属性值都不相同6.SQL 语言集数据查询、数据操作、数据定义和数据控制功能于一体,语句INSERT、DELETE、UPDATA实现下列哪类功___A_____。
A. 数据查询B. 数据操纵C. 数据定义D. 数据控制7.SQL Server 2000 采用的身份验证模式有( D )。
(A)仅Windows身份验证模式(B)仅SQL Server身份验证模式(C)仅混合模式(D)Windows身份验证模式和混合模式10.SQL Server 2000 企业版可以安装在操作系统上。
( C )(A)Microsoft Windows 98(B)Microsoft Windows 2000 Professional(C)Microsoft Windows 2000 Server(D)Microsoft Windows XP11.SQL Server是一个( C )的数据库系统。
(A)网状型(B)层次型(C)关系型(D)以上都不是12.SQL语言中,删除一个视图的命令是( B )。
A. DELETEB. DROPC. CLEARD. REMOVE13.SQL语言中,删除记录的命令是( A )。
数据库基础与应用上机试验题

数据库基础与应用阶段上机练习题
现有教学管理库的三个关系模式:
学生(学生号,姓名,性别,出生年月,班级号)
教师(教师号,教师姓名,性别,出生日期,职称,所在系)
课程(课程号,课程名,教师号)
选课(学生号,课程号,成绩)
1.对上述四个模式使用SQL命令建立教学库和学生、教师、课程和选课四个基本表。
2.在四个表中分别插入以下表中所给的各行元组。
学生:
教师:
课程:
选课:
3.进行如下查询操作:
1)在教学管理库成绩表中查询课程号为3-105并且成绩在60到80之间的
所有学生的学生号,成绩
2)在教学管理库中查询所有姓名中含‘华’字的学生记录
3)在教学管理库中查询成绩为68,75,81的所有记录
4)在教学管理库中查询“95031”班或性别为“女”的学生记录
5)在教学管理库中检索学生表中所有男生记录,并以班级号降序排序
6)从教学管理库中查询出每个专业的学生人数,并按人数多少升序排列
7)从教学管理库中查询出选修课程多于1门的学生信息
8)从教学管理库中查询出每个选课学生的学生号,姓名及选课门数
9)从教学管理库中查询所有未任课的教师姓名和所在系
10)从教学管理库中查询所有教师和学生的姓名、性别和出生年月
11)从教学管理库中查询成绩最高的学生的学号,姓名,成绩。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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单位。