上海大学-数据库选修-上机练习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作业
上大学数据库上机作业《数据库系统与应用》上机习题*************************************************************************************************第五部分、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课程的学生的姓名。
数据库第五章课后习题答案
关系规范化理论题目4.20 设关系模式R(ABC),F是R上成立的FD集,F={B→A,C→A },ρ={AB,BC }是R上的一个分解,那么分解ρ是否保持FD集F?并说明理由。
答:已知F={ B→A,C→A },而πAB(F)={ B→A },πBC(F)=φ,显然,分解ρ丢失了FD C→A。
4.21 设关系模式R(ABC),F是R上成立的FD集,F={B→C,C→A },那么分解ρ={AB,AC }相对于F,是否无损分解和保持FD?并说明理由。
答:①已知F={ B→C,C→A },而πAB(F)=φ,πAC(F)={ C→A }显然,这个分解丢失了FD B→C②用测试过程可以知道,ρ相对于F是损失分解。
4.22 设关系模式R(ABCD),F是R上成立的FD集,F={A→B,B→C,A→D,D→C },ρ={AB,AC,BD }是R的一个分解。
①相对于F,ρ是无损分解吗?为什么?②试求F在ρ的每个模式上的投影。
③ρ保持F吗?为什么?答:①用测试过程可以知道,ρ相对于F是损失分解。
②πAB(F)={ A→B },πAC(F)={ A→C },πBD(F)=φ。
③显然,分解ρ不保持FD集F,丢失了B→C、A→D和D→C等三个FD。
4.23 设关系模式R(ABCD),R上的FD集F={A→C,D→C,BD→A},试说明ρ={AB,ACD,BCD }相对于F是损失分解的理由。
答:据已知的F集,不可能把初始表格修改为有一个全a行的表格,因此ρ相对于F是损失分解。
4.24 设关系模式R(ABCD)上FD集为F,并且F={A→B,B→C,D→B}。
①R分解成ρ={ACD,BD},试求F在ACD和BD上的投影。
②ACD和BD是BCNF吗?如不是,望分解成BCNF。
解:①F在模式ACD上的投影为{A→C,D→C},F在模式BD上的投影为{D→B}。
②由于模式ACD的关键码是AD,因此显然模式ACD不是BCNF。
(完整版)数据库原理及应用习题带答案
习题一、单项选择题1. 在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。
在这几个阶段中,数据独立性最高的是(A)阶段。
A. 数据库系统B. 文件系统C. 人工管理D.数据项管理2. 数据库系统与文件系统的主要区别是(B)。
A. 数据库系统复杂,而文件系统简单B. 文件系统不能解决数据冗余和数据独立性问题,而数据库系统可以解决C. 文件系统只能管理程序文件,而数据库系统能够管理各种类型的文件D. 文件系统管理的数据量较少,而数据库系统可以管理庞大的数据量3. 在数据库中存储的是(C)。
A. 数据B. 数据模型C. 数据及数据之间的联系D. 信息4. 数据库的特点之一是数据的共享,严格地讲,这里的数据共享是指(D)。
A. 同一个应用中的多个程序共享一个数据集合B. 多个用户、同一种语言共享数据C. 多个用户共享一个数据文件D. 多种应用、多种语言、多个用户相互覆盖地使用数据集合5. 数据库(DB)、数据库系统(DBS)和数据库管理系统(DBMS)三者之间的关系是( A )。
A. DBS包括DB和DBMSB. DBMS包括DB和DBSC. DB包括DBS和DBMSD. DBS就是DB,也就是DBMS6. 数据库管理系统(DBMS)是(C)。
A. 一个完整的数据库应用系统B.一组硬件C. 一组系统软件D.既有硬件,也有软件7. 数据库是在计算机系统中按照一定的数据模型组织、存储和应用的(B)。
A. 文件的集合B. 数据的集合C. 命令的集合D. 程序的集合8. 支持数据库各种操作的软件系统是(B)。
A. 命令系统B. 数据库管理系统C. 数据库系统D. 操作系统9. 由计算机硬件、DBMS、数据库、应用程序及用户等组成的一个整体叫(B)。
A. 文件系统B. 数据库系统C. 软件系统D. 数据库管理系统10. 数据库系统中应用程序与数据库的接口是(B)。
A. 数据库集合B. 数据库管理系统DBMSC. 操作系统OSD. 计算机中的存储介质11. 在DBS中,DBMS和OS之间关系是(D)。
数据库原理及应用最全上机实验及实验答案
实验一 SQL Server 2005 的安装和环境介绍一.实验目的与要求:1.掌握SQL Server 2005 服务器的安装方法2.了解SQL Server 2005 的环境3.了解数据库及其对象二.实验准备1.了解SQL Server 2005的版本2.了解SQL Server 2005各版本对硬件和软件的需求三.实验要求1.写出SQL SERVER 2005的功能与特点, 使用方法, 应用状况的报告2.完成SQL SERVER 2005的安装、启动、登录。
四.实验内容1.安装SQL Server 2005实验一 SQL Server 2005 的安装和环境介绍●实验指导——安装SQL Server 20051.根据安装机器软硬件的要求,选择一个合适的版本,以下以开发版为例2.将 SQL Server 2005 DVD 插入 DVD 驱动器。
如果DVD驱动器的自动运行功能无法启动安装程序无法启动安装程序,请导航到 DVD 的根目录然后启动splash.hta。
3.在自动运行的对话框中,单击“运行 SQL Server 安装向导”。
4.在“最终用户许可协议”页上,阅读许可协议,再选中相应的复选框以接受许可条款和条件。
接受许可协议后即可激活“下一步”按钮。
若要继续,请单击“下一步”若要结束安装程序,请单击“取消”。
如下图:5.在“SQL Server 组件更新”页上,安装程序将安装 SQL Server 2005 的必需软件。
有关组件要求的详细信息,请单击该页底部的“帮助”按钮。
若要开始执行组件更新,请单击“安装”。
更新完成之后若要继续,请单击“完成”。
6.在 SQL Server 安装向导的“欢迎”页上,单击“下一步”以继续安装。
7.在“系统配置检查 (SCC)”页上,将扫描安装计算机,以检查是否存在可能妨碍安装程序的条件。
8.在“注册信息”页上的“姓名”和“公司”文本框中,输入相应的信息。
【免费下载】上机练习中国知网
一、单选题1.《中国学术期刊全文数据库》中,( )使用的优先算符是合理的。
A.(材料)*(测试) B.(材料)*(测试+测量)C.材料*(测试+测量) D.材料*(测试)+(测量)2.在《中国学术期刊全文数据库》中,不可以进行( )检索。
A.逻辑“与” B.逻辑“或”C.逻辑“非” D.位置3.《中国学术期刊全文数据库》中,在单逻辑检索的文摘字段中输入检索词“材料”的基础上,再在篇名字段中输入“陶瓷”,选“在结果中检索”再行检索。
这个检索过程可以策略表示为( )。
两次检索后,检索范围被( )了。
A.文摘字段:材料*篇名字段:陶瓷,扩大B. 文摘字段:材料*篇名字段:陶瓷,缩小C.文摘字段:材料+篇名字段:陶瓷,扩大D.文摘字段:材料+篇名字段:陶瓷,缩小4.查找上海大学师生2003年发表论文被《中国学术期刊全文数据库》收录情况,可选择的检索策略是( )。
A.作者机构字段:上海大学并且作者字段:师生并且年份字段:2003B.作者机构字段:上海大学并且年份字段:2003C.作者机构字段:上海并且大学并且年份字段:2003D.作者机构字段:上海+大学并且年份字段:20035.《中国学术期刊全文数据库》全文字段主要适用于( )。
A.课题包含的概念较多,通过篇名/关键词/摘要字段几乎查不到什么文献B.课题包含的概念较多,通过篇名字段几乎查不到什么文献C. 课题包含的概念较少,通过摘要字段几乎查不到什么文献D.课题包含的概念较少,通过篇名/关键词/摘要字段已经查到过多的文献.6.如果希望得到的文献是国内较高水平的研究成果,通过《中国学术期刊全文数据库》的( )进行检索可能是较好的选择。
A.基金项目字段 B.文摘字段C. 篇名字段 D.关键词字段7.模糊匹配比较适用于(), 精确检索比较适用于( )。
A.基本字段,辅助字段 B.辅助字段,基本字段C. 除开年份以外的字段,全部字段 D.全部字段,除开年份以外的字段8.《中国学术期刊全文数据库》中选择作者字段,输入“方志”,选择“模糊匹配”控制,系统给出的检索结果不可能包含有作者姓名为( )的记录。
上海电机学院数据库习题答案
4.在关系数据库中,信息被存放在二维表结构的表中。一行代表一个实例,行中的列表示记录中一个特征(属性)的值。
5.SQL Server 2000采用客户/服务器计算模型,该模型分为两层的客户/服务器结构和多层的客户/服务器结构。
6.简述数据库系统采用客户/服务器结构的好处。
答:(1)客户/服务器将处理工作分配在客户系统和数据库服务器上。
在“图书管理”数据库中列出借阅表中长期不还书的记录(按借1年以上,2年以上,3年以上的形式表示)。
Select书号,读者书证号,已借阅期限=
Case year(GETDATE())-year(借阅日期)
When 1 then‘借1年以上’
When 2 then‘借2年以上’
When 3 then‘借3年以上’
Master数据库记录了SQL Server系统级的信息。
Tempdb数据库用于存放所有连接到系统的用户的临时表和临时存储过程,以及SQL Server产生的其他临时性对象。
数据库习题及答案(五套)
《数据库》课程模拟试题(一)一、填空题(30分)1.数据的独立性包括和。
2.数据的物理独立性是指当数据的改变时,通过系统内部的自动映象功能或转换功能,保持了数据的不变。
3.数据模型由三部分组成:、、4.一个学生可以同时借阅多本图书,一本图书只能由一个学生借阅,学生和图书之间为的联系。
5.一个关系模型由若干个组成。
6.在选择运算所得到的结果关系中,所含的元组数不原关系中的元组数。
7.SQL语言具有对数据的等四个方面的功能。
8.设X→Y是关系模式R的一个函数依赖,并且Y是X的子集,则称X→Y是。
9.在一个关系模式中,若一个属性或属性组K完全函数决定整个元组,则称K为该关系的一个。
10.如果一个关系R中的所有非主属性都不传递依赖于任何候选关键字,则称关系R属于,记作。
11.一个关系模式为Y(X1,X2,X3,X4),假定该关系存在如下函数依赖:X1←→X2,X1→X3,X1→X4,则该关系属于。
12.假定一个E-R图包含有A实体和B实体,并且从A到B存在着1∶n的联系,则转换成关系模型后,包含有个关系模式。
13.实现系统案例,防止非法破坏数据,所采用的数据保护措施有:用户标识和鉴定、、、、14.恢复的实现技术有:和。
15.____ __________是一个逻辑上统一、地域上分布的数据集合。
16.关系中能唯一标识元组,且又不含多余属性称为_______________。
17.在概念结构设计中先,定义全局概念结构的框架,然后逐步细化。
这种方法称为_ 18.分布式数据库系统中透明性层次越高,应用程序的编写越。
二、单项选择题(20分)1、____________是长期存储在计算机内的有组织,可共享的数据集合。
A.数据库管理系统 B.数据库系统C.数据库 D.文件组织2、数据库系统阶段,数据_______________。
A.具有物理独立性,没有逻辑独立性B.具有物理独立性和逻辑独立性C.独立性差D.具有高度的物理独立性和一定程度的逻辑独立性3、一个m:n联系转换为一个关系模式。
数据库上机习题及答案
数据库上机习题及答案 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.写出创建:计算某教师代课总课时,并将值返回的存储过程以及执行代码。
(完整版)上海大学数据库上机作业上机练习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 购进凭证表⒎统计饼干大类的总数量、总金额。
数据库实验5答案
实验五:数据库综合查询一、实验目的1.掌握SELECT语句的基本语法和查询条件表示方法;2.掌握查询条件种类和表示方法;3.掌握连接查询的表示及使用;4.掌握嵌套查询的表示及使用;5.了解集合查询的表示及使用。
二、实验环境已安装SQL Server企业版的计算机(120台);具有局域网环境,有固定IP;三、实验学时2学时四、实验要求1.了解SELECT语句的基本语法格式和执行方法;2.了解连接查询的表示及使用;3.了解嵌套查询的表示及使用;4.了解集合查询的表示及使用;5.完成实验报告;五、实验内容及步骤1.利用Transact-SQL嵌套语句实现下列数据查询操作。
1) 查询选修了计算机体系结构的学生的基本信息。
select*from studentwhere Sno in(select Sno from coursewhere Cno in(select Cno from sc where Cname='计算机体系结构'))2) 查询年龄比李勇小的学生的学号和成绩。
select a.sno,grade from student a,coursewhere a.sno=course.sno and sage<(select sage from student where sname='李勇')3) 查询其他系中比系编号为‘D1’的学生中年龄最小者要大的学生的信息。
select*from student where dnum<>'D1'AND SAGE>(select min(sage)from student where dnum='D1')4) 查询其他系中比系编号为‘D3’的学生年龄都大的学生的姓名。
select*from student where dnum<>'D3'AND SAGE>all(selectsage from student where dnum='D3')5) 查询‘C1’课程的成绩高于70的学生姓名。
数据库第5版书本作业全部答案
第一章:1、数据库的概念:P4数据库系统的概念: P59、数据模型的三个要素:数据结构,数据操作,完整性约束。
13、码:唯一标识实体的属性集。
16、模式:P29外模式:P29内模式:P2917、物理独立性:当数据库的存储结构改变时,对模式/内模式映象作相应改变,可以使模式保持不变,从而应用程序也不必改变,保证了数据与程序的物理独立性。
逻辑独立性:当数据库的模式改变时,对外模式/模式的映象作相应改变,可以使外模式保持不变,从而应用程序也不必改变,保证了数据与程序的逻辑独立性。
18、数据库系统的构成:数据库系统通常由数据库,数据库管理系统(及开发工具)、应用系统和数据库管理员构成。
第二章:1、关系模型的三个组成部分:关系数据结构、关系操作集合、关系完整性约束。
2、关系数据语言的分类:关系代数语言,关系演算语言,具有关系代数和关系演算双重特点的语言3、候选码:关系中能唯一标识一个元组的属性组。
主码:若候选码有多个,则选其中一个作为主码。
外码:关系模式R中属性或属性组X并非R的码,但X是另一个关系模式的码,则称X是R的外码。
(或者参照课本P50,定义2.5)5、答:实体完整性是指在基本表中,主属性不能取空值且取值唯一。
参照完整性是指在基本表中,外码可以是空值或者另一个关系主码的有效值。
6、(1)πSno(σJno=’J1’(SPJ))(2) πSno(σJno=’J1’∧ Pno=’P1’(SPJ))(3) πSno(σJno=’J1’∧ Color=’红’(SPJ∞P))(4)πJno(J)—πJno (σCity=’天津’∧ Color=’红’(S∞SPJ∞P)) (5)πJno,Pno(SPJ)÷πPno(σSno=’S1’(SPJ))第三章:4、建立S表Create table S(SNO CHAR(10) PRIMARY KEY,SNAME CHAR(10),STATUS CHAR(2),CITY CHAR(10));5、(1)select sname,cityFrom S;(2)select pname,color,weightFrom p;(3) select JnoFrom SPJWhere SNO=’S1’;(4)select p.pname,spj.qtyFrom p,spjWhere p.pno=spj.pno and spj.jno=’j2’;(5) select distinct pnoFrom spj,sWhere spj.sno=s.sno and city=’上海’;(6) select jnameFrom j,spj,sWhere j.jno=spj.jno and spj.sno=s.sno and s.city=’上海’;(7) select jnoFrom jWhere jno not in(select spj.jnoFrom spj,sWhere spj.sno=s.sno and s.city=’天津’);或者:select jnoFrom jWhere not exists(select spj.jnoFrom spj,sWhere spj.jno=j.jno and spj.sno=s.sno and s.city=’天津’);(8) update pSet color=’蓝’Where color=’红’;(9) update spjSet sno=’s3’Where sno=’s5’ and jno=’j4’ and pno=’p6’;(10) deleteFrom spjWhere sno=’s2’;deleteFrom sWhere sno=’s2’;(11)insert into spjValues(‘s2’,’j6’,’p4’,200)8、不是所有的视图都可以更新。
数据库上机实验
附录C 上机实验C.1 第4章上机实验下列实验均使用SQL Server 的SSMS工具实现。
1.用图形化方法创建符合如下条件的数据库(创建数据库的方法可参见本书附录A):●数据库名为:学生数据库●主要数据文件的逻辑文件名为:Students_data,存放在D:\Data文件夹下(若D:盘中无此文件夹,请先建立此文件夹,然后再创建数据库。
),初始大小为:5MB,增长方式为自动增长,每次增加1MB。
●日志文件的逻辑文件名字为:Students_log,也存放在D:\Data文件夹下,初始大小为:2MB,增长方式为自动增长,每次增加10%。
2.选用已建立的“学生数据库”,写出创建满足表C-1到4-4条件的表的SQL语句,并执行所写代码。
(注:“说明”部分不作为表定义内容)3. 写出实现如下功能的SQL语句,并执行所写代码,查看执行结果。
(1)在Teacher表中添加一个职称列,列名为:Title,类型为nchar(4)。
(2)为Teacher表中的Title列增加取值范围约束,取值范围为:{教授,副教授,讲师}。
(3)将Course表中Credit列的类型改为:tinyint。
(4)删除Student表中的Sid和Sdate列。
(5)为Teacher表添加主键约束,其主键为:Tno。
C.2 第5章上机实验本实验均在SQL Server 的SSMS工具中实现。
首先在已创建的“学生数据库”中创建本章表5-1~5-3所示的Student、Course和SC表,并插入表5-4~5-6所示数据,然后编写实现如下操作的SQL语句,执行所写的语句,并查看执行结果。
1.查询SC表中的全部数据。
2.查询计算机系学生的姓名和年龄。
3.查询成绩在70~80分的学生的学号、课程号和成绩。
4.查询计算机系年龄在18~20岁的男生姓名和年龄。
5.查询C001课程的最高分。
6.查询计算机系学生的最大年龄和最小年龄。
7.统计每个系的学生人数。
上海大学数据库上机作业上机练习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日以后被借阅过的图书名及借阅者。
数据库上机实验报告答案
数据库上机实验报告答案1.建立学生数据库模式学生表:student (sno 学号,sname 姓名,ssex 性别,sage 年龄,sdept 所在系)其中:sno 长度为4的字符串,为主码;sname 长度为8的字符串;ssex 长度为2的字符串,其值只取男、女;sage 整数,其值在0-150之间;sdept 长度为10的字符串。
2.建立课程数据库模式课程表:course ( cno课程号,cname课程名,ccredit学分)其中:cno 长度为4的字符串,为主码cname 长度为10的字符串,不能有重复课程名;ccredit 整数。
3.建立选课数据库模式。
选课表: sc (sno学号, cno课程号, grade成绩)其中:sno 长度为4的字符串,和student表sno外键关联,且级联删除cno 长度为4的字符串,course表cno外键关联,grade 整数,值或空或为0—100之间,(sno, cno) 联合作主码。
(1)创建上述三个表。
(2)将年龄的数据修改为15-30之间。
(3)为Student中sname添加列级完整性约束,不能为空。
(4)为SC建立按学号升序和课程号降序建立唯一索引.(5)在表student的sname字段建立一个升序索引。
(6)删除在表student的sname字段建立的索引。
(7)给student表增加一个地址(address)属性。
(8) 删除student表地址(address)属性。
(9)建立视图view1,要求有sno,sname,cname,grade四个字段。
1) create table studen(sno char(4) primary key,sname char(8),ssex char(2) check( ssex in('男','女')),sage int check(sage between 0 and 150),sdept char(10));create table course(cno char(4) primary key,cname char(10) unique,ccredit intcreate table sc(sno char(4),cno char(4),grade int check(grade between 0 and 100),primary key (sno,cno),foreign key(sno) references student(sno) on delete cascade, foreign key(cno) references course(cno));2) alter table studentadd constraint sage_con check(sage between 15 and 30);3) alter table studentmodify sname not null;4) create unique index index1on sc (sno asc,cno desc);5) create index index2on student(sname asc);6) drop index index2;7) alter table studentadd address char(30);8) alter table studentdrop column address;9) create view view1asselect A.sno,sname,cname,gradefrom student A,course B,sc Cwhere A.sno=C.sno and /doc/287635464.html,o=http://www.doczj .com/doc/287635464.html,o;(1)在上述三个表中输入若干记录。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据库系统与应用》上机习题*************************************************************************** **********************第五部分、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%为“一般”。
并按图书比例递增排列。
USE LibraryDECLARE @num intSELECT @num=(SELECT COUNT(*)FROM book)--图书总数SELECT a.出版社AS'出版社',CASEWHEN>THEN'很高'WHEN>THEN'较高'WHEN>THEN'一般'ELSE'较低'END AS'图书比例情况'FROM (SELECT出版社AS'出版社',CAST(ROUND(COUNT(*)*@num,1)AS decimal(5,1))AS'rate'FROM bookGROUP BY出版社) aORDER BY(2)对各系学生借书比例情况进行分析,即借书比例高于50%为“很高”,借书比例高于30%为“较高”,借书比例高于10%为“一般”。
并按借书比例递减排列。
USE LibraryDECLARE @num intSELECT @num=(SELECT COUNT(*)FROM borrow)--借书总数SELECT a.系名AS'系名',CASEWHEN>THEN'很高'WHEN>THEN'较高'WHEN>THEN'一般'ELSE'较低'END AS'借书情况'FROM (SELECT depart.系名,CAST(ROUND(COUNT(*)*@num,1)AS decimal(5,1))AS'rate'FROM borrow,student,departWHERE borrow.学号=student.学号AND student.班号=depart.班号GROUP BY depart.系名) aORDER BY DESC(3)采用游标方式对图书价格进行评价。
USE LibraryGODECLARE b_cur CURSORFOR SELECT DISTINCT(图书名),定价FROM bookDECLARE @bn char(20),@dj decimal(4,1),@pr char(10)OPEN b_curFETCH NEXT FROM b_cur INTO @bn,@djWHILE@@FETCH_STATUS= 0BEGINSET @pr=CASEWHEN @dj>=50 THEN'价格太高'WHEN @dj>=30 THEN'价格偏高'WHEN @dj>=20 THEN'价格适中'WHEN @dj>=10 THEN'价格偏低'ELSE'价格太低了'ENDPRINT @bn+CAST(@dj AS char(5))+@prFETCH NEXT FROM b_cur INTO @bn,@djENDCLOSE b_curDEALLOCATE b_cur(4)GO采用游标方式统计每个出版社图书的借出率。
USE LibraryGODECLARE A CURSORFORSELECT a.出版社,CAST(csum*bsum AS decimal(4,1))As'rate'FROM (SELECT出版社,COUNT(*)AS'bsum'FROM bookGROUP BY出版社) a,(SELECT b.出版社,COUNT(bor.图书编号)AS'csum'FROM book b,borrow borWHERE b.图书编号=bor.图书编号GROUP BY b.出版社) bWHERE a.出版社=b.出版社DECLARE @name char(16),@num decimal(4,1)OPEN AFETCH NEXT FROM A INTO @name,@numWHILE@@FETCH_STATUS= 0BEGINPRINT'"'+RTRIM(@name)+'"图书借出率为'+RTRIM(CAST(@num AS char(5)))+'%' FETCH NEXT FROM A INTO @name,@numENDCLOSE ADEALLOCATE AGO。