山东大学数据库习题及答案
- 格式:doc
- 大小:151.50 KB
- 文档页数:6
数据库基础课后习题及答案数据库基础课后习题及答案数据库是计算机科学中非常重要的一个概念,它用于存储和管理大量的数据。
在数据库基础课程中,学生通常需要完成一些习题来巩固所学的知识。
本文将介绍一些常见的数据库基础课后习题,并提供相应的答案。
一、选择题1. 数据库是指什么?A. 存储和管理数据的软件系统B. 存储和管理硬件设备的软件系统C. 存储和管理网络的软件系统D. 存储和管理操作系统的软件系统答案:A2. 数据库管理系统(DBMS)的主要功能是什么?A. 存储和管理数据B. 分析和处理数据C. 网络和通信D. 操作系统管理答案:A3. 下列哪个不属于数据库的特点?A. 数据共享B. 数据冗余C. 数据独立性D. 数据一致性答案:B4. 数据库中的数据是以什么形式存储的?A. 文件B. 表格C. 文本D. 图像答案:B5. 数据库中的主键是什么?A. 唯一标识一个记录的属性B. 存储在数据库中的所有数据C. 数据库中的表格D. 数据库中的索引答案:A二、填空题1. 数据库中的关系是指什么?关系是指数据之间的联系和关联。
2. 数据库中的SQL是什么意思?SQL是结构化查询语言(Structured Query Language)的缩写。
3. 数据库中的DDL是什么意思?DDL是数据定义语言(Data Definition Language)的缩写。
4. 数据库中的DML是什么意思?DML是数据操作语言(Data Manipulation Language)的缩写。
5. 数据库中的索引有什么作用?索引可以提高数据库的查询效率,加快数据检索的速度。
三、简答题1. 数据库的三级模式是什么?数据库的三级模式包括外模式、概念模式和内模式。
外模式是用户对数据库的直接接口,概念模式是数据库的全局逻辑结构,内模式是数据库在物理存储上的表示。
2. 数据库的ACID是什么意思?ACID是数据库事务的四个特性,包括原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。
《数据库原理及其应用》模拟题1一、选择题1-5 DCACC二、填空题1、文本框用于数据输入输出的属性是V ALUE 。
2、用于处理文本信息的控件有:文本框、标签、编辑框。
3、SQL语言所具有的功能是数据定义、数据操纵、数据控制。
4、查询向导中可以有三种选择:查询向导、交叉表格查询、图形向导。
5、参照完整性的规则包括插入规则、更新规则、删除规则。
6、建立索引的字段值不允许重复,且一个表中只能创建一个,它应该是主索引。
7、8、在数据表中,每一行是关于客观事物的具体描述,叫做元组。
9、表结构定义了数据表的字段个数、字段名、字段类型、字段宽度和小数位数等内容。
10、日期型常量的一般格式为{yyyy-mm-dd} 。
11、数据库表中的字段有效性规则用来指定字段的验证性规则。
12、数据库系统的组成是数据库、计算机硬件、数据库管理系统、应用程序、用户13、14、利用SQL语句创建一个表文件,文件名为student,表结构由五个字段组成,分别是xm字符类型,长度为10;xb 字符类型,长度为2,默认值为“男”;csrq 日期类型;sfty 逻辑类型;bz 备注类型。
15、假设有一个设备管理表sb.dbf,其表结构为:sb (编号C(5),名称C(6),启用日期D,价格N(9,2),部门C(2),主要设备L)在sb表中编号字段值要求唯一。
利用SQL语句查询sb表中价格大于10000元的所有主要设备。
16、假设由一个设备管理表sb,其结构见第15题。
还有一个设备大修表dx.dbf,其表结构为:dx(编号C(5),费用N(6,1)),每台设备大修一次,就作为一条记录保存在dx 表中,因此一台设备在dx表中可能有多条记录,即维修过多次。
利用SQL语句查找设备编号为106-1的设备的大修费用及其设备名称,并按费用降序排列。
17、利用SQL语句查询设备管理表sb中的部门数。
18、19、20、焦点事件包括When事件、Valid事件、21、2223三、简答及描述题1、举例说明五种VFP数据类型的特点。
山东大学信息查询数据库一.设计步骤1.需求分析a.数据库所涉及的基本情况b.不同用户对数据库要求c.建立数据流图d.建立数据字典2.概念结构设计3.逻辑结构设计二.数据库具体设计过程1.需求分析a.数据库所涉及的基本情况(1)教务管理员,宿舍管理员等管理员基本信息各管理员有相应的管理员号,管理员用户名,管理员密码,可以访问相应的信息。
(2)校区基本情况山大共有六个校区,为每一个校区给定编号,校区地址等信息。
(3)院部基本情况各学院有院号,院名和院长等基本信息。
(4)班级基本情况各班级根据所在校区,学院和年级设置一个班级号以及班级名等信息。
(5)课程基本情况为每门课程分配课程号,课程名,各课程对应学分和属性等信息。
(6)教师基本情况各教师根据工作起始年份和序号给定教师号,另外还有教师姓名等信息(7)学生基本情况根据校区,学院,年级和序号给定学生号,另外还有学生姓名等基本信息(8)宿舍基本情况各宿舍根据所在校区,楼号和宿舍序号设置一个宿舍号等信息。
(9)课程编排基本情况包含教师号,课程号和班级号等信息(10)选课基本情况包括学生号,课程号和教师号等基本信息。
(11)职工基本情况职工根据所在的校区和宿舍楼号以及职工序号来给定职工编号,另外还有职工名,职工性别等基本信息。
b.用户对数据库的要求(1)管理员信息要求。
管理员能够完成对宿舍,学生,校区,课程编排以及教师等信息的查询。
②处理过程。
管理员能够完成对宿舍,学生,校区,课程编排以及教师等信息的查询。
③安全性与完整性要求。
安全性要求:•只有合法用户,使用正确密码,方可登录到查询系统。
•对不同的用户设置相应的权限,限制用户对数据库的访问内容。
完整性要求:•各种信息记录完整,记录内容不得为空。
•保证个数据间的联系正确性。
•相同的数据在不同记录中的一致性。
(2)教师①信息要求。
教师能够完成对学生,选课以及课程编排等的信息查询。
②处理过程。
教师能够完成对学生,选课以及课程编排等的信息查询。
⼭东⼤学数据库实验答案2—8⼭东⼤学数据库实验答案2—8 CREATE TABLE test2_01 ASSELECT SID, NAMEFROM pub.STUDENTWHERE sid NOT IN(SELECT sid FROM pub.STUDENT_COURSE)CREATE TABLE test2_02 ASSELECT SID,NAMEFROM PUB.STUDENTWHERE SID IN(SELECT DISTINCT SIDFROM PUB.STUDENT_COURSEWHERE CID IN(SELECT CID FROM PUB.STUDENT_COURSE WHERESID='200900130417'))CREATE TABLE test2_03 ASselect SID,NAME from PUB.STUDENT where SID in ( select distinct SID from PUB.STUDENT_COURSE where CID in (select CID from PUB.COURSE where FCID='300002') )CREATE TABLE test2_04 ASselect SID,NAME from PUB.STUDENT where SID in ( select distinct SID from PUB.STUDENT_COURSE where CID in (select CID from PUB.COURSE where NAME='操作系统')intersectselect distinct SID from PUB.STUDENT_COURSE where CID in (select CID from PUB.COURSE where NAME='数据结构') )create table test2_05 aswith valid_stu(sid,name) as(select SID,NAME from PUB.STUDENT where AGE=20 and SID in (select SID from PUB.STUDENT_COURSE))select sid,name as name,ROUND(avg(score)) as avg_score,sum(score) as sum_score fromPUB.STUDENT_COURSE natural join valid_stu where SID in (select SID from valid_stu)group by SID,NAMEcreate table test2_06 asselect CID,(max(SCORE))max_score from PUB.STUDENT_COURSE group byCIDcreate table test2_07 asselect SID,NAME from PUB.STUDENT where(NAME not like '张%' and NAME not like '李%' and NAME not like '王%') create table test2_08 aswith xing(value) as (select substr(NAME,1,1) from PUB.STUDENT)select value as second_name,count(value) as p_count from xing group by valuecreate table test2_09 asselect distinct SID,NAME,SCORE from PUB.STUDENT_COURSE natural join PUB.STUDENTwhere CID ='300003';create table test2_10 asselect distinct SID,CID from PUB.STUDENT_COURSE where SID in (select SID from PUB.STUDENT_COURSE) /* 1 */create table test3_01 asselect * from pub.student_31 where regexp_like(SID,'^[0-9]+$')/* 2 */create table test3_02 asselect * from pub.student_31where to_number(substr(BIRTHDAY,8,2))+AGE=112/* 3 */create table test3_03 asselect * from pub.student_31where SEX is null or SEX='男' or SEX='⼥'/* 4 */create table test3_04 asselect * from pub.student_31where DNAME is not null and length(DNAME)>=3 and instr(DNAME,' ')<=0 /* 5 */create table test3_05 asselect * from pub.student_31where regexp_like(CLASS,'^[0-9]{4}$')/* 6 */create table test3_06 asselect * from pub.student_31where regexp_like(SID,'^[0-9]+$')and to_number(substr(BIRTHDAY,8,2))+AGE=112 and (SEX is null orSEX='男' or SEX='⼥')and (DNAME is not null and length(DNAME)>=3 and instr(DNAME,' ')<=0) and regexp_like(CLASS,'^[0-9]{4}$') and (instr(NAME,' ')<=0 and length(NAME)>=2)/* 7 */create table test3_07 asselect * from pub.student_course_32 where SID in (select SID from pub.student)/* 8 */create table test3_08 asselect * from pub.student_course_32 natural join pub.teacher_course /* 9 */create table test3_09 asselect * from pub.student_course_32 where SCORE>=0 and score <=100 /* 10 */create table test3_10 asselect * from pub.student_course_32 natural join pub.teacher_course where SID in (select SID from pub.student) and CID in (select CID from pub.course) and TID in (select TID from pub.teacher) and SCORE>=0 and score <=100/*-------------- test4_01 --------------*/ create table test4_01 as select * from pub.student_41;ALTER TABLE test4_01 ADD sum_score number;update test4_01 set sum_score=(select sum(score) from pub.student_course a wheretest4_01.sid=a.sid group by sid);/*-------------- test4_02 --------------*/create table test4_02 as select * from pub.student_41;ALTER TABLE test4_02 ADD avg_score number;update test4_02 set avg_score =(select round(avg(score),1) from pub.student_course a wheretest4_02.sid=a.sidgroup by sid);/*-------------- test4_03 --------------*/create table test4_03 as select * from pub.student_41;ALTER TABLE test4_03 ADD sum_credit number;update test4_03 set sum_credit =(with a as (select * from pub.student_course natural join pub.course) (select sum(credit) from awhere SCORE>=60 and test4_03.sid=a.sid group by sid) )/* 4 */create table test4_04 as select * from pub.student_41;update test4_04 set dname=(select did from pub.department wheretest4_04.dname=pub.department.dname)where dname in (select dname from pub.department);/* 5 */create table test4_05 as select * from pub.student_41;ALTER TABLE test4_05 add did varchar(2);ALTER TABLE test4_05 ADD sum_score number;ALTER TABLE test4_05 ADD avg_score number;ALTER TABLE test4_05 ADD sum_credit number;update test4_05 set sum_score=(select sum(score) from pub.student_course a wheretest4_05.sid=a.sid group by sid);update test4_05 set avg_score =(select round(avg(score),1) from pub.student_course a wheretest4_05.sid=a.sidgroup by sid);update test4_05 set sum_credit =(with a as (select * from pub.student_course natural join pub.course) (select sum(credit) from awhere SCORE>=60 and test4_05.sid=a.sid group by sid));update test4_05 set did =(select did from pub.department wherepub.department.dname=test4_05.dname) where dname in (select dname from pub.department);update test4_05 set did =(select did from pub.department_41 where pub.department_41.dname=test4_05.dname) where dname in (select dname from pub.department_41);update test4_05 set did ='00' where did is null;/* 6 */create table test4_06 as select * from pub.student_42;update test4_06 set name=replace(name,' ','');/* 7 */create table test4_07 as select * from pub.student_42;update test4_07 set SEX=substr(trim(SEX),1,1) where length(SEX)<>1;/* 8 */create table test4_08 as select * from pub.student_42;update test4_08 set CLASS=substr(CLASS,1,4) where length(CLASS)<>4;/* 9 */create table test4_09 as select * from pub.student_42;update test4_09 set AGE=112-to_number(substr(BIRTHDAY,8,2)) where AGE is null;/* 10 */create table test4_10 as select * from pub.student_42;update test4_10 set name=replace(name,' ',''),DNAME=replace(DNAME,' ','');update test4_10 set SEX=substr(trim(SEX),1,1) where length(SEX)<>1;update test4_10 set CLASS=substr(CLASS,1,4) where length(CLASS)<>4;update test4_10 set AGE=112-to_number(substr(BIRTHDAY,8,2)) where AGE is null;create table test5_10(test varchar(20),age numeric (3));insert into test5_10 values('结果1',88);insert into test5_10 values('结果2',90);insert into test5_10 values('结果3',90);insert into test5_10 values('结果4',86);insert into test5_10 values('结果5',90);insert into test5_10 values('结果6',90);insert into test5_10 values('结果7',86);insert into test5_10 values('结果8',86);insert into test5_10 values('结果9',76);insert into test5_10 values('结果10',86);/* 1 */create view test6_01 asselect sid,name,dname from pub.studentwhere age<20 and dname='物理学院' order by sid/* 2 */create view test6_02 aswith temp_table(sid,ss) as(select sid,sum(score) from pub.student_course group by sid) select sid,name,dname,ss as sum_score from pub.student natural join temp_table where class='2009' and dname='软件学院'/* 3 */create view test6_03 asselect * from pub.student_course natural join pub.student whereclass='2010' and dname='计算机科学与技术学院' and cid =(select cid from pub.course where name='操作系统')/* 4 */create view test6_04 asselect sid,/doc/06a78e778662caaedd3383c4bb4cf7ec4bfeb671.html from pub.student_course natural join pub.studentwhere score>90 and cid =(select cid from pub.course where name='数据库系统')/* 5 */create view test6_05 asselect sid,cid,name,score from pub.student_course natural joinpub.coursewhere sid in (select sid from pub.student where name='李龙')/* 6 */create view test6_06 aswith a as (select sid,count(*) as totc from pub.student_course group by sid)select sid,name from pub.student where sid in (select sid from a where totc>=(selectcount(*) from pub.course))/* 7 */create view test6_07 asselect * from test6_06 where sid not in (select distinct sid from pub.student_course where sid in(select sid from test6_06)and score<60)/* 8 */create view test6_08 asselect cid,name from pub.coursewhere fcid in (select cid from pub.course where credit=2)/* 9 */create view test6_09 aswith a(sid,sum_credit) as(select sid,sum(credit) as sum_creditfrom pub.student_course natural join pub.course where SCORE>=60 group by sid)select sid,name,sum_credit from pub.student natural join a where class='2010' and dname='化学与化⼯学院'/* 10 */create view test6_10 asselect cid,name from pub.coursewhere fcid in(select cid from pub.course where fcid is not null)/* 1 */create table test7_01 asselect First_name,count(*) as frequency from( select substr(NAME,2) as First_name from pub.student ) group by First_name /* 2 */create table test7_02 asselect letter,count(*) as frequency from(select substr(NAME,2,1) as letter from pub.studentunion allselect substr(NAME,3) as letter from pub.student wherelength(Name)=3 ) group by letter/* 3 */create table test7_03 aswith a as (select sid,sum(credit) as tot from pub.student_course natural join pub.course where SCORE>=60 group by sid),b as (select * from pub.student natural left join a),c as (select dname,class,count(sid) as p_count from b group by (dname,class)),d as (select dname,class,count(sid) as p_count1 from b where tot>=10 group by (dname,class)),e as (select dname,class,count(sid) as p_count2 from b where tot<10 or tot is null group by (dname,class))select * from c natural left join d natural join eupdate test7_03 set p_count1=0 where p_count1 is null;/* 4 */create view test7_04_v1 asselect * from pub.student natural left join(select sid,sum(credit) as tot from pub.student_course natural join pub.course where SCORE>=60 group by sid);create table test7_04 aswith b as (select * from test7_04_v1),c as (select dname,class,count(sid) as p_count from b group by (dname,class)),d as (select dname,class,count(sid) as p_count1 from b where class<=2008 and tot>=8 group by (dname,class)unionselect dname,class,count(sid) as p_count1 from b where class>2008 and tot>=10 group by (dname,class))select * from c natural left join d where dname is not null;alter table test7_04 add p_count2 NUMBER;update test7_04 set p_count2 = p_count - p_count1;/* 1 */create table test8_01 aswith A as(select DNAME,SCORE,NAME from(select CID,DNAME,SCORE from pub.student_course natural joinpub.student where dnameis not null) natural join pub.course),B as(select dname,round(avg(score)) as avg_ds_score from A where name='数据结构' groupby dname),C as(select dname,round(avg(score)) as avg_os_score from A where name='操作系统' groupby dname)select * from B natural join C/* 2 */create table test8_02 aswith a as(select sid from pub.student_course where cid=(select cid frompub.course where name='操作系统') intersectselect sid from pub.student_course where cid=(select cid frompub.course where name='数据结构')),b as (select a.sid,score as ds_score from pub.student_course,a where pub.student_course.sid=a.sid and cid=(select cid from pub.course where name='数据结构')),c as (select a.sid,score as os_score from pub.student_course,a where pub.student_course.sid=a.sid and cid=(select cid from pub.course where name='操作系统'))select sid,name,dname,ds_score,os_score from b natural join cnatural join pub.student where dname='计算机科学与技术学院' /* 3 */create table test8_03 aswith a as(select sid from pub.student_course where cid=(select cid frompub.course where name='操作系统') unionselect sid from pub.student_course where cid=(select cid frompub.course where name='数据结构')),b as (select a.sid,score as ds_score from pub.student_course,a where pub.student_course.sid=a.sid and cid=(select cid from pub.course where name='数据结构')),c as (select a.sid,score as os_score from pub.student_course,a wherepub.student_course.sid=a.sid and cid=(select cid from pub.course where name='操作系统'))select sid,name,dname,ds_score,os_score from b natural full join c natural join pub.student where dname='计算机科学与技术学院' /* 4 */create table test8_04 aswith a as(select sid from pub.student_course where cid=(select cid frompub.course where name='操作系统') unionselect sid from pub.student_course where cid=(select cid frompub.course where name='数据结构')),b as (select a.sid,score as ds_score from pub.student_course,a where pub.student_course.sid=a.sid and cid=(select cid from pub.course where name='数据结构')),c as (select a.sid,score as os_score from pub.student_course,a where pub.student_course.sid=a.sid and cid=(select cid from pub.course where name='操作系统'))select sid,name,dname,ds_score,os_score from b natural full join c natural full join pub.student where dname='计算机科学与技术学院'。
数据库练习题库(含答案)一、单选题(共98题,每题1分,共98分)1.在需求分析阶段,结构化分析和建模方法是一种较为有效的需求分析方法,下列不属于结构化分析和建模方法优点的是()。
A、可避免过早陷入具体细节B、从局部或子系统开始分析问题,便于建模人员了解业务模型C、图形对象不涉及太多技术术语,便于用户理解模型D、用图形化的模型能直观表示系统功能正确答案:B2.DBMS通过加锁机制允许用户并发访问数据库,这属于DBMS提供的()。
A、数据定义功能B、数据操纵功能C、数据库运行管理与控制功能D、数据库建立与维护功能正确答案:C3.关于数据划分策略,下述说法错误的是()。
A、散列划分釆用某种散列函数,以数据的划分属性作为函数参数,计算数据应存储的磁盘序号B、范围划分根据某个属性的取值,将数据划分为n个部分,分别存储到不同磁盘上C、范围划分有利于范围查询和点查询,但也可能会引起数据分布不均匀及并行处理能力下降问题D、轮转法划分能保证元组在多个磁盘上的平均分配,并具有较高的点查询和范围查询正确答案:D4.存取方法设计属于数据库设计的()阶段的设计任务。
A、逻辑结构设计B、概念结构设计C、系统需求分析D、物理结构设计正确答案:D5.将新插入的记录存储在文件末尾,并使记录随机地分布在文件物理存储空间中的文件结构是()。
A、散列文件B、堆文件C、索引文件D、聚集文件正确答案:B6.关于"死锁”,下列说法中正确的是()。
A、在数据库操作中防止死锁的方法是禁止两个用户同时操作数据库B、只有出现并发操作时,才有可能出现死锁C、当两个用户竞争相同资源时不会发生死锁D、死锁是操作系统中的问题,数据库操作中不存在正确答案:B7.关于数据库应用系统的需求分析工作,下列说法正确的是()。
A、在需求分析阶段,系统需求分析员要与用户充分沟通,并做出各类用户视图B、通过需求分析过程,需要确定出整个应用系统的目标、任务和系统的范围说明C、数据操作响应时间、系统吞吐量、最大并发用户数都是性能需求分析的重要指标D、数据需求分析的主要工作是要辩识出数据处理中的数据处理流程正确答案:C8.如果一个系统定义为关系系统,则它必须( )oA、支持关系数据库B、支持选择、投影和连接运算C、A和B均成立D、A、B都不需要正确答案:C9.联机分析处理包括以下()基本分析功能。
2022年山东大学威海分校计算机科学与技术专业《数据库原理》科目期末试卷B(有答案)一、填空题1、关系代数运算中,基本的运算是______________、______________、______________、______________和______________。
2、数据仓库创建后,首先从______中抽取所需要的数据到数据准备区,在数据准备区中经过净化处理______,再加载到数据仓库中,最后根据用户的需求将数据发布到______。
3、“为哪些表,在哪些字段上,建立什么样的索引”这一设计内容应该属于数据库设计中的______阶段。
4、在SQL Server 2000中,新建了一个SQL Server身份验证模式的登录账户LOG,现希望LOG在数据库服务器上具有全部的操作权限,下述语句是为LOG授权的语句,请补全该语句。
EXEC sp_addsrvrolemember‘LOG’,_____;5、数据库内的数据是______的,只要有业务发生,数据就会更新,而数据仓库则是______的历史数据,只能定期添加和刷新。
6、在一个关系R中,若每个数据项都是不可再分割的,那么R一定属于______。
7、数据库系统是利用存储在外存上其他地方的______来重建被破坏的数据库。
方法主要有两种:______和______。
8、在关系数据库的规范化理论中,在执行“分解”时,必须遵守规范化原则:保持原有的依赖关系和______。
9、SQL Server中数据完整性包括______、______和______。
10、____________、____________、____________和是计算机系统中的三类安全性。
二、判断题11、在关系数据库中,属性的排列顺序是可以颠倒的。
()12、概念模型是对现实世界的第二层抽象。
()13、数据模型的核心构成要素是数据结构。
()14、等值连接与自然连接是同一个概念。
1.首先开两个不同的浏览器,我用的是safari和opera(chrome / IE什么的只要能登录都可以)safari登录名userb2011……,作为备用账户;opera登录名user2011……,作为主账户。
两个用户都关闭自动提交。
//2011……是自己的学号2.备用账户:CREATE TABLE test5_00 ASSELECT * FROM pub.teacherupdate test5_00 set age=age+1Rollbackselect * from test5_00grant all on userb2011…….test5_00 to user2011……主账户:select * from userb2011…….test5_00备用账户:Update test5_00 set age=age-2select * from test5_00主账户:select * from userb2011…….test5_00commit备用账户:select * from test5_00主账户:SELECT * FROM userb2011…….test5_00备用账户:Commitselect * from test5_00主账户:SELECT * FROM userb201100130078.test5_00Rollback备用账户:select * from test5_00主账户:SELECT * FROM userb201100130078.test5_003.主账户:(勾选上自动提交)create table test5_10(test varchar(20),age numeric (3))insert into test5_10 values ('结果1',88)insert into test5_10 values ('结果2',88)insert into test5_10 values ('结果3',86)insert into test5_10 values ('结果4',88)insert into test5_10 values ('结果5',86)insert into test5_10 values ('结果6',88)insert into test5_10 values ('结果7',86)insert into test5_10 values ('结果8',86)insert into test5_10 values ('结果9',86)insert into test5_10 values ('结果10',86)ps1:其实只要有第三步就可以了ps2:数据库实验指导书的答案有问题。
《数据库原理及其应用》一、选择题1、(D )在下列表达式中,计算结果为字符型的是:A.1234+ASC(“A”)B. SQRT(4)*12/24/60C.CTOD(“12/24/94”)>DA TA( )D. “2.13”+SUBSTR(“联想汉字操作系统”,5,12)2、( C )关于自由表的叙述,正确的是A. 全部是用以前版本的FoxBase建立的表B. 可以用VFP建立,但不能把它添加到数据库中C. 自由表可以添加到数据库中,数据库表也可以从数据库中移出成为自由表D. 自由表可以添加到数据库中,但数据库表不能从数据库中移出成为自由表3、(A )下列选择中都是方法程序的是:A.Cls,setfocus,pset,release B.Cls,caption,pset,releaseC.Cls,refresh,release,initD.Setfocus,getfocus,lostfocus,cls4、(C )查询设计器包括的选项卡有A. 字段、条件、分组依据B. 联接、杂项、索引C. 筛选、排序依据、字段D. 排序依据、分组依据、条件二、填空题1、文本框用于数据输入输出的属性是V alue 。
2、用于处理文本信息的控件有:文本框、标签、编辑框。
3、SQL语言所具有的功能是数据定义、数据操纵、数据控制。
4、查询向导中可以有三种选择:查询向导、交叉表格查询、图形向导。
5、参照完整性的规则包括插入规则、更新规则、删除规则。
6、建立索引的字段值不允许重复,且一个表中只能创建一个,它应该是主索引。
7、在数据表中,每一行是关于客观事物的具体描述,叫做元组。
8、表结构定义了数据表的字段个数、字段名、字段类型、字段宽度和小数位数等内容。
9、日期型常量的一般格式为{^yyyy-mm-dd} 。
10、数据库表中的字段有效性规则用来指定字段的验证性规则。
11、数据库系统的组成是数据库、计算机硬件、数据库管理系统、应用程序、用户12、利用SQL语句创建一个表文件,文件名为student,表结构由五个字段组成,分别是xm字符类型,长度为10;xb 字符类型,长度为2,默认值为“男”;csrq 日期类型;sfty 逻辑类型;bz 备注类型。
2022年山东大学数据科学与大数据技术专业《数据库系统原理》科目期末试卷B(有答案)一、填空题1、在SELECT命令中进行查询,若希望查询的结果不出现重复元组,应在SEL ECT语句中使用______保留字。
2、在SELECT命令中,______子句用于选择满足给定条件的元组,使用______子句可按指定列的值分组,同时使用______子句可提取满足条件的组。
3、对于非规范化的模式,经过转变为1NF,______,将1NF经过转变为2NF,______,将2NF经过转变为3NF______。
4、如图所示的关系R的候选码为;R中的函数依赖有;R属于范式。
一个关系R5、在设计局部E-R图时,由于各个子系统分别有不同的应用,而且往往是由不同的设计人员设计,所以各个局部E-R图之间难免有不一致的地方,称为冲突。
这些冲突主要有______、______和______3类。
6、某在SQL Server 2000数据库中有两张表:商品表(商品号,商品名,商品类别,成本价)和销售表(商品号,销售时间,销售数量,销售单价)。
用户需统计指定年份每类商品的销售总数量和销售总利润,要求只列出销售总利润最多的前三类商品的商品类别、销售总数量和销售总利润。
为了完成该统计操作,请按要求将下面的存储过程补充完整。
7、数据库系统是利用存储在外存上其他地方的______来重建被破坏的数据库。
方法主要有两种:______和______。
8、数据仓库创建后,首先从______中抽取所需要的数据到数据准备区,在数据准备区中经过净化处理______,再加载到数据仓库中,最后根据用户的需求将数据发布到______。
9、数据库管理系统的主要功能有______________、______________、数据库的运行管理以及数据库的建立和维护等4个方面。
10、数据仓库主要是供决策分析用的______,所涉及的数据操作主要是______,一般情况下不进行。
1、事务的定义及其特性答:事务是由一系列操作序列构成的程序执行单元,这些操作要么都做,要么都不做,是一个不可分割的工作单位。
事务的ACID特性:原子性(Atomicity) 事务中包含的所有操作要么全做,要么全不做一致性(Consistency) 事务的隔离执行必须保证数据库的一致性隔离性(Isolation) 系统必须保证事务不受其它并发执行事务的影响持久性(Durability) 一个事务一旦提交之后,它对数据库的影响必须是永久的。
2、完整性约束:数据库完整性(Database Integrity)是指数据库中数据的正确性、有效性和相容性。
数据库完整性由各种各样的完整性约束来保证,因此可以说数据库完整性设计就是数据库完整性约束的设计。
1、实体完整性:要求每个关系模式有且仅有一个主码,每个主码的值必须唯一,而且不能为空。
2、域完整性:数据库表中的列必须满足某种特定的数据类型或约束。
其中约束又包括取值范围、精度等规定。
表中的CHECK、FOREIGN KEY 约束和DEFAULT、 NOT NULL定义都属于域完整性的范畴。
3、参照完整性:参照的完整性要求关系中不允许引用不存在的实体。
当更新、删除、插入一个表中的数据时,通过参照引用相互关联的另一个表中的数据,来检查对表的数据操作是否正确。
3.DBMS数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。
它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。
用户通过DBMS访问数据库中的数据,数据库管理员也通过dbms进行数据库的维护工作。
它可使多个应用程序和用户用不同的方法在同时或不同时刻去建立,修改和询问数据库。
大部分DBMS提供数据定义语言DDL(Data Definition Language)和数据操作语言DML(Data Manipulation Language),供用户定义数据库的模式结构与权限约束,实现对数据的追加、删除等操作。
山东大学网络教育学院电子商务专业《数据库原理及其应用》模拟题试题中所涉及的表及其结构是:sb (编号 C(5),名称 C(6),启用日期 D,价格 N(9,2),部门 C(2),主要设备 L)bmdm(代码 C(2),名称 C(6))dx(编号 C(5),费用 N(6,1))zz(编号 C(5),增值 N(8,2))一、选择题1、()关于通用型字段下列说法错误的是:A. 用来存放图形、电子表格、声音等多媒体数据B. 与其他字段一起存放在表文件中C. 字段宽度为固定的4个字节D. 与备注型字段数据存放在一起2、()在下列表达式中,计算结果为字符型的是:A.VAL(“123ABC”)+20 B. SQRT(4)*12+20C.“12”$ DTOC({^1994-12-24})D.“2.13”+SUBSTR(“ABCSYSTEM”,4)3、()下列选择中都是方法程序的是:A. Cls,refresh,release,init B.Cls,caption,pset,release C.Cls,setfocus,pset,release D.Setfocus,getfocus,lostfocus,cls 4、()下列叙述中,正确的是:A. 公共变量可以先使用后定义B. 在程序返回COMMAND窗口时,公共变量会被自动释放C. 在一个过程中可以把私有变量改变为公共变量D. 定义私有变量的过程结束,其中的私有变量也随之被释放5、()当前表中有一字段“姓名”,显示姓“张”的所有人员用:A. LIST FOR SUBS(“姓名”,1,1)=“张”B. LIST FOR “张”=SUBS(姓名,1,2)C. LIST FOR SUBS(“姓名”,1,2)=“张”D. LIST FOR “张”=姓名6、( )有关FOR循环结构,叙述正确的是:A. 对于FOR循环结构,循环的次数是未知的B. FOR循环结构中,可以使用EXIT语句,但不能使用LOOP语句C. FOR循环结构中,不能人为地修改循环控制变量,否则会导致循环次数出错D. FOR循环结构中,可以使用LOOP语句,但不能使用EXIT语句7、( )修改表文件结构时,下列可能使表中数据丢失的操作是A. 增加一个字段B. 改变一个字段名C. 改变一个字段的数据类型D. 上述A、B、C三种情况8、()下列控件中都属于控制类的是:A.标签、文本框、命令按钮、表格、计时器B.命令按钮、复选框、计时器、选项按钮组C.表格、复选框、命令按钮、微调控件D.线条、命令按钮组、页框、组合框、选项按钮组9、()关于索引更新的表述正确的是:A. 结构复合索引文件能够自动更新B. 一个表的所有索引文件都能够自动更新C. 结构复合索引文件必须用REINDEX命令才能够更新D. 一个表的所有索引文件都必须用REINDEX命令才能够更新10、()关于表的关联的表述正确的是:A. 子表指针移动时父表指针也会随之移动B. 子表必须按关联条件建立索引C. 子表一条记录对应父表多条记录的情况,称为一多关系D. 建立关联的命令是SET SKIP TO ……11、()下列叙述中,是正确的:A. 经PACK删除的记录仍可用RECALL命令恢复B. 经ZAP删除的记录仍可用RECALL命令恢复C. 一般进行了若干次逻辑删除后必须进行一次物理删除D. ZAP可以物理删除当前表中所有记录12、()为了改变MyForm表单中的控件cmd1的Caption属性,下述正确命令是:A. MyForm.Cmd1.Caption=”下一个”B. This.Cmd1.Caption=”下一个”C. ThisForm.Cmd1.Caption=”下一个”D. ThisFormSet.Cmd1.Caption=”下一个”13、()下列选择中都是事件的是:A.Load,valid,value,init B. Load,init,refresh,clsC.Load,unload,click,keypress D. Load,gotfocus,setfocus,lostfocus14、()计算各类职称的工资总和,并把结果存入ZCGZ表中,使用命令A. SUM 工资 FOR 职称=“各类职称” TO ZCGZB. CALCULATE SUM(工资) TO ZCGZ FIELDS 职称C. SELECT 职称, SUM(工资) TO ZCGZD. TOTAL ON 职称 TO ZCGZ FIELDS 工资15、( ) 关于主控索引的表述正确的是:A. 主控索引文件就是主控索引B. 当前起作用的索引就是主控索引C. 对于一个表文件而言,可以同时确定多个主控索引D. 结构复合索引文件的第一个索引标识就是主控索引二、填空题1、计算机数据处理技术的发展分为三个阶段:、文件管理阶段、数据库管理阶段。
山东大学数据库系统课程试卷A卷参考答案一、简答(每小题5分,共25分)1、如何理解空值(NULL),空值在参与运算时有哪些特点?答:空值null表示“不知道”或者“不存在”的含义。
不是指“0”,也不是“false”,也不是’’。
Null参与的关系运算和算术运算结果均为null。
评分细则:Null的含义3分,Null参与的运算特点2分2、简述事务的概念及其相关特性。
答:事物是访问并可能更新各种数据项的一个程序执行单元。
事物具有ACID四种特性。
A指原子性:事物的所有操作在数据库中要么全部正确反映出来,要么全部不反映。
C指一致性:事物的隔离执行保持数据库的一致性。
I指隔离性:尽管多个事物可以并发执行,但系统必须保证每一个事物都感觉不到系统中有其他事物在并发地执行。
D指持久性:一个事物成功完成后,它对数据库的改变必须是永久的。
评分细则:事物概念2分,事物的性质3分。
3、关系中的元组有先后顺序吗?为什么?答:没有。
关系是元组的集合,而集合中的元素是没有顺序的,因此关系中的元组也就没有先后顺序。
评分细则:第一问回答“有”,零分;第一问回答“没有”,2分,说明原因3分4、设关系模式R(A,B,C)上有一个多值依赖A B。
如果已知R的当前关系中存在着三个元组(a,b1,c1)、(a,b2,c2)、(a,b3,c3),那么这个关系中至少还应该存在哪些元组?答:(a b1 c2),(a b2 c1),(a b1 c3),(a b3 c1),(a b2 c3),(a b3 c2)评分细则:每一个元组1分。
5、简述时间戳排序协议。
答:时间戳:对于系统中的每一个事务Ti,我们把一个唯一的固定的时间戳和它联系起来,记为TS(Ti)。
每个数据项Q需要与两个时间戳相关联:W-timestamp(Q)表示成功执行write(Q)的所有失去的最大时间戳;R-timestamp(Q)表示成功执行read(Q)的所有事务的最大的时间戳。
实验一:1.创建学生信息表(学生编号、姓名、性别、年龄、出生日期、院系名称、班级):test1_student:sid char 12 not null、name varchar 10 not null、sex char 2、age int、Birthday date、dname varchar 10、class varchar(10)。
create table test1_student(sid char(12)not null,name varchar(10)not null,sex char(2),age int,Birthday date,dname varchar(30),class varchar(10));create table test1_teacher(tid char(6)not null,name varchar(10)not null,sex char(2),age int,dname varchar(30));create table test1_course(cid char(6)not null,name varchar(40)not null, fcid char(6),credit numeric(4,1));create table test1_student_course (sid char(12)not null,cid char(6)not null,score numeric(5,1),tid char(6));create table test1_teacher_course (tid char(6)not null,cid char(6)not null)insert into test1_student values(200800020101,'王欣','女',19,to_date('19940202','yyyymmdd'),'计算机学院','2010'); insert into test1_student values(200800020102,'李华','女',20,to_date('19950303','yyyymmdd'),'软件学院','2009'); insert into test1_student values(200800020103,'赵岩','男',21,to_date('19960404','yyyymmdd'),'软件学院','2009'); delete from test1_student where name='王欣','李华','赵岩'; select * from test1_student;insert into test1_teacher values(100101,'张老师','男',44,'计算机学院');insert into test1_teacher values(100102,'李老师','女',45,'软件学院');insert into test1_teacher values(100103,'马老师','男',46,'计算机学院');insert into test1_course values(300001,'数据结构',null,2); insert into test1_course values(300002,'数据库',300001,2.5); insert into test1_course values(300003,'操作系统',300001,4);insert into test1_student_course values(200800020101,300001,91.5,100101);insert into test1_student_course values(200800020101,300002,92.6,100102);insert into test1_student_course values(200800020101,300003,93.7,100103);insert into test1_teacher_course values(100101,300001); insert into test1_teacher_course values(100102,300002); insert into test1_teacher_course values(100103,300003);实验二:select * from all_tables where owner='PUB'1.create table test2_01 as select sid ,namefrom pub.studentwhere sid not in(select sid from pub.student_course)2.create table test2_02 as select distinct student.sid,namefrom pub.student_course,pub.studentwhere student.sid=student_course.sid and cid in (select cid from pub.student_coursewhere sid=200900130417)3.create table test2_03 as select distinctstudent.sid,from pub.student_course,pub.student,pub.coursewhere student.sid=student_course.sid and course.cid=student_course.cid and fcid=‘300002’;4.create table test2_04 as select sid,namefrom pub.studentwhere sid in(select sidfrom pub.student_course,pub.coursewhere student_course.cid=course.cid and name='操作系统')and sid in(select sidfrom pub.student_course,pub.coursewhere student_course.cid=course.cidand name ='数据结构')5.create table test2_05 as select student.sid,name,cast(avg(score) as numeric(5,0)) avg_score,sum(score) sum_scorefrom pub.student,pub.student_coursewhere student.sid=student_course.sid and student.age=20 group by student.sid,name若为group by student_course.sid,报错不是group by 表达式?因select中没有聚集的属性只能是出现在group by里面的属性numeric为什么是(5,0)cast中方法,因为四舍五入到各位age的20可以不加单引号?使用CAST: CAST ( expression AS data_type )使用CONVERT: CONVERT (data_type[(length)], expression [, style])6.create table test2_06 as select cid,max(score) max_score from pub.student_coursegroup by cid7.create table test2_07 as select sid,namefrom pub.studentwhere name not like’张%’and name not like’王%’and name not like ‘李%’8.create table test2_08 as select substr(name,1,1)second_name,count(*) p_countfrom pub.studentgroup by substr(name,1,1)SUBSTR(string,start,count)取子字符串,从start开始(如果start是负数,从尾部开始),取count个.上述就是PL/SQL函数的解释,从中可以看出,是1开始从左开始取数;如果是负值,那么就从右开始取数。
山东大学数据库系统课程试卷A卷参考答案一、简答(每小题5分,共25分)1、如何理解空值(NULL),空值在参与运算时有哪些特点?答:空值null表示“不知道”或者“不存在”的含义。
不是指“0”,也不是“false”,也不是’’。
Null参与的关系运算和算术运算结果均为null。
评分细则:Null的含义3分,Null参与的运算特点2分2、简述事务的概念及其相关特性。
答:事物是访问并可能更新各种数据项的一个程序执行单元。
事物具有ACID四种特性。
A指原子性:事物的所有操作在数据库中要么全部正确反映出来,要么全部不反映。
C指一致性:事物的隔离执行保持数据库的一致性。
I指隔离性:尽管多个事物可以并发执行,但系统必须保证每一个事物都感觉不到系统中有其他事物在并发地执行。
D指持久性:一个事物成功完成后,它对数据库的改变必须是永久的。
评分细则:事物概念2分,事物的性质3分。
3、关系中的元组有先后顺序吗?为什么?答:没有。
关系是元组的集合,而集合中的元素是没有顺序的,因此关系中的元组也就没有先后顺序。
评分细则:第一问回答“有”,零分;第一问回答“没有”,2分,说明原因3分4、设关系模式R(A,B,C)上有一个多值依赖A B。
如果已知R的当前关系中存在着三个元组(a,b1,c1)、(a,b2,c2)、(a,b3,c3),那么这个关系中至少还应该存在哪些元组?答:(a b1 c2),(a b2 c1),(a b1 c3),(a b3 c1),(a b2 c3),(a b3 c2)评分细则:每一个元组1分。
5、简述时间戳排序协议。
答:时间戳:对于系统中的每一个事务Ti,我们把一个唯一的固定的时间戳和它联系起来,记为TS(Ti)。
每个数据项Q需要与两个时间戳相关联:W-timestamp(Q)表示成功执行write(Q)的所有失去的最大时间戳;R-timestamp(Q)表示成功执行read(Q)的所有事务的最大的时间戳。
假设事务Ti发出read(Q)操作:a.若TS(Ti)<W-timestamp(Q),则Ti需读入的Q值已被覆盖。
因此,read操作被拒绝,Ti回滚。
b.若TS(Ti)>= W-timestamp(Q),则执行read操作,R-timestamp(Q)被设为R-timestamp(Q)与TS(Ti)两者中的最大值。
假设事务Ti发出write(Q)操作:a.若TS(Ti)< R-timestamp(Q),则Ti产生的Q值是先前所需要的值,且系统一经假设该值不会被产生。
因此,write操作被拒绝,Ti回滚。
b.若TS(Ti) <W-timestamp(Q),则Ti想写入的Q值已过时。
因此,write操作被拒绝,Ti回滚。
c.其他情况发生时,执行write操作,将W-timestamp(Q)设为TS(Ti)。
评分细则:读规则2分,写规则3分二、工厂需要建立一个管理数据库存储下列信息:1、一个工厂内有多个车间,每个车间有车间号、车间主任姓名、车间地址和电话2、一个车间内有多个工人,每个工人有职工号、姓名、年龄、性别和工种3、一个车间生产多种产品,产品有产品号和价格4、一个车间生产多种零件,一个零件也可以被多个车间制造。
零件有零件号、重量和价格5、一个产品由多种零件组成,一种零件也可以装配出多种产品。
6、产品与零件均存入仓库中7、一个工厂有多个仓库,仓库有仓库号、仓库主任姓名、仓库地址和电话要求:1.画出该系统的E-R图2.给出相应的关系模式(共10分)答:关系模式工厂(厂名、厂长姓名)车间(车间号、车间主任姓名、车间地址、电话、厂名)工人(职工号、姓名、年龄、性别、工种、车间号)仓库(仓库号、仓库主任姓名、仓库地址、电话、厂名)产品(产品号、价格、车间号、仓库号)零件(零件号、重量、价格、仓库号)制造(车间号、零件号)评分细则:画E-R图5分,需要表明联系的基数;关系模式5分,基于实体和基于联系的关系模式都需要。
二、有关系模式R(A, B, C, D),其上的函数依赖集F={A→C,C→A,B→AC,D→AC},要求:(15分)1、计算(AD)+2、求F的正则覆盖F c3、求R的码4、将R分解,使其满足BCNF且具有无损连接性5、将R分解,使其满足3NF并具有无损连接性与保持依赖性答:(AD)+=ACDF c={A→C,C→A,B→A,D→A}(BD)+=ABCD,所以BD时候选码分解为BCNF:ρ={AC,AB,BD}分解为3NF:ρ={AC,BA,DA,BD}评分细则:每一小题3分。
第一小题:必须写明全部属性才能得分第二小题:正则覆盖不唯一,写明一个即可第三小题:要求写候选码,写超码不得分第四小题:如果学生的分解与答案不完全一致,可以适当给分第五小题:如果学生的分解与答案不完全一致,可以适当给分四、有关系S(SNO, SNAME, DEPT,SEX,DORM, MONITOR), C(CNO, CNAME, CREDIT, TEACHER), SC(SNO, CNO, SCORE)。
关系S、C和SC分别表示学生信息、课程信息和学生选课情况。
请按要求表达下列查询与修改。
(42分)其属性分别表示如下:SNO—学生编号,SNAME—学生姓名,DEPT—学生所在系,SEX—学生性别,DORM—学生宿舍,MONITOR—该学生的班长的学号,CNO—课程编号,CNAME—课程名称,SCORE—成绩,TEACHER—任课教师姓名,CREDIT—课程学分。
1、查询计算机系全部学生的学号、姓名、性别。
(SQL+关系代数+元组关系演算)Select sno, sname, sexFrom sWhere dept=’计算机’∏ sno, sname, sex(σdept=’计算机’(S)){t|∃u∈S t[sno]=u[sno] ∧t[sname]=u[sname] ∧t[sex]=u[sex] ∧u[dept]=’计算机’}评分细则:每小题3分2、查询张明同学没有选修的课程的课程号和课程名称。
(SQL+关系代数+元组关系演算)select cno,cnamefrom cwhere cno not in (select cno from scwhere sno in(select sno from s where sname=’张明’))∏cno, cname(∏cno(C) - ∏cno(σsname=’张明’(S∞SC)))∞C{t|∃u∈S ┐∃v∈SC ∃w∈C t[cno]=w[cno] ∧t[cname]=w[cname] ∧u[sname]=’张明’∧u[sno]=v[sno] }评分细则:每小题3分。
本题的重点是要用关系代数减法、SQL用not、关系演算用非,并且一定要在c表中做减法。
如果不从c表中做减法,每小题扣2分。
3、查询与其班长住在同一宿舍的学生的姓名。
(SQL+关系代数+元组关系演算)Select snameFrom S s1, S s2Where s1.montior=s2.sno and s.dorm=s2.dorm∏name(σs.montior=s1.sno∧s.dorm=s1.dorm(S⨯ρs1(S))){t|∃u∈S ∃v∈S t[sname]=u[sname]∧ u[monitor]=v[sno]∧u[dorm=v[dorm] }评分细则:每小题3分,本题的重点是关系的重命名以及重命名后关系之间在where 条件中的联系。
4、学生的课程成绩及格(>=60)表示学生已获得该课程的学分;求至少已获得50个学分的学生学号及其已获得学分数,要求按照已获得学分数降序排序显示。
(SQL)select sno,sum(credit) as totalfrom swhere sno not in (select sno from sc,cwhere o=o and score>=60)group by sno having sum(credit)>50order by total desc评分细则:本题3分。
重点是score>=60 和group sno having。
有score>=60 和group having 的可得两分。
写明not in的得三分。
5、查询全部学生都选修的课程的课程号与课程名。
(SQL+关系代数+元组关系演算)select cno,cnamefrom cwhere cno in (select cno from scgroup by cnohaving count(*) = (select count(*) from s))∏cno, cname (C ∞ (∏sno, cno(SC))÷∏sno(S)){t|∀s∈S ∃u ∈C∃v∈SC t[cno]=u[cno] ∧t[cname]=u[cname] ∧s[sno]=sc[sno]∧c[cno]=sc[cno]}评分细则:每小题3分。
sql用not exists和group 均可。
6、当“数据库”课程的成绩小于该课程的平均成绩时,将该成绩提高5%。
(SQL)Update SCSet score=score*1.05Where cno in (select cno from C where cname=’数据库’)And score < (select avg(score) from SC wehre cno in (select cno from C where cname=’数据库’))评分细则:本题三分。
写明update和set可得2分,where条件1分。
五、按照冲突可串行化的判定算法,判定下属调度是否冲突可串行化(8分)T1 T2 T3Read(Q)Write(Q)Read(Q)Read(Q)Write(Q)Read(P)Read(P)Write(P)Read(P)Write(P)不是冲突可串行化的。
因为T3在T1 Write(Q)之后要Write(Q)而这两个都是写操作,不可以调换次序,所以不是冲突可串行化的。
评分细则:写明不是冲突可串行化的,得10分,否则不得分。