From 8c024f2b9b8b8abfcd8fd2b3728317ba62465e9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BD=97=E5=91=A8=E7=86=A0?= <2108439463@qq.com> Date: Mon, 21 Oct 2024 11:11:47 +0800 Subject: [PATCH 1/2] 10/21 --- ...74\345\220\210\347\273\203\344\271\240.md" | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 "\347\275\227\345\221\250\347\206\240/25 20241021 \347\273\274\345\220\210\347\273\203\344\271\240.md" diff --git "a/\347\275\227\345\221\250\347\206\240/25 20241021 \347\273\274\345\220\210\347\273\203\344\271\240.md" "b/\347\275\227\345\221\250\347\206\240/25 20241021 \347\273\274\345\220\210\347\273\203\344\271\240.md" new file mode 100644 index 0000000..20579be --- /dev/null +++ "b/\347\275\227\345\221\250\347\206\240/25 20241021 \347\273\274\345\220\210\347\273\203\344\271\240.md" @@ -0,0 +1,55 @@ +# 二、操作题 + +```sql +-- 二、综合题(第1大题40分,第2大题30分,共70分) + +-- 1. 利用另外一个文件`initDb.sql`,完成以下题目: +-- 1.1. (10分) 对学生姓名创建普通索引(`idx_StudentName`) + +CREATE INDEX idx_StudentName ON student(StudentName); + +-- 1.2. (10分) 创建视图`V_StudentHobbyInfo`,其中包含姓名(`StudentName`),爱好(`Hobby`),特长(`Speciality`)列,并分别取别名为`vw_StudentName`,`vw_Hoppy`,`vw_Speclitiy + +CREATE VIEW V_StudentHobbyInfo AS SELECT StudentName vw_StudentName,Hobby vw_Hoppy,Speciality vw_Speclitiy FROM student s JOIN studentextinfo se ON s.StudentCode = se.StudentCode ; +SELECT * FROM V_StudentHobbyInfo; +DROP VIEW V_StudentHobbyInfo; + +-- 1.4. (5分) 查询学生`马又云`的生源地,要求显示:姓名(`StudentNameame`),生源地(`OriginPosition`) + +SELECT StudentName,OriginPosition FROM student s JOIN studentextinfo se on s.StudentCode = se.StudentCode WHERE StudentName = '马又云'; + +-- 1.5. (5分) 查询学生表(`StudentInfo`)中还未还书的读者的学号(`StudentCode`)和姓名(`StudentName`),以及借书时间(`BorrowTime`) + +SELECT s.StudentCode,s.StudentName,b.BorrowTime FROM student s JOIN borrowrecord b on s.StudentCode= b.StudentCode WHERE ReturnTime is NULL; + + +-- 1.6. (5分) 查询借阅过书籍《射雕英雄传》的学生,要求显示:学生姓名(`StudentName`),学院(`School`),图书名(`BookName`),借阅时间(`BorrowTime`) + +SELECT StudentName,School,BookName,BorrowTime FROM +(SELECT s.StudentName,s.School,br.BorrowTime,br.Barcode FROM student s JOIN borrowrecord br ON s.StudentCode= br.StudentCode ) a +JOIN +(SELECT bi.BookName,bei.Barcode FROM bookinfo bi JOIN bookextinfo bei ON bi.ISBN = bei.ISBN) b ON a.Barcode =b.Barcode WHERE BookName = '射雕英雄传'; + +-- 2. (30分)某医院病房计算机管理中心需要如下信息: +-- +-- ``` +-- 科室:科编号、科名、科地址、科电话、医生姓名 +-- 病房:病房号、床位号、所属科室名 +-- 医生:姓名、职称、所属科室名、年龄、工作证号 +-- 病人:病历号、姓名、性别、诊断、主治医生、病房号 +-- ``` + +-- 2.1. (10分)其中,一个科室有多个病房、多个医生;一个病房只能属于一个科室,一名医生只属于一个科室,但可负责多名病人的诊治,一个病人的主主治生只有一个。科编号是标识列,从1开始自增长,步进值为1,医生职称有:实习,初级,中级,高级。 +-- 请设计该表关系模式结构(数据库物理模型),要求: +-- +-- +-- a. 中文名和英文名称清晰(可借助有道翻译工具,不允许开网页) +-- b. 表关系准确,包括主键,外键,标识列 +-- c. 将完成的设计截图,并且保存物理模型文件,命名为恰当的名称 +-- d. 将截图和物理模型文件放在自己的文件夹中 +-- +-- 2.2. (10分)创建存储过程实现:传入病历号,查询其对应的主治医生及其所在的病房号、床位号。 +-- 2.3. (10分)创建触发器实现:当医生离职时,检查其是否还有未完成医治的病人,如果还存在病人则不予离职,否则可以离职。 +-- +``` + -- Gitee From 4de26eaa1ab0305372092a278ab122fab0aec1f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BD=97=E5=91=A8=E7=86=A0?= <2108439463@qq.com> Date: Tue, 22 Oct 2024 12:29:02 +0800 Subject: [PATCH 2/2] 10/21 --- ...74\345\220\210\347\273\203\344\271\240.md" | 410 ++++++++++++++++++ 1 file changed, 410 insertions(+) diff --git "a/\347\275\227\345\221\250\347\206\240/25 20241021 \347\273\274\345\220\210\347\273\203\344\271\240.md" "b/\347\275\227\345\221\250\347\206\240/25 20241021 \347\273\274\345\220\210\347\273\203\344\271\240.md" index 20579be..629f400 100644 --- "a/\347\275\227\345\221\250\347\206\240/25 20241021 \347\273\274\345\220\210\347\273\203\344\271\240.md" +++ "b/\347\275\227\345\221\250\347\206\240/25 20241021 \347\273\274\345\220\210\347\273\203\344\271\240.md" @@ -1,3 +1,413 @@ +# 一、单项选择题 + +1. 不属于数据库三大范式的作用的是( c) + +``` +A.减少数据冗余 +B.使表结构清晰 +C.增加数据冗余 +D.提高查询和存储效率 +``` + + + +2. 关于数据库的设计范式,以下错误的是( b ) + +``` +A.第一范式的目标是确保每列的原子性 +B.第二范式要求每个表描述多个事情 +C.如果一个关系满足的2NF,并且除了主键以外其它的列都不传递依赖于主键列,则满足第三范式 +D.三大范式通常用来规范数据表的设计 +``` + + + +3. 将实体-联系模型转换为关系模型时,如果实体之间是多对多的关系,则在关系模型中的实现方式是(b ) + +``` +A.建立新的属性 +B.建立新的关系 +C.增加新的关键字 +D.建立新的实体 +``` + +4. 一名学生可以使用多台计算机,每台计算机只能由一名学生使用,则实体学生和计算机间的联系是(b ) + +``` +A.一对一 +B.多对一 +C.一对多 +D.多对多 +``` + + + +5. 用来表示数据库实体之间关系的图形叫?(b) + +``` +A.E-P图 +B.E-R图 +C.U-R图 +D.E-U图 +``` + +6. 在RBAC系统中,如果希望限制某些用户只能在其所属部门内访问资源,应该如何设计?(c) + +``` +A.为每个用户单独分配权限,不考虑部门因素 +B.创建一个全局角色,包含所有部门的权限 +C.为每个部门创建一个单独的角色,并分配相应的权限 +D.使用会话管理来控制访问 +``` + +7. 在RBAC中,如果用户需要获得新的权限,应该如何操作?(b) + +``` +A.直接修改用户的权限设置 +B.修改角色的权限,然后将用户添加到该角色 +C.删除用户的旧角色并重新分配新角色 +D.以上都可以,视情况而定 +``` + +8. RBAC相较于传统的访问控制方法,其主要优点是什么?(c) + +``` +A.管理复杂 +B.灵活性差 +C.权限分配清晰,易于管理 +D.不支持细粒度控制 +``` + +9. RBAC在用户与权限管理中的核心作用是什么?(b) + +``` +A.直接关联用户和权限 +B.通过角色间接关联用户和权限 +C.提供强制访问控制 +D.确保数据加密 +``` + +10. RBAC指的是什么?(c) + +``` +A.基于权限的访问控制 +B.基于用户的访问控制 +C.基于角色的访问控制 +D.基于资源的访问控制 +``` + +11. 以下哪项不是SKU设计时应考虑的因素?(d) + +``` +A.商品的颜色 +B.商品的尺寸 +C.商品的制造商 +D.商品的库存数量 +``` + +12. 在设计商品数据库时,哪个概念用于表示一类商品的基本属性,如品牌、型号等,而不涉及具体的规格或库存?(d) + +``` +A.Product ID +B.Variant ID +C.SKU +D.SPU +``` + +13. 在电商系统的商品管理中,用于唯一标识不同颜色、尺寸等属性的商品实例的是(c) + +``` +A.UPC(通用产品代码) +B.EAN(欧洲商品编号) +C.SKU(库存量单元) +D.SPU(标准化产品单元) +``` + +14. 设计电商产品的数据库时,关于SKU和SPU的描述,下列哪一项是正确的?(c) + +``` +A.SKU是商品聚合信息的最大单位 +B.SPU是库存量单元,具体表示某商品的不同规格和数量的库存 +C.SKU用于描述具有特定规格、颜色和库存量的商品实例,而SPU则代表一个标准化的产品单元 +D. SPU和SKU在数据库设计中没有明确的区分,可以互换使用 +``` + +15. 下列对于为什么使用视图的描述,不正确的是(a) + +``` +A.所有视图都可以实现对数据的增、删、改、查操作 +B.简化复杂的SQL操作。在编写查询后,可以方便地重用它而不必知道它的基本查询细节 +C.使用表的组成部分而不是整个表 +D.保护数据。可以给用户授予表的特定部分的访问权限而不是整个表的访问权限 +``` + +16. 关于视图创建和使用的一些最常见的规则和限制。下列说法中错误的是(b ) + +``` +A.与表一样,视图必须唯一命名 +B.对于可以创建的视图数目没有限制 +C.视图是一种数据库对象,是从数据库的表或其他视图中导出的基表 +D.视图可以嵌套,即可以利用从其他视图中检索数据的查询来构造一个视图 +``` + +17. 下面创建视图正确的是( d ) + +``` +A.CREATE VIEW +B.CREATE VIEW stu_info +C.CREATE VIEW stu_info AS +D.CREATE VIEW stu_info AS 查询语句 +``` + +18. 通常,下列操作中,不能更新视图是( d) + +``` +A.INSERT +B.UPDATE +C.DELETE +D.SELECT +``` + +19. 什么是视图( d) + +``` +A.一张图片 +B.一张表 +C.数据库中所有的表 +D.虚拟的表 +``` + +20. 为什么要使用存储过程,下列描述错误的是(b ) + +``` +A.通过把处理封装在容易使用的单元中,简化复杂的操作 +B.由于不要求反复建立一系列处理步骤,这保证了数据的完整性 +C.减少网络传输 +D.提高性能。因为使用存储过程比使用单独的SQL语句要快 +``` + +21. DELIMITER的作用是什么(a ) + +``` +A.区分普通代码和存储过程 +B.有无都一样 +C.成对出现 +D.只出现在代码开头 +``` + +22. 要删除存储过程 stu_result ,正确的语法是(c) + +``` +A.DELETE PROCEDURE stu_result +B.DROP stu_result; +C.DROP PROCEDURE stu_result; +D.DROP stu_result PROCEDURE ; +``` + +23. 存储过程中传出参数正确的定义方法是(c ) + +``` +A.OUT s_max INT +B.IN s_max INT +C.OUT INT s_max +D.以上多不正确 +``` + +24.要检查存储过程stu_lessage的语句,下列正确的是(a ) + +``` +A.SHOW CREATE PROCEDURE stu_lessage; +B.SHOW PROCEDURE stu_lessage; +C.SHOW stu_lessage; +D.SHOW CREATE PROCEDURE +``` + +25. 什么是游标(d) + +``` +A.简单的SELECT语句 +B.游标主要用于交互式应用 +C.MySQL游标只能用于存储过程(和函数) +D.一个存储在mysql服务器上数据库查询,它不是一条select 语句,而是被语句检索出来的结果集 +``` + +26. 创建使用游标正确的是(a ) + +``` +A.DELIMITER // + CREATE PROCEDURE stu_age() + BEGIN + DECLARE age_s CURSOR + FOR SELECT age FROM students; + END // + DELIMITER; + +B.CREATE PROCEDURE stu_age() + BEGIN + DECLARE age_s CURSOR + FOR SELECT age FROM students; + END + +C.DELIMITER // + BEGIN + DECLARE age_s CURSOR + FOR SELECT age FROM students; + END // + DELIMITER + +D.DELIMITER // + CREATE PROCEDURE stu_age() + BEGIN + DECLARE age_s + FOR SELECT age FROM students; + END // + DELIMITER; +``` + +27. 打开游标age_s的语法是( a ) + +``` +A.OPEN age_s; +B.CLOSE age_s +C.OPEN CURSOR age_s; +D.OPEN age_s CURSOR; +``` + +28. 游标中的FETCH有什么作用( d ) + +``` +A.指定检索什么数据(所需的列),检索出来的数据存储在什么地方 +B.循环检索数据,从第一行到最后一行 +C.调用存储过程 +D.对取出的数据进行某种实际的处理 +``` + +29. 什么是触发器(a) + +``` +A.某个表发生更改时自动处理就是触发器 +B.使用insert语句 +C.使用update语句 +D.使用delete语句 +``` + +30. 下列哪个选项,不是在创建触发器时,需要给出的条件( a ) + +``` +A.触发器的执行权限 +B.触发器关联的表 +C.触发器应该响应的活动(DELETE、INSERT或UPDATE) +D.触发器何时执行(处理之前或之后) +``` + +31. 删除触发器的语法正确的是( d) + +``` +A.Delete trigger 触发器名; +B.Alter trigger 触发器名; +C.Delete trigger 触发器名; +D.Drop trigger 触发器名; +``` + +32. 哪个语句不能当触发器的的条件( a) + +``` +A.Select +B.Update +C.Insert +D.Delete +``` + +33. 下面插入触发器正确的是( b ) + +``` +A.CREATE TRIGGER AFTER INSERT ON students + FOR EACH ROW INSERT INTO stucreatetime(create_time) VALUES(NOW()); + +B.CREATE TRIGGER trigger_stu AFTER INSERT ON students + FOR EACH ROW INSERT INTO stucreatetime(create_time) VALUES(NOW()); + +C.CREATE trigger_stu AFTER INSERT ON students + FOR EACH ROW INSERT INTO stucreatetime(create_time) VALUES(NOW()); + +D.CREATE TRIGGER trigger_stu INSERT ON students + FOR EACH ROW INSERT INTO stucreatetime(create_time) VALUES(NOW()); +``` + +34. 事务处理的作用(a ) + +``` +A.可以用来维护数据库的完整性,它保证成批的MySQL操作要么完全执行,要么完全不执行。 +B.批量执行SQL语句 +C.任何地方都可使用 +D.进行逻辑处理 +``` + +35. 在使用事务和事务处理时,回滚用什么命令(b ) + +``` +A.transaction +B.rollback +C.commit +D.savepoint +``` + +36. 提交事务的命令是什么( c ) + +``` +A.transaction +B.rollback +C.commit +D.return +``` + +37. 在MySQL中,以下哪个命令用于删除索引?( a ) + +``` +A.DROP INDEX 索引名 ON 表名; +B.ALTER TABLE 表名 DROP INDEX 索引名; +C.DELETE INDEX 索引名 FROM 表名; +D.REMOVE INDEX 索引名 FROM 表名; +``` + +38. 以下哪种情况最不适合使用索引?( b ) + +``` +A.经常在WHERE子句中出现的列 +B.只有很少不同值的列(如性别列) +C.经常进行排序操作的列 +D.包含许多不同值的列 +``` + +39. 在MySQL中,使用哪种关键字可以为表创建索引?( c ) + +``` +A.CREATE PROCEDURE +B.CREATE TRIGGER +C.CREATE INDEX +D.CREATE FUNCTION +``` + +40. 关于MySQL索引的描述,以下哪项是不正确的?( d ) + +``` +A.索引可以加速查询速度 +B.索引会占用额外的存储空间 +C.索引可以创建在多个列上,称为复合索引 +D.索引可以随意添加,对性能只有正面影响 +``` + +41. 以下哪个SQL语句用于查看表上的所有索引?( a ) + +``` +A.SHOW TABLES; +B.SHOW COLUMNS FROM 表名; +C.SHOW INDEX FROM 表名; +D.DESCRIBE 表名; +``` + + + # 二、操作题 ```sql -- Gitee