第64练 项目八 查看使用修改和删除视图《数据库原理与应用技术-MySQL》(河北科学技术出版社)一课一练(河北省)

2026-05-07
| 2份
| 10页
| 36人阅读
| 0人下载

内容正文:

编写说明:依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循"由浅入深、循序渐进"的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。 本卷是《数据库原理与应用技术-MySQL》(河北科学技术出版社)《一课一练》第64练,内容是查看、使用、修改和删除视图。 《数据库原理与应用技术-MySQL》(河北科学技术出版社)《一课一练》 第64练 查看、使用、修改和删除视图 一、单项选择题 1. 现有视图v_emp不存在,下列 SQL 语句执行后不会报错且能成功创建视图的是( ) A. ALTER VIEW v_emp AS SELECT ename, sal FROM emp; B. CREATE OR REPLACE VIEW v_emp AS SELECT ename, sal FROM emp; C. MODIFY VIEW v_emp AS SELECT ename, sal FROM emp; D. UPDATE VIEW v_emp AS SELECT ename, sal FROM emp; 【答案】B 【解析】 选项 A:ALTER VIEW只能修改已存在的视图,视图不存在时会报错。 选项 B:正确,CREATE OR REPLACE VIEW的特性是:视图存在则替换,不存在则创建,执行永远不会因视图不存在而报错。 选项 C、D:MODIFY VIEW和UPDATE VIEW均为 MySQL 不支持的错误语法。 2.现有视图定义如下: CREATE VIEW v_sal3000 AS SELECT ename, sal, deptno FROM emp WHERE sal > 3000 WITH CHECK OPTION; 下列 SQL 语句能够成功执行的是( ) A. UPDATE v_sal3000 SET sal = 2500 WHERE ename = '张三'; B. INSERT INTO v_sal3000 VALUES ('李四', 2800, 10); C. DELETE FROM v_sal3000 WHERE ename = '王五'; D. UPDATE v_sal3000 SET deptno = 20 WHERE sal = 2900; 【答案】C 【解析】 WITH CHECK OPTION仅约束INSERT 和 UPDATE操作,要求操作后的数据必须满足视图定义的WHERE sal > 3000条件,对DELETE操作无约束。 选项 A:更新后 sal=2500 不满足条件,被阻止。 选项 B:插入的 sal=2800 不满足条件,被阻止。 选项 C:正确,DELETE 操作不受 WITH CHECK OPTION 约束。 选项 D:WHERE 子句中的 sal=2900 本身不在视图范围内,无法更新。 3.现有视图定义如下: CREATE VIEW v_distinct_dept AS SELECT DISTINCT deptno FROM emp; 下列 SQL 语句能够成功执行的是( ) A. INSERT INTO v_distinct_dept VALUES (40); B. UPDATE v_distinct_dept SET deptno = 50 WHERE deptno = 10; C. DELETE FROM v_distinct_dept WHERE deptno = 20; D. 以上语句都无法成功执行 【答案】D 【解析】 当视图定义包含DISTINCT 关键字时,该视图属于不可更新视图。因为 DISTINCT 会对结果集进行去重,MySQL 无法确定要更新 / 插入 / 删除的具体基表行。因此选项 A、B、C 均无法执行。 4.下列 SQL 语句中,能够查询当前数据库中所有视图的名称、创建时间和最后修改时间的是( ) A. SELECT table_name, create_time, update_time FROM information_schema.views WHERE table_schema = DATABASE(); B. SELECT view_name, create_time, modify_time FROM information_schema.views WHERE table_schema = DATABASE(); C. SELECT table_name, create_time, update_time FROM information_schema.tables WHERE table_type = 'VIEW'; D. SELECT table_name, create_time, update_time FROM information_schema.tables WHERE table_type = 'VIEW' AND table_schema = DATABASE(); 【答案】D 【解析】 选项 A:information_schema.views表中没有 update_time 字段,该字段存储在information_schema.tables表中。 选项 B:系统表中字段名为table_name而非view_name,且无modify_time字段。 选项 C:未限定table_schema = DATABASE(),会查询所有数据库的视图,不准确。 选项 D:正确,视图在 MySQL 中被视为特殊的表(table_type='VIEW'),所有元信息都存储在information_schema.tables表中。 5.要同时删除视图v_emp1、v_emp2和v_emp3(可能部分不存在),下列 SQL 语句最安全且正确的是( ) A. DROP VIEW v_emp1, v_emp2, v_emp3; B. DROP VIEW IF EXISTS v_emp1, v_emp2, v_emp3; C. DROP VIEW IF EXISTS v_emp1; DROP VIEW IF EXISTS v_emp2; DROP VIEW IF EXISTS v_emp3; D. DROP TABLE IF EXISTS v_emp1, v_emp2, v_emp3; 【答案】B 【解析】 选项 A:如果其中任何一个视图不存在,整个语句都会报错,已存在的视图也不会被删除。 选项 B:正确,IF EXISTS关键字可以避免因视图不存在而报错,且支持逗号分隔多个视图名,批量删除效率最高。 选项 C:虽然可以执行,但写法繁琐,不如选项 B 简洁规范。 选项 D:DROP TABLE用于删除表,会误删同名表(若存在)。 6.现有视图定义如下: CREATE VIEW v_emp_dept10_20 AS SELECT ename, deptno FROM emp WHERE deptno = 10 UNION SELECT ename, deptno FROM emp WHERE deptno = 20; 下列 SQL 语句能够成功执行的是( ) A. INSERT INTO v_emp_dept10_20 VALUES ('赵六', 30); B. UPDATE v_emp_dept10_20 SET deptno = 30 WHERE deptno = 10; C. DELETE FROM v_emp_dept10_20 WHERE deptno = 20; D. 以上语句都无法成功执行 【答案】D 【解析】 当视图定义包含UNION 或 UNION ALL 关键字时,该视图属于不可更新视图。因为 UNION 会合并多个结果集,MySQL 无法确定要操作的具体基表行。因此选项 A、B、C 均无法执行。 7.现有视图v_stu定义如下: CREATE VIEW v_stu AS SELECT sno, sname, sage FROM student; 要将视图的列名修改为学号、姓名、年龄,下列 SQL 语句正确的是( ) A. ALTER VIEW v_stu RENAME COLUMN sno TO 学号, sname TO 姓名, sage TO 年龄; B. ALTER TABLE v_stu RENAME COLUMN sno TO 学号, sname TO 姓名, sage TO 年龄; C. CREATE OR REPLACE VIEW v_stu (学号, 姓名, 年龄) AS SELECT sno, sname, sage FROM student; D. MODIFY VIEW v_stu (学号, 姓名, 年龄) AS SELECT sno, sname, sage FROM student; 【答案】C 【解析】 选项 A:MySQL 不支持ALTER VIEW ... RENAME COLUMN语法,无法直接修改视图列名。 选项 B:ALTER TABLE会修改基表student的列名,而不是视图的列名,会造成严重后果。 选项 C:正确,要修改视图列名,必须使用CREATE OR REPLACE VIEW重新定义视图,并在视图名后显式指定新的列名列表。 选项 D:MODIFY VIEW为错误语法。 8.下列 SQL 语句中,能够查看视图v_course的字符集和排序规则的是( ) A. SHOW CREATE VIEW v_course; B. DESC v_course; C. SELECT table_collation FROM information_schema.tables WHERE table_name = 'v_course' AND table_schema = DATABASE(); D. SELECT character_set_name FROM information_schema.views WHERE table_name = 'v_course' AND table_schema = DATABASE(); 【答案】C 【解析】 选项 A:SHOW CREATE VIEW显示的是视图的创建语句,不包含字符集和排序规则信息。 选项 B:DESC显示的是视图的列结构,不包含整个视图的字符集信息。 选项 C:正确,视图的字符集和排序规则存储在information_schema.tables表的table_collation字段中。 选项 D:information_schema.views表中没有character_set_name字段。 9.要将视图v_old重命名为v_new,下列 SQL 语句正确的是( ) A. RENAME VIEW v_old TO v_new; B. ALTER VIEW v_old RENAME TO v_new; C. RENAME TABLE v_old TO v_new; D. CREATE OR REPLACE VIEW v_new AS SELECT * FROM v_old; DROP VIEW v_old; 【答案】C 【解析】 选项 A、B:MySQL 没有RENAME VIEW或ALTER VIEW ... RENAME TO语法。 选项 C:正确,MySQL 中视图被视为特殊的表,因此可以使用RENAME TABLE语句重命名视图。 选项 D:虽然可以实现重命名效果,但会重新创建视图并删除原视图,效率低且可能丢失原视图的权限信息,不是正确的重命名方法。 10.现有视图定义如下: CREATE VIEW v_emp_dept AS SELECT e.ename, e.sal, d.dname FROM emp e JOIN dept d ON e.deptno = d.deptno WITH CHECK OPTION; 下列 SQL 语句能够成功执行的是( ) A. UPDATE v_emp_dept SET sal = 5000 WHERE ename = '张三'; B. UPDATE v_emp_dept SET dname = '销售部' WHERE ename = '李四'; C. INSERT INTO v_emp_dept VALUES ('王五', 4000, '财务部'); D. DELETE FROM v_emp_dept WHERE ename = '赵六'; 【答案】A 【解析】 多表连接视图只有在更新的列全部来自同一个基表时才可能可更新。 选项 A:正确,sal列来自基表emp,且更新后的数据仍满足视图的连接条件(隐含 WITH CHECK OPTION 约束)。 选项 B:dname列来自基表dept,但 MySQL 无法确定要更新dept表中的哪一行(多个员工可能属于同一个部门),因此无法执行。 选项 C:插入操作需要同时向两个基表插入数据,MySQL 不支持。 选项 D:删除操作需要同时从两个基表删除数据,MySQL 不支持。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $ 编写说明:依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循"由浅入深、循序渐进"的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。 本卷是《数据库原理与应用技术-MySQL》(河北科学技术出版社)《一课一练》第64练,内容是查看、使用、修改和删除视图。 《数据库原理与应用技术-MySQL》(河北科学技术出版社)《一课一练》 第64练 查看、使用、修改和删除视图 一、单项选择题 1. 现有视图v_emp不存在,下列 SQL 语句执行后不会报错且能成功创建视图的是( ) A. ALTER VIEW v_emp AS SELECT ename, sal FROM emp; B. CREATE OR REPLACE VIEW v_emp AS SELECT ename, sal FROM emp; C. MODIFY VIEW v_emp AS SELECT ename, sal FROM emp; D. UPDATE VIEW v_emp AS SELECT ename, sal FROM emp; 2.现有视图定义如下: CREATE VIEW v_sal3000 AS SELECT ename, sal, deptno FROM emp WHERE sal > 3000 WITH CHECK OPTION; 下列 SQL 语句能够成功执行的是( ) A. UPDATE v_sal3000 SET sal = 2500 WHERE ename = '张三'; B. INSERT INTO v_sal3000 VALUES ('李四', 2800, 10); C. DELETE FROM v_sal3000 WHERE ename = '王五'; D. UPDATE v_sal3000 SET deptno = 20 WHERE sal = 2900; 3.现有视图定义如下: CREATE VIEW v_distinct_dept AS SELECT DISTINCT deptno FROM emp; 下列 SQL 语句能够成功执行的是( ) A. INSERT INTO v_distinct_dept VALUES (40); B. UPDATE v_distinct_dept SET deptno = 50 WHERE deptno = 10; C. DELETE FROM v_distinct_dept WHERE deptno = 20; D. 以上语句都无法成功执行 4.下列 SQL 语句中,能够查询当前数据库中所有视图的名称、创建时间和最后修改时间的是( ) A. SELECT table_name, create_time, update_time FROM information_schema.views WHERE table_schema = DATABASE(); B. SELECT view_name, create_time, modify_time FROM information_schema.views WHERE table_schema = DATABASE(); C. SELECT table_name, create_time, update_time FROM information_schema.tables WHERE table_type = 'VIEW'; D. SELECT table_name, create_time, update_time FROM information_schema.tables WHERE table_type = 'VIEW' AND table_schema = DATABASE(); 5.要同时删除视图v_emp1、v_emp2和v_emp3(可能部分不存在),下列 SQL 语句最安全且正确的是( ) A. DROP VIEW v_emp1, v_emp2, v_emp3; B. DROP VIEW IF EXISTS v_emp1, v_emp2, v_emp3; C. DROP VIEW IF EXISTS v_emp1; DROP VIEW IF EXISTS v_emp2; DROP VIEW IF EXISTS v_emp3; D. DROP TABLE IF EXISTS v_emp1, v_emp2, v_emp3; 6.现有视图定义如下: CREATE VIEW v_emp_dept10_20 AS SELECT ename, deptno FROM emp WHERE deptno = 10 UNION SELECT ename, deptno FROM emp WHERE deptno = 20; 下列 SQL 语句能够成功执行的是( ) A. INSERT INTO v_emp_dept10_20 VALUES ('赵六', 30); B. UPDATE v_emp_dept10_20 SET deptno = 30 WHERE deptno = 10; C. DELETE FROM v_emp_dept10_20 WHERE deptno = 20; D. 以上语句都无法成功执行 7.现有视图v_stu定义如下: CREATE VIEW v_stu AS SELECT sno, sname, sage FROM student; 要将视图的列名修改为学号、姓名、年龄,下列 SQL 语句正确的是( ) A. ALTER VIEW v_stu RENAME COLUMN sno TO 学号, sname TO 姓名, sage TO 年龄; B. ALTER TABLE v_stu RENAME COLUMN sno TO 学号, sname TO 姓名, sage TO 年龄; C. CREATE OR REPLACE VIEW v_stu (学号, 姓名, 年龄) AS SELECT sno, sname, sage FROM student; D. MODIFY VIEW v_stu (学号, 姓名, 年龄) AS SELECT sno, sname, sage FROM student; 8.下列 SQL 语句中,能够查看视图v_course的字符集和排序规则的是( ) A. SHOW CREATE VIEW v_course; B. DESC v_course; C. SELECT table_collation FROM information_schema.tables WHERE table_name = 'v_course' AND table_schema = DATABASE(); D. SELECT character_set_name FROM information_schema.views WHERE table_name = 'v_course' AND table_schema = DATABASE(); 9.要将视图v_old重命名为v_new,下列 SQL 语句正确的是( ) A. RENAME VIEW v_old TO v_new; B. ALTER VIEW v_old RENAME TO v_new; C. RENAME TABLE v_old TO v_new; D. CREATE OR REPLACE VIEW v_new AS SELECT * FROM v_old; DROP VIEW v_old; 10.现有视图定义如下: CREATE VIEW v_emp_dept AS SELECT e.ename, e.sal, d.dname FROM emp e JOIN dept d ON e.deptno = d.deptno WITH CHECK OPTION; 下列 SQL 语句能够成功执行的是( ) A. UPDATE v_emp_dept SET sal = 5000 WHERE ename = '张三'; B. UPDATE v_emp_dept SET dname = '销售部' WHERE ename = '李四'; C. INSERT INTO v_emp_dept VALUES ('王五', 4000, '财务部'); D. DELETE FROM v_emp_dept WHERE ename = '赵六'; 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $

资源预览图

第64练 项目八 查看使用修改和删除视图《数据库原理与应用技术-MySQL》(河北科学技术出版社)一课一练(河北省)
1
第64练 项目八 查看使用修改和删除视图《数据库原理与应用技术-MySQL》(河北科学技术出版社)一课一练(河北省)
2
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。