2022年期中考试题答案 .pdf
1 / 5 数据库系统原理期中考试试卷一、 单项选择题1. 现 实 世 界 中 , 事 物 的 一 般 特 性 在 信 息 世 界 中 称 为( ) A.实体 B.实体键 C.属性 D.关系键2. 数据的逻辑独立性是指( ) A.逻辑模式改变,外模式和应用程序不变B.逻辑模式改变,内模式不变C.内模式改变,逻辑模式不变D.内模式改变,外模式和应用程序不变3. 在关系数据库管理系统中,创建的视图在数据库三层结构中属于( ) A.外模式 B.存储模式 C.内模式 D.概念模式4. 关系 R 和 S 进行自然连接时,要求R 和 S 含有一个或多个公共( ) A.元组 B.行 C.记录 D.属性5. 以下关于索引的正确叙述是( ) A. 使 用 索 引 可 以 提 高 数 据 查 询 速 度 和 数 据 更 新 速 度B. 使 用 索 引 可 以 提 高 数 据 查 询 速 度 , 但 会 降 低 数 据 更 新 速 度C. 使 用 索引 可 以 提高 数 据 查 询速 度 , 对 数 据 更 新速 度 没 有 影 响D.使用索引对数据查询速度和数据更新速度均没有影响6. 设关系 R和 S的属性个数分别为r 和 s,则(RS)操作结果的属性个数为( ) A.r+s B.r-s C.r s D.max(r,s) 二、 填空题1.DBMS 通常提供授权功能来控制不同的用户访问数据库中数据的权限,其目的是为了数据库的 _安全性 。2.数据库系统各类用户对数据库的各种操作请求(数据定义、查询、更新及各种控制 )都是由一个复杂的软件来完成的,这个软件叫做_DBMS_。3.在 SQL SELECT 语句查询中,要去掉查询结果中的重复记录,应该使用_DISTINCT 关键字。4.公司中有若干个部门和若干职员,每个职员只能属于一个部门,一个部门可以有多名职员,职员与部门的联系类型是_1:n_。5.使用 SQL 语言的 SELECT 语句进行分组查询时,如果希望去掉不满足条件的分组,应当使用 _HAVING_ 子句。三、简答题1. 简述安全性控制机制,并说明该控制机制针对什么操作而设置?2. 试说明相关子查询的查询执行顺序。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 5 页2 / 5 四、综合题1、某医院病房计算机管理中需要如下信息:科室:科名,科地址,科电话病房:病房号,床位号医生:姓名,职称,年龄,工作证号病人:病历号,姓名,性别其中,一个科室有多个病房、多个医生;一个病房只能属于一个科室;一个医生只属于一个科室,但可负责多个病人的诊治;一个病人的主管医生只有一个。每个病人经医生诊治后,都有一个“诊断”信息。画出涉及该计算机管理系统的 E-R 图。E-R 图略。在图中共有 4 个实体:病房、科室、医生和病人;存在的联系有:“组成”,科室与病房之间的联系,是1: n;“从属”,科室与医生之间的联系,是1: n;“入住”,病房与病人之间的联系,是1: n;“诊治”,医生与病人之间的联系,是1: n。2、 设 有一 个 顾 客商 品 关 系数 据 库 ,有 三 个 基本 表 , 表结 构 如下:商 品 表 : Article ( 商 品 号 , 商 品 名 , 单 价 , 库 存 量 ) 客 户 表 : Customer ( 顾 客 号 , 顾 客 名 , 性 别 , 年 龄 , 电 话 ) 订单表: OrderItem ( 顾客号,商品号,数量,购买价,日期) (1)请用 SQL 语言创建一个视图GM_VIEW ,检索顾客的顾客号、顾客名和订购商品的商品名、金额和日期。(金额等于数量 *购买价 ) CREAT VIEW GM_VIEW(顾客号,顾客名,商品名,金额,日期) ASSELECT OrderItem. 顾客号 , 顾客名, 商品名 , 数量*购买价 , 日期FROM Article, Customer, OrderItem WHERE Article. 商品号 = OrderItem. 商品号 AND 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 5 页3 / 5 Customer. 顾客号 =OrderItem. 顾客号 ;(2)请用 SQL 语言实现查询一次订购的商品数量最多的顾客名。SELECT 顾客名FROM Customer, OrderItem WHERE OrderItem. 顾客号 = Customer.顾客号 AND OrderItem.数量 = (SELECT MAX( 数量) FROM OrderItem) ;SELECT 顾客名FROM Customer, OrderItem WHERE OrderItem. 顾客号 = Customer.顾客号 AND OrderItem.数量 = All (SELECT 数量FROM OrderItem) ;SELECT 顾客名FROM Customer WHERE 顾客号 IN (SELECT 顾客号FROM OrderItem WHERE 数量 = (SELECT MAX( 数量) FROM OrderItem) );SELECT 顾客名FROM Customer, OrderItem WHERE OrderItem. 顾客号 = Customer.顾客号 AND OrderItem. 数量 = MAX( 数量);SELECT 顾客名, MAX( 数量) FROM Customer, OrderItem WHERE OrderItem. 顾客号= Customer. 顾客号。(3)请用 SQL 语言找出女顾客购买的商品号、商品名和数量合计。SELECT OrderItem. 商品号 , 商品名, SUM(OrderItem. 数量) 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 5 页4 / 5 FROM OrderItem, Artcle, Customer, WHERE Article. 商品号 = OrderItem. 商品号 AND Customer. 顾客号=OrderItem. 顾客号 AND Customer. 性别=“女”GROUP BY OrderItem. 商品号,商品名;(4)请用 SQL 语言查询所有顾客都订购的商品的商品号和商品名。SELECT 商品号,商品名FROM Article WHERE NOT EXIST (SELECT * FROM Customer WHERE NOT EXISTS (SELECT * FROM OrderItem WHERE 顾客号 =Customer.顾客号 AND 商品号 =Article.商品号 );SELECT Article. 商品号,商品名FROM Article, OrderItem WHERE Article. 商品号 =OrderItem. 商品号GROUP BY 商品号HAVING COUNT(distinct 顾客号 ) = (SELECT COUNT( 顾客号 ) FROM Customer) ;(5)请用 SQL 语言检索订购4 种商品以上的每个顾客的顾客号,顾客名和订购的商品的金额合计,并按金额合计进行降序排序。(金额等于数量 *购买价 ) SELECT 顾客号,顾客名FROM Customer WHERE 顾客号 IN ( SELECT * FROM orderitem GROUP BY 数量 HAVING count(*)4 ORDER BY sum(数量*购买价 ) DESC WHERE orderitem. 顾客号 =customer. 顾客号) 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 5 页5 / 5 SELECT 顾客号,顾客名,金额FROM Customer, orderitem ORDER BY 金额 DESC WHERE 数量4 AND 金额=数量*购买价AND orderitem.顾客号=customer. 顾客号SELECT Customer.顾客号 , 顾客名, SUM(数量*购买价) FROM Customer, OrderItem WHERE Customer.顾客号 =OrderItem. 顾客号GROUP BY Customer.顾客号,顾客名HAVING COUNT(DISTINST商品号 )=4 ORDER BY 3 DESC 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 5 页