数据库实验8-9-参考答案
- 格式:doc
- 大小:56.00 KB
- 文档页数:4
电大数据库系统及应用-形考册第8章-习题与参考答案第8章习题与参考答案一.单项选择题1.在数据库设计中,将E-R图转换为关系数据模型是下述哪个阶段完成的工作(C)。
A.需求分析阶段B.概念设计阶段C.逻辑设计阶段D.物理设计阶段2.在将E-R图转换为关系模型时,一般都将m:n联系转换成一个独立的关系模式。
下列关于这种联系产生的关系模式的主码的说法,正确的是(C)。
A.只需包含m端关系模式的主码即可B.只需包含n端关系模式的主码即可C.至少包含m端和n端关系模式的主码D.必须添加新的属性作为主码3. 在将局部E-R图合并为全局E-R图时,可能会产生一些冲突。
下列冲突中不属于合并E-R图冲突的是(B)。
A.结构冲突B.语法冲突C.属性冲突D.命名冲突4. 一个银行营业所可以有多个客户,一个客户也可以在多个营业所进行存取款业务,则客户和银行营业所之间的联系是(D)。
A.一对一B.一对多C.多对一D.多对多5.设实体A与实体B之间是一对多联系。
下列进行的逻辑结构设计方法中,最合理的是(A)。
A.实体A和实体B分别对应一个关系模式,且外码放在实体B的关系模式中B. 实体A和实体B分别对应一个关系模式,且外码放在实体A的关系模式中C.为实体A和实体B设计一个关系模式,该关系模式包含两个实体的全部属性D.分别为实体A、实体B和它们之间的联系设计一个关系模式,外码在联系对应的关系模式中6. 设有描述图书出版情况的关系模式:出版(书号,出版日期,印刷数量),设一本书可以被出版多次,每次出版都有一个印刷数量。
该关系模式的主码是(B)。
A.书号B.(书号,出版日期)C.(书号,印刷数量)D.(书号,出版日期,印刷数量)7. 在数据库设计中,进行用户子模式设计是下述哪个阶段要完成的工作(C)。
A.需求分析阶段B.概念结构设计阶段C.逻辑结构设计阶段D.物理结构设计阶段二.填空题1.数据库设计分为五个阶段,包括(需求分析)、概念设计、(逻辑设计)、(物理设计)、数据库实施和运行维护。
习题81、什么是数据库的安全性?数据库的安全性是指数据库的任何数据都不允许受到恶意的侵害或未经授权的存取或修改。
主要内涵包括三个方面:①保密性:不允许未经授权的用户存取数据。
②完整性:只允许被授权的用户修改数据。
③可用性:不应拒绝已授权的用户对数据进行存取。
2、什么是数据库的完整性?数据库的完整性是指数据库中数据的正确性和一致性。
数据库的完整性对数据库应用系统非常重要。
3、什么是数据库的完整性约束条件?为了保证数据库中的数据完整性,SQL Server设计了很多数据完整性约束:实体完整性、域完整性、参照完整性、用户定义完整性。
4、DBMS的完整性控制机制应具有哪些功能?1)数据库的完整性约束能够防止合法用户向数据库中添加不合语义的数据。
2)完整性控制机制易于理解,可以降低应用程序的复杂性,提高运行效率。
3)合理的数据完整性设计,能够兼顾数据库的完整性和系统的性能。
完善的数据库完整性,有助于尽早发现应用程序的错误。
5、DBMS在实现参照完整性时需要考虑哪些方面?强制参照完整性时,SQL Server将防止用户执行下列操作:1)在主表中没有关联的记录时,将记录添加或更改到相关表中。
2)更改主表中的值,导致相关表中生成孤立记录。
3)从主表中删除记录,但仍存在于该记录匹配的相关记录。
6、在关系系统中,当操作违反实体完整性、参照完整性和用户定义完整性约束条件时,一般是如何处理的?系统可以采用以下的策略加以处理:1)拒绝(NO ACTION)执行:不允许该操作执行,该策略一般为默认策略。
2)级联(CASCADE)操作:当删除或修改被参照表的一个元组造成了与参照表不一致,则删除或修改参照表中的所有造成不一致的元组。
3)设置为空值(SET-NULL):当删除或修改被参照表的一个元组造成了与参照表不一致,则将参照表中的所有造成不一致的元组的对应属性设置为空值。
7、数据库安全性和计算机系统的安全性有什么关系?计算机系统中,安全措施是一级一级层层设置。
第8章习题参考答案2.求程序的运行结果(1)Public Sub 习题8_2_1()Dim i As IntegerDebug.Print Tab(10); "*"For i = 1 To 5Debug.Print Tab(10 - i); "*"; Spc(i - 1); "*"; Spc(i - 1); "*"Next iFor i = 4 To 1 Step -1Debug.Print Tab(10 - i); "*"; Spc(i - 1); "*"; Spc(i - 1); "*"Next iDebug.Print Tab(10); "*"End Subrun:***** * ** * ** * ** * ** * ** * ** * *****(2)Public Sub 习题4_2_2()Dim x, y, i As Doublex = 0: y = 0For i = 1 To 8If i Mod 2 <> 0 Thenx = x - iElsey = y + iEnd IfNextDebug.Print "i="; iDebug.Print "x="; xDebug.Print "y="; yEnd Subrun:x=-16y= 20(3)Public Sub习题4_2_3()Dim m, s, k As Doublem = 28s = 0k = 1Do While k <= Int(m / 2)If Int(m / k) = m / k ThenDebug.Print ks = s + kEnd Ifk = k + 1LoopDebug.Print "s="; sEnd Subrun:124714s= 28(4)Public Sub 习题8_2_4()Dim n, a1, a2, a3, i As Doublen = Val(InputBox("请输入n,要求n>=3"))If n <= 2 ThenExit SubEnd Ifa1 = 1a2 = 1Debug.Print a1; a2For i = 2 To n - 1a3 = a1 + a2a1 = a2a2 = a3Debug.Print a3NextEnd Sub1 12353.改错题(1)Public Sub 改错8_3_1()Dim i, n, s As Doublen = Val(InputBox("请输入n"))i = 2: s = 1Do While i <= ns = s + ii = i + 1LoopDebug.Print "S="; sEnd Sub(2)Public Sub 改错8_3_2_求分式多项和()Dim nm, n, k ,p As integerDim y As Doublenm = Val(InputBox("请输入计算公式1后面的项目数目个数")) n = 1: p = 1: y = 1Do While n <= nmk = 2 * n + 1p = p * (k - 1) * ky = y + ((-1) ^ n) / pn = n + 1LoopDebug.Print "y="; yEnd Sub4.编程题(1)用if……else语句编程Public Sub分段函数1()Dim x, y, z As Doublex = Val(InputBox("请输入x的值:"))y = Val(InputBox("请输入y的值:"))If x > y And y <> 0 Thenz = x / yElseIf x = y Thenz = x * y * Sgn(y)Elsez = x + yEnd IfDebug.Print "x="; xDebug.Print "y="; yDebug.Print "z="; zEnd Sub(1)用select case语句结构编程Public Sub分段函数2()Dim x, y, z, a As Doublex = Val(InputBox("请输入x"))y = Val(InputBox("请输入y"))a = y - xSelect Case aCase Is > 0z = x + yDebug.Print zCase 0z = x * y * Sgn(y)Debug.Print zCase ElseIf y <> 0 Thenz = x / yDebug.Print zElseDebug.Print "z没有值"End IfEnd SelectEnd Sub(2)Public Sub 求解一元二次方程()Dim a, b, c As IntegerDim d, x1, x2, x3, x4 As Doublea = Val(InputBox("请输入a的整型数:"))b = Val(InputBox("请输入b的整型数:"))c = Val(InputBox("请输入c的整型数:"))d = b * b - 4 * a * cIf d > 0 Thenx1 = (-b + Sqr(d)) / (2 * a)x2 = (-b - Sqr(d)) / (2 * a)Debug.Print "x1="; x1, "x2="; x2Else if d=0 thenx3 = -b / (2 * a)x4 = -b/ (2 * a)Debug.Print "x3=";x3Debug.Print "x4=";x4ElseDebug.Print "方程没有实数解"End IfEnd Sub(3--1)用无条件转向语句GOTO编程Public Sub 数字与星期的转换1()Dim num As Integer10 num = Val(InputBox("请输入整数值:")) If num = 0 ThenDebug.Print "这是星期日"ElseIf num = 1 ThenDebug.Print "这是星期一"ElseIf num = 2 ThenDebug.Print "这是星期二"ElseIf num = 3 ThenDebug.Print "这是星期三"ElseIf num = 4 ThenDebug.Print "这是星期四"ElseIf num = 5 ThenDebug.Print "这是星期五"ElseIf num = 6 ThenDebug.Print "这是星期六"ElseIf num = -1 ThenDebug.Print "程序运行结束"EndElseDebug.Print "输入数据错误!"GoTo 10End IfEnd Sub(3--2)Public Sub数字与星期的转换2 ()Dim x As IntegerDo While Truex = Val(InputBox("请输入数字"))If x = 0 ThenDebug.Print "这是星期日"Exit DoElseIf x >= 1 And x <= 6 ThenDebug.Print "这是星期" + Str(x)Exit DoElseIf x = -1 ThenExit DoElseMsgBox ("输入数据错误!")End IfLoopEnd Sub(4)Public Sub 行李重量计费()Dim an, cn, weight, s_w, distance, fee As Doublean = Val(InputBox("请输入成年人数量"))cn = Val(InputBox("请输入未成年人数量"))weight = Val(InputBox("请输入行李重量"))distance = Val(InputBox("请输入距离"))s_w = weight - 20 * an - 10 * cnIf s_w <= 0 Thenfee = 0ElseIf distance / 100 = Int(distance / 100) Thenfee = 0.2 * s_w * (distance / 100)Elsefee = 0.2 * s_w * (Int(distance / 100) + 1) End IfEnd IfDebug.Print feeEnd Sub(5)Public Sub 求自然数的多项式和()Dim n, s As Integers = 0For n = 1 To 10s = s + (s + n)NextDebug.Print "S=1+(1+2)+(1+2+3)+...+1+2+3+...+10)="; s End SubRun:S=1+(1+2)+(1+2+3)+...+1+2+3+...+10)= 2036Public Sub 求多项自然数阶乘的和()Dim s, t As SingleDim n As Integert = 1s = 0For n = 1 To 20t = t * ns = s + tNextDebug.Print "1!+2!+3!+...+20!="; sEnd SubRun:1!+2!+3!+...+20!= 2.561327E+18(6)Public Sub 既能被3整除又能被5整除正整数个数() Dim i, x As Integerx = 0For i =100 To 200If i / 3 = Int(i / 3) And i / 5 = Int(i / 5) ThenDebug.Print ix = x + 1End IfNextDebug.Print "x="; xEnd SubRun:120135150165180195x= 7(7)Public Sub 输出直角三角形图案1()Dim i, j As IntegerFor i = 1 To 9Debug.PrintNextFor i = 1 To 4Debug.Print Tab(20); "*";For j = 1 To (2 * i - 2)Debug.Print "*";NextDebug.PrintNextEnd SubRun:****************Public Sub 输出直角三角形图案2() Dim i, j As IntegerFor i = 1 To 9Debug.PrintNextDebug.Print Tab(20); "*";For i = 1 To 4Debug.Print Tab(19 - i); "*";For j = 1 To (i + 1)Debug.Print "*";NextDebug.PrintNextEnd SubRun:*******************Public Sub 输出平行四边形图案() Dim i, j As IntegerFor i = 1 To 9Debug.PrintNextFor i = 1 To 5Debug.Print Tab(21 - i);For j = 1 To 6Debug.Print "*";NextDebug.PrintNextEnd SubRun:******************************(8)Public Sub 求选手获得的平均分()Dim score(1 To 11), minno, maxno, sum, aver As Single Dim i As Integerminno = 1maxno = 1sum = 0For i = 1 To 10score(i) = Val(InputBox("请输入选手的成绩值:")) Debug.Print score(i)NextFor i = 2 To 10If score(i) < score(minno) Thenminno = iEnd IfIf score(i) > score(maxno) Thenmaxno = iEnd IfNext iFor i = 1 To 10sum = sum + score(i)Next isum = sum - score(minno) - score(maxno)aver = sum / 8Debug.Print "该选手的平均分是:"; averEnd Sub(9)关于素数的求解(9-1)求100之内的所有素数Public Sub 求所有素数之和()Dim s, w, n As Integers = 0For w = 2 To 99 Step 2For n = 2 To Sqr(w)If w Mod n = 0 ThenExit ForEnd IfNextIf n > Sqr(w) Thens = s + wEnd IfDebug.Print "S="; sNextEnd Sub(9-2)Public Sub 求200以内的所有素数()Dim w, n As IntegerDebug.Print "200 以内的所有素数是:" For w = 2 To 199For n = 2 To Sqr(w)If w Mod n = 0 ThenExit ForEnd IfNext nIf n > Sqr(w) ThenDebug.Print w;End IfNextDebug.PrintEnd Sub(10)Public Sub 求水仙花数1()Dim i, j, k, n As IntegerDebug.Print "水仙花数是:"For i = 1 To 9For j = 0 To 9For k = 0 To 9n = i * 100 + j * 10 + kIf n = i * i * i + j * j * j + k * k * k ThenDebug.Print n;End IfNext kNext jNext iDebug.PrintEnd SubPublic Sub 求水仙花数2()Dim i, j, k, n As IntegerDebug.Print "水仙花数是:"For n = 150 To 999i = Int(n / 100)j = Int(n / 10 - i * 10)k = n Mod 10If n = i * i * i + j * j * j + k * k * k ThenDebug.Print n;End IfNextDebug.PrintEnd Subrun:水仙花数是:153 370 371 407(11)Public Sub 求分数数列和()Dim i, t, n As IntegerDim a, b, s As Singlen = 20a = 2:b = 1: s = 0For i = 1 To ns = s + a / bt = aa = a + bb = tNextDebug.Print "sum="; s;End Sub(12)Public Sub N年达到的利息()Dim y As IntegerDim interest1,interest As DoubleP=10000y = 0interest = 0Do Until interest >= 1000Interest1 =2*p* 0.0225 *(1-0.2) ‘一期2年整存整取扣税后的利息p=p+interest1 ‘扣税后的利息加上本金成为新一期的本金Interest=p-10000 ‘存款以来实际所的利息y = y + 2Debug.Print interest, yLoopEnd SubRun:360 2732.959999999999 4 1119.34656 6。
一.单项选择题(每小题2分,共10个题,20分)1.不属于事务特征的是()。
单选题 (2 分) 2分A.完整性2.事务一旦提交,其对数据库中数据的修改就是永久的,以后的操作或故障不会对事务的操作结果产生任何影响。
这个特性是事务的()。
单选题 (2 分) 2分D.持久性3.事务所包含的操作作为一个整体,要么都做,要么都不做,这个特性称为事务的()。
单选题 (2 分) 2分D.原子性4.关于SQL Server备份设备的说法,正确的是()。
单选题 (2 分) 2分A.备份设备可以是磁盘上的一个文件5.在简单恢复模式下,可以进行的备份是()。
单选题 (2 分) 2分C.仅完整备份和差异备份6.关于差异备份的说法,正确的是()。
单选题 (2 分) 2分B.差异备份备份的是从上次完整备份到当前时间数据库变化的内容7.关于日志备份的说法,错误的是()。
单选题 (2 分) 2分D.第一次对数据库进行的备份可以是日志备份8.设有如下备份操作:现从备份中对数据库进行恢复,正确的恢复顺序为()。
单选题 (2 分) 2分B.完整备份1,差异备份1,日志备份3,日志备份49.关于SQL Server数据库服务器登录账户的说法,错误的是()。
单选题 (2 分) 2分B.所有的Windows用户都自动是SQL Server的合法账户10.关于SQL Server 身份认证模式的说法,正确的是()。
单选题 (2 分) 2分C.在安装过程中可以设置身份认证模式,安装完成之后还可以再对其进行修改二.判断题(每小题2分,共5个题,10分)11.事务可以保证在一个事务中的全部操作或者全部成功,或者全部失败。
(对)判断题 (2 分) 2分12.ROLLBACK表示事物正常结束,COMMIT表示事务中的全部操作被撤销。
(错)判断题 (2 分) 2分13.事务的持久性是指数据库中一个事务的执行不能被其他事务干扰。
(错)判断题 (2 分) 2分14.对象权限是用户在已经创建好的对象上行使的权限,例如CRAETETABLE。
数据库原理与设计(MySQL版)附录A MySQL实验指导实验一数据库和表的管理一、实验目的1. 了解MySQL数据库的逻辑结构和物理结构的特点。
2. 学会使用SQL语句创建、选择、删除数据库。
3. 学会使用SQL语句创建、修改、删除表。
4. 学会使用SQL语句对表进行插入、修改和删除数据操作。
5. 了解MySQL的常用数据类型。
二、实验内容1. 使用SQL语句创建数据库studentsdb。
2. 使用SQL语句选择studentsdb为当前使用数据库。
3. 使用SQL语句在studentsdb数据库创建数据表student_info、curriculum、grade,三个表的数据结构如表1-表3所示。
表1 student_info表结构表2 curriculum表结构列名数据类型允许NULL值主键课程编号char(4) 否是课程名称varchar(50) 是否学分int 是否表3 grade表结构列名数据类型允许NULL值主键学号char(4) 否是课程编号char(4) 否是分数int 是否4. 使用SQL语句INSERT向studentsdb数据库的student_info、curriculum、grade 表插入数据,各表数据如表4-表6所示。
表4 student_info表的数据表6 grade表的数据学号课程编号分数0001 0001 800001 0002 910001 0003 880001 0004 850001 0005 770002 0001 730002 0002 680002 0003 800002 0004 790002 0005 730003 0001 840003 0002 920003 0003 810003 0004 820003 0005 755.使用SQL语句ALTER TABLE修改curriculum表的“课程名称”列,使之为空。
6. 使用SQL语句ALTER TABLE修改grade表的“分数”列,使其数据类型为decimal(5,2)。
数据库技术实验报告的答案实验目的:本次实验旨在加深对数据库管理系统(DBMS)的理解,掌握数据库设计、实现和查询的基本技能,并通过实际操作来熟悉SQL语言的运用。
实验环境:1. 操作系统:Windows 102. 数据库管理系统:MySQL 8.03. 开发工具:Visual Studio Code实验内容:1. 数据库的创建与设计2. 数据表的创建与数据类型选择3. 数据的插入、更新与删除4. SQL查询语句的编写与执行5. 数据库的备份与恢复实验步骤与结果:1. 数据库的创建与设计:- 使用MySQL命令行工具创建名为“StudentsDB”的数据库。
- 设计了三个表:Students(学生信息),Courses(课程信息),Enrollments(选课信息)。
2. 数据表的创建与数据类型选择:- 为Students表创建字段:StudentID(INT,主键),Name (VARCHAR(50)),Age(INT),Gender(CHAR(1))。
- 为Courses表创建字段:CourseID(INT,主键),CourseName (VARCHAR(100)),Credits(INT)。
- 为Enrollments表创建字段:EnrollmentID(INT,主键),StudentID(INT),CourseID(INT),Grade(CHAR(2)),并设置StudentID和CourseID为外键。
3. 数据的插入、更新与删除:- 向Students表插入了10条学生记录。
- 向Courses表插入了5门课程记录。
- 通过Enrollments表记录了学生的选课情况,包括成绩。
- 使用UPDATE语句更新了学生的选课成绩。
- 使用DELETE语句删除了某些学生的选课记录。
4. SQL查询语句的编写与执行:- 编写了多条SELECT语句,查询了学生信息、课程信息以及学生的选课情况。
- 使用了JOIN操作查询了学生与其选修课程的关联信息。
实验3 使用T-SQL语言完成单表查询一、实验目的掌握使用T—SQL语言完成单表查询掌握常用谓词的用法掌握where子句的用法掌握order by 子句的用法掌握group by 子句和having短语的用法二、实验环境Microsoft SQL Server 2000。
三、实验内容和要求1.查询全体学生的详细信息。
2.查询所有课程的详细信息.3.查询所有选课记录的详细信息,要结果表中的列名以中文的形式显示,分别为:学号,课程号,成绩。
4.查询已被学生选修了的课程的编号。
5.查询系别编号为“d002”的学生的姓名和性别。
6.查询年龄在19至21岁或者性别为“女”的学生的学号和所在系别编号。
7.查询系别编号为d001、d002和d003的学生的学号和姓名。
8.查询课程名为“C_”开头的课程名和学分.9.某些学生入学后还没有确定所在的系,查询还没有确定系的学生的姓名。
10.查询成绩大于60分的学生的学号、课程号和成绩,并将查询结果按课程编号升序排列,同一课程的成绩按分数降序排列。
11.查询学校所开设的总的课程数.12.计算2号课的学生成绩总和以及平均成绩,对应的列名分别为“总成绩”和“平均成绩”。
13.查询选修了3号课程的学生的最高分和最低分,对应的列名分别为“最高分”和“最低分"。
14.求各个系别的编号以及各系的人数。
15.查询选课人数大于等于2人的课程编号以及选课的人数。
16.查询学生200215122选修课程的总成绩对应的列名为“总成绩”,并显示出学号。
17.查询有2门以上课程是80分以上的学生的学号及课程数。
18.查询选修了1号课的学生的学号和成绩,结果按成绩降序、学号升序排列.实验1 使用T-SQL语言建库、建表实验2 向表中增、删、改数据四、实验目的掌握使用T-SQL建库、建表、修改表;掌握使用T-SQL对表中数据进行插入、删除和修改.五、实验环境Microsoft SQL Server 2000.六、实验内容和要求19.建立数据库STDB20.在数据库STDB中建立四个表:Student表Department表Course表21.分别向以上四个表中增加数据。
数据库技术及应用习题答案闫明霞等编习题 11.1 选择题1、A2、C3、C4、B5、C6、A7、C8、B9、D 10、A 11、D 12、A 13、A1.2 填空题1.数据2.数据的逻辑独立性3.数据的物理独立性4.层次数据模型,网状数据模型,关系数据模型5.能按照人们的要求真实地表示和模拟现实世界、容易被人们理解、容易在计算机上实现6.实体、记录7.属性、字段8.码9.域10.一对一、一对多、多对多11.E-R模型12.E-R模型13.层次模型、网状模型、关系模型14.数据操作、完整性约束15.矩形、菱形、椭圆形16.层次模型、一对多17.网状模型18.关系模型19.关系20.外模式、模式、内模式21.三级模式、两级映像22.外模式、模式、内模式23.数据、程序24.数据逻辑、数据物理25.DBMS(数据库管理系统)、DBA(数据库管理员)1.4 综合题2.(注:各实体的属性省略)3.习题 22.1 单项选择题1、C2、A3、B4、C5、C6、D7、A8、B2.2 填空题1.集合2. 能唯一标识一个实体的属性3.系编号,学号,系编号4.关系,元组,属性5.关系模型,关系,实体,实体间的联系6.投影2.4 综合题1、πsno(σcno=’2’(SC))2、sno(σcname=’信息系统’(SC COURSE))3、no,SNAME,SAGE(STUDENT)习题 44.1 单项选择题1、B2、A3、C4、A5、A6、C7、C8、D9、B10、A11、B 12、A 13、C14、C15、C4.2 填空题1、drop table2、alter table add <列名或约束条件>3、with check option4、基本表基本表5、distinct group by roder by6、数据定义数据操纵数据控制7、distinct8、like % _9、自含式嵌入式10、order by asc desc4.3 综合题1、SELECT XH, XM, ZYM, BH, RXSJ FROM STU_INFO, GFIED WHERE STU_INFO.ZYH = GFIED.ZYH AND NL > 23 AND XBM = '男'2、SELECT ZYM 专业名, count(*) 人数FROM STU_INFO, GFIEDWHERE STU_INFO.XSH = '03' AND STU_INFO.ZYH = GFIED.ZYHGROUP BY ZYM3、SELECT bh,count(*) as 人数FROM STU_INFO GROUP BY bh4、SELECT XH, XM, XBM, BH FROM STU_INFOWHERE ZYH IN ( SELECT ZYH ROM STU_INFO WHERE XM = '李明' ) ORDER BY XH5、SELECT DISTINCT GCOURSE.KCH, KM FROM STU_INFO, XK, GCOURSEWHERE XK.KCH = GCOURSE.KCH AND STU_INFO.XSH = '12'AND STU_INFO.XH = XK.XH6、SELECT COUNT(DISTINCT KCH) AS 选课门数, A VG(KSCJ) AS 平均成绩FROM STU_INFO, XKWHERE STU_INFO.XH = XK.XH AND XSH = '12'7、SELECT DISTINCT STU_INFO.XH, XM, BH, ZYM, KMFROM STU_INFO, XK, GFIED, GCOURSEWHERE KSCJ > 85 AND STU_INFO.XH = XK.XH AND XK.KCH = GCOURSE.KCHAND STU_INFO.ZYH = GFIED.ZYHORDER BY ZYM, BH, STU_INFO.XH8、SELECT STU_INFO.XH, XM, XSM, ZYM, BH, PYCCMFROM STU_INFO, XK, GDEPT, GFIEDWHERE KKNY = '20011' AND STU_INFO.XH = XK.XH AND STU_INFO.XSH =GDEPT.XSH AND STU_INFO.ZYH = GFIED.ZYH GROUP BY STU_INFO.XH, XM, XSM, ZYM, BH, PYCCMHA VING COUNT(*) > 109、SELECT DISTINCT bhFROM STU_INFO10、DELETE * FROM STU_INFOWHERE XH LIKE '2000%'或DELETE * FROM STU_INFOWHERE LEFT(XH,4) = '2000'11、ALTER TABLE STU_INFOADD BYSJ varchar(8)12、UPDATE XKSET KSCJ = 60WHERE KSCJ BETWEEN 55 AND 59 andXH in(SELECT xh FROM stu_info WHERE zyh = '0501')and K CH in ( SELECT kch FROM gcourse WHERE km = '大学英语' )13、UPDATE GCOURSESET KCXF=6WHERE KCH = '090101'14、CREATE TABLE CCOURSE(KCH char(6),KM varchar(30),KCYWM varchar(30))15、CREATE VIEW ISE ASSELECT *FROM STU_INFO WHERE XSH=’12’习题 55.1 单项选择题1、B2、A3、B4、A5、B6、C7、B5.2 填空题1、使属性域变为简单域消除非主属性对主关键字的部分依赖消除非主属性对主关键字的传递依赖2、平凡函数依赖3、Y也相同唯一的Y值5.3简答题2、(1) R的码是(Sno,Cno),R是1NF,因为Teacher和Title属性部分函数依赖于码(Sno,Cno),所以R∈1NF(2)SC(Sno,Cno,Grade)CT(Cno,teacher) TT(Teacher,title)3、D->B C->A4、需求分析需求分析是数据库设计的第一个阶段,从数据库设计的角度来看,需求分析的任务是对现实世界要处理的对象(组织、部门、企业等)进行详细的调查了解,通过对原系统的了解,收集支持新系统的基础数据并对其进行处理,在此基础上确定新系统的功能。
计算机数据库测试题及答案解析1. 数据库系统是什么?数据库系统是一种结构化数据的综合管理系统,它提供了数据的存储、管理、查询、更新等功能,以满足应用程序的需求。
2. 数据库的特点有哪些?- 数据的独立性:数据库系统将数据从应用程序中解耦,使得数据可以独立于应用程序进行管理和使用。
- 数据的共享性:数据库可以被多个应用程序和用户同时访问和使用。
- 数据的冗余性控制:通过数据库的关系模型和规范化技术,可以减少数据的冗余,提高数据的一致性和完整性。
- 数据的安全性:数据库系统提供了数据的权限管理和安全控制机制,保护数据不被未经授权的访问和修改。
- 数据的持久性:数据库系统可以将数据持久地保存在存储介质中,即使在系统故障或断电情况下,数据仍然可以恢复。
3. 数据库的三级模式是什么?数据库的三级模式包括外模式、概念模式和内模式。
- 外模式:外模式是用户与数据库系统接触的最高级别,它描述了用户对数据的逻辑视图和操作方式。
- 概念模式:概念模式是数据库的全局逻辑视图,它描述了整个数据库的结构和组织方式。
- 内模式:内模式是数据库物理存储的视图,它描述了数据在存储介质上的存储结构和访问方式。
4. 数据库的完整性约束有哪些?数据库的完整性约束主要包括实体完整性、参照完整性和用户自定义完整性。
- 实体完整性:实体完整性保证了每个实体在关系中都有唯一标识,并且不存在重复的实体。
- 参照完整性:参照完整性保证了数据库中的外键与对应的主键值保持一致。
- 用户自定义完整性:用户可以自定义其他需要满足的完整性规则,例如限定某个字段的取值范围。
5. 数据库的范式是什么?数据库的范式是一种规范化设计方法,用于减少数据的冗余和提高数据的一致性。
- 第一范式(1NF):要求每个属性都是原子的,不可再分。
该范式消除了属性中的重复值。
- 第二范式(2NF):要求满足1NF,且非主键属性完全依赖于候选键(主键)。
该范式消除了部分函数依赖。
第 1 章绪论2.使用数据库系统有什么好处?答:使用数据库系统的优点是很多的,既便于数据的集中管理,控制数据冗余,提高数据的利用率和一致性,又有利于应用程序的开发和维护。
6.数据库管理系统的主要功能有哪些?答: ( l)数据库定义功能;( 2)数据存取功能;( 3)数据库运行管理;( 4)数据库的建立和维护功能。
8 .试述概念模型的作用。
答:概念模型实际上是现实世界到机器世界的一个中间层次。
概念模型用于信息世界的建模,是现实世界到信息世界的第一层抽象,是数据库设计人员进行数据库设计的有力工具,也是数据库设计人员和用户之间进行交流的语言。
12.学校中有若干系,每个系有若干班级和教研室,每个教研室有若干教员,其中有的教授和副教授每人各带若干研究生;每个班有若干学生,每个学生选修若干课程,每门课可由若干学生选修。
请用 E 一 R 图画出此学校的概念模型。
答:实体间联系如下图所示,联系-选修有一个属性:成绩。
各实体需要有属性说明,需要画出各实体的图(带属性)或在下图中直接添加实体的属性,比如:学生的属性包括学号、姓名、性别、身高、联系方式等,此略。
13.某工厂生产若干产品,每种产品由不同的零件组成,有的零件可用在不同的产品上。
这些零件由不同的原材料制成,不同零件所用的材料可以相同。
这些零件按所属的不同产品分别放在仓库中,原材料按照类别放在若干仓库中。
请用 E 一 R 图画出此工厂产品、零件、材料、仓库的概念模型。
答:各实体需要有属性,此略。
联系组成、制造、储存、存放都有属性:数量。
20.试述数据库系统三级模式结构,这种结构的优点是什么?答:数据库系统的三级模式结构由外模式、模式和内模式组成。
外模式,亦称子模式或用户模式,是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。
模式,亦称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
实验八实验内容(2)二、实验内容与步骤1.SQL数据查询命令的应用(9) 查询基础工资最高的教师姓名和职称(10) 查询各部门基础工资与职务补贴之和的最高值、最低值(11) 查询人数大于等于4人的部门名称和人数(12) 按部门编号的降序显示教师姓名、部门编号和职称(13) 查询工资表的数据,存放到数组中(14) 查询工资表的数据,存放到临时表中4.使用rsgl数据库,写出分组和统计计算查询的SQL命令(1) sele count(*) 财政系人数from zgqk where bmbh=;( sele bmbh from bm where bmmc="财政系")或者sele count(*) 财政系人数from zgqk,bm where;bm.bmbh=zgqk.bmbh and bmmc="财政系"或者sele count(b mbh) 财政系人数from zgqk,bm where;bm.bmbh=zgqk.bmbh and bmmc="财政系"(2) sele bmmc, count(zgqk.bmbh) 人数from zgqk ;right join bm on zgqk.bmbh=bm.bmbh group by bm.bmbh注意:①count(zgqk.bmbh)中必须为zgqk.bmbh,目的是不统计.NULL.内容的记录。
可以先查看右连接情况:sele * from zgqk right join bm on zgqk.bmbh=bm.bmbh②此应该采用右连接right join,因为“统计每个系”,必须考虑bm表中的所有系部。
③group by bm.bmbh,分组应该按照bm的bmbh分组,而不是zgqk的bmbh;运行①中的sele * from zgqk right join bm on zgqk.bmbh=bm.bmbh,查看运行结果就知道原因了。
(3) sele bmbh, count(*) 教授人数from zgqk where ;zc=”教授” group by bmbh order by 教授人数desc或者sele bmmc, count(*) 教授人数from zgqk, bm;where zgqk.bmbh=bm.bmbh and zc=”教授”;group by zgqk.bmbh order by 教授人数desc注意:因为该题有where zc=”教授”的限定,所以不需要再类似(2)题的设置。
(4) sele sum(jcgz+zwgz+zjgz) 全体职工工资from gz(5) sele bmmc, count(*) jcgz 超过1800人数from zgqk, bm, gz;where zgqk.bmbh=bm.bmbh and zgqk.zgbh=gz.zgbh and jcgz>=2500;group by zgqk.bmbh(6) sele top 1 xm, count(*) 数目from zgqk, kyqk where zgqk.zgbh=kyqk.zgbh;group by kyqk.zgbh order by 数目desc或者sele top 1 xm, count(xm) 数目from zgqk, kyqk where zgqk.zgbh=kyqk.zgbh;group by xm order by 数目desc(7) sele top 1 bmmc, count(*) 数目from zgqk, bm, kyqk where zgqk.bmbh=bm.bmbh;and zgqk.zgbh=kyqk.zgbh group by bmmc order by 数目desc(8) sele zgqk.zgbh, xm, jcgz+zwgz+zjgz+fljj yfgz from zgqk, gz;where zgqk.zgbh=gz.zgbh into table zggz(9) sele bmmc, sum(jcgz+zwgz+zjgz+fljj-sdf-mqf) sfgz from zgqk, bm, gz;where zgqk.bmbh=bm.bmbh and zgqk.zgbh=gz.zgbh;group by bmmc order by sfgz desc into cursor sfgz5.利用所建立的xsgl数据库,使用SQL_Select完成下列查询:(1) 查询系号为"d01"的男学生信息select * from student where dno="d01" and sex="男"(2) 查询所有学生某门课(如"C001")的成绩,并按成绩由高到低的顺序输出sele sname,grade from student,sc where;student.sno=sc.sno and cno="c001" order by grade desc若不显示姓名,则命令为:sele grade from sc where cno="c001" order by grade desc(3) 查询89、90两年出生的女同学的名单sele sname from student where;sex="女" and birthday between {^1989/01/01} and {^1990/12/31}(4) 查询“计算机基础”课不及格的学生名单(输出学生的学号、姓名及成绩)Sele sno,sname,grade from student,sc where student.sno=sc.sno and ;sno=(sele sno from course where cname=”计算机基础”) and grade<60(5) 查询同时选修了"C001"和"C002"的学生的学号Sele a.sno from sc a, sc b where a.sno=b.sno;and o="C001" and o="C002"(6) 查询选修了"C001"、但没有选修"C002"的学生的学号Sele sno from sc where ;sno in (Sele sno from sc where cno="C001" ) and ;sno not in (Sele sno from sc where cno="C002")(7) 查询至少选修了"C001"和"C002"中一门课的学生Sele sno from sc where cno="C001" union ;sele sno from sc where cno="C002"或者Sele dist sno from sc where ;sno in (Sele sno from sc where cno="C001" ) or ;sno in (Sele sno from sc where cno="C002")(8) 求女学生的学生总数sele count(sno) from student where sex="女"(9) 查询有多少名同学计算机基础课不及格Sele count(*) from sc where ;cno=(sele cno from course where cname=”计算机基础”) and grade<60(10) 求每个系的学生数而不是求学生总数。
希望得到类似下面的输出:dno count(*)d01 120d02 65sele dno,count(*) from student group by dno(11) 查询每个学生已获得的学分(注:成绩及格即取得相应课程的学分)Sele sno,sum(credit) from sc,course where o=o group by sno(12) 查学分大于30分的学生(只输出学号)Sele sno from sc,course where o=o group by sno having sum(credit)>30(13) 查询从未被选修的课程sele cname from course where cno not in (sele cno from sc)实验九参考答案二、实验内容与步骤1.SQL数据修改命令练习(1)向zgqk表中插入一条记录,zgbh, xm, xb, xl, xw, zc等字段的值分别为。
Insert into zgqk(zgbh, xm, xb, xl, xw, zc) ;values(“199009”,”和红”,”女”,”研究生”,”博士”,”助教”)(2)向zgqk表中插入3条记录,其zgbh字段的第一个字母均设置为”A”,如“A00001”。
Insert into zgqk values("A00001","和红1", "女",{^1969/12/21},{^1999/12/21}, ;"研究生","博士","助教",.t.,"aa","A","105")Insert into zgqk values("A00002","和红2", "女",{^1969/12/21},{^1999/12/21}, ;"研究生","博士","助教",.t.,"aa","A ","105")Insert into zgqk values("A00003","和红3", "女",{^1969/12/21},{^1999/12/21}, ;"研究生","博士","助教",.t.,"aa","A","105")(3)删除上题中插入的3条记录。