MySQL数据库基础与实例教程练习题参考答案

上传人:gbs****77 文档编号:9290172 上传时间:2020-04-04 格式:DOC 页数:23 大小:205.16KB
返回 下载 相关 举报
MySQL数据库基础与实例教程练习题参考答案_第1页
第1页 / 共23页
MySQL数据库基础与实例教程练习题参考答案_第2页
第2页 / 共23页
MySQL数据库基础与实例教程练习题参考答案_第3页
第3页 / 共23页
点击查看更多>>
资源描述
MySQL 数据库基础与实例教程练习题参考答案 由于时间仓促 答案中难免存在错误 不妥之处恳请读者批评指正 第一章答案 1 数据库管理系统中常用的数学模型有哪些 数据库管理系统通常会选择某种 数学模型 存储 组织 管理数据库中的数据 常 用的数学模型包括 层次模型 网状模型 关系模型 以及 面向对象模型 等 2 您听说过的关系数据库管理系统有哪些 数据库容器中通常包含哪些数据库对象 目前成熟的关系数据库管理系统主要源自欧美数据库厂商 典型的有美国微软公司的 SQL Server 美国 IBM 公司的 DB2 和 Informix 德国 SAP 公司的 Sybase 美国甲骨文公 司的 Oracle 数据库容器中通常包含表 索引 视图 存储过程 触发器 函数等数据库对象 3 通过本章知识的讲解 SQL 与程序设计语言有什么关系 SQL 并不是一种功能完善的程序设计语言 例如 不能使用 SQL 构建人性化的图形用 户界面 Graphical User Interface GUI 程序员需要借助 Java VC 等面向对象程序设 计语言或者 HTML 的 FORM 表单构建图形用户界面 GUI 如果选用 FORM 表单构建 GUI 程序员还需要使用 JSP PHP 或者 NET 编写 Web 应用程序 处理 FORM 表单中的 数据以及数据库中的数据 其他答案 1 首先 SQL 语言是数据库结构化查询语言 是非过程化编程语言 而程序设计语言 则有更多的面向对象及逻辑程序设计 比如用 SQL 语言编写图形用户界面 例如窗口 进 度条 是无法实现的 2 SQL 语言可以说是 程序设计语言和数据库之间的一个翻译 官 程序设计语言需要操作数据库时 需要借助 或者说调用 SQL 语言来翻译给数据库 管理系统 3 不同数据库管理系统会有一些特殊的 SQL 规范 比如 limit 关键词在 SQL Server 中无法使用 而这些规范与程序设计语言无关 4 通过本章的学习 您了解的 MySQL 有哪些特点 与题目 2 中列举的商业化数据库管理系统相比 MySQL 具有开源 免费 体积小 便 于安装 但功能强大等特点 5 通过本章的学习 您觉得数据库表与电子表格 例如 Excel 有哪些区别 限于本章的知识点 外观上 关系数据库中的一个数据库表和一个不存在 合并单元 格 的电子表格 例如 Excel 相同 与电子表格不同的是 同一个数据库表的字段名不能 重复 为了优化存储空间以及便于数据排序 数据库表的每一列必须指定某种数据类型 关系数据库中的表是由列和行构成的 和电子表格不同的是 数据库表要求表中的每 一行记录都必须是唯一的 即在同一张数据库表中不允许出现完全相同的两条记录 6 您所熟知的数据库设计辅助工具有哪些 您所熟知的模型 工具 技术有哪些 数据库设计辅助工有数据模型 数据建模工具 关系数据库设计技术 其中常用的数 据模型有 ER 模型和类图 常用的数据建模工具如 ERwin PowerDesigner Visio 等 常用 的关系数据库设计技术如数据库规范化技术 1 模型 数 据 模 型 有 E R 图 或 者 类 图 等 数 据 模 型 业 务 模 型 有 程 序 流 程 图 数 据 流 程 图 DFD 时 序 图 状 态 图 等 业 务 模 型 2 工具 软件项目管理工具如美国微软公司的 Project 数据建模工具如 ERwin PowerDesigner Visio 业务建模工具如 PowerDesigner Rational Rose 以及 Visio 等 IDE 工具有 VC 6 0 Visual Studio Eclipse 以及 NetBeans 等 测试工具有 Junit 单元 测试工具 QuickTest Professional 功能测试工具以及 LoadRunner 性能测试工具等 3 技术 软件开发时常用的技术包括 面向对象分析和设计技术 结构化分析和设计技术 软 件测试技术和关系数据库设计技术等 7 请您罗列出 选课系统 需要实现哪些功能 使用数据库技术能够解决 选课系统 中的哪些商业问题 选课系统 中存在的商业问题 等于 选课系统 需要实现的功能 如何存储以及维护课程 学生 教师以及班级的详细信息 不同教师申报的课程名能否相同 如果允许课程名相同 如何区分课程 如何控制每位教师只能申报一门选修课程 如何控制每门课程的人数上限在 60 150 230 中取值 如何控制每一门课程的选课学生总人数不超过该课程的人数上限 如何实现学生选课功能 退选功能以及调课功能 如何控制每位学生最多可以选修两门课程 且两门课程不能相同 系统如何自动记录学生的选课时间 如何统计每一门课程还可以供多少学生选修 如何统计人数已经报满的课程 如何统计某一个教师已经申报了哪些课程 如何统计某一个学生已经选修了多少门课程 是哪些课程 如何统计选修人数少于 30 人的所有课程信息 如何统计选修每一门课程的所有学生信息 课程信息删除后 如何保证选择该课程的学生可以选修其他课程 如何通过搜索关键字检索自己感兴趣的课程信息 8 您所熟知的编码规范有哪些 1 命名规范 2 注释 3 书写规范 缩进规范 9 您是如何理解 E R 图中实体间的关系是双向的 能不能举个例子 请参看 1 3 1 章节的内容 10 E R 图中 什么是基数 什么是元 什么是关联 请参看 1 3 2 章节的内容 11 E R 图的设计原则是什么 您是怎么理解 E R 图的设计原则的 请参看 1 3 3 章节数 据 库 开 发 人 员 通 常 采 用 一 事 一 地 的 原 则 的内容 12 关系数据库的设计步骤是什么 为每张表定义一个主键有技巧可循吗 主键与关 键字有什么关系 关系数据库的设计步骤 请参看 1 4 章节的内容 为每张表定义一个主键技巧 请参看 1 4 2 章节的内容 主键与关键字有什么关系 请参看 1 4 2 章节的内容 12 在关系数据库设计过程中 如何表示 E R 图中的 1 1 1 m m n 关系 请参看 1 4 3 以及 1 4 4 章节的内容 13 在数据 库 管 理 系 统 中 您 所 熟 知 的 数 据 类 型 有 哪 些 每 一 种 数 据 类 型 能 不 能 各 列 举 一 些 例 子 请参看 1 4 5 章节的内容 14 您所熟知的约束条件有哪些 MySQL 支持哪些约束条件 请参看 1 4 6 章节的内容 MySQL 支持主键 primary key 约束 外键 foreign key 约束 唯一性 约束 默认值 default 约束 非空 约束 15 数据库中数据冗余的 并发症 有哪些 能不能列举一些例子 数据冗余 并发症 插入有异常 删除异常 修改复杂 例子参看 1 4 8 章节的内容 16 如何避免数据冗余 什么是 1NF 2NF 3NF 使用规范化减少数据冗余请参看 1 4 8 章节的内容 17 根据本章的场景描述 很多团购网站在网上对房源进行出租 的 E R 图 请 设计该场景描述的数据库表 团购网站 网站 ID 网址 房源 房间号 房型 顾客 顾客号 出租 出租 ID 网站 ID 房间号 顾客号 19 如果将学生 student 表设计为如下表结构 student no student no student name student contact class no department name 请用数据库规范化的知识解释该表是否满足 3NF 范式的要求 该表是否存在数据冗余 是否会产生诸如插入异常 删除异常 修改复杂等数据冗余 并发症 此题题目中的学生 student 表存在问题 建议将学生 student 表修改为如下结构 学号 姓名 性别 课程号 课程名 成绩 课程号 课程名 成绩 居住地 邮编 请参看 1 4 8 章节的内容 20 在 选课系统 中 学生选课时 由于每一门课程受到教室座位数的限制 每一 门课程设置了人数上限 如何确保每一门课程选报学生的人数不超过人数上限 有几种设 计方案 这些设计方案的区别在哪里 请参看 1 4 9 章节的内容 21 选课系统 有几张表 每个表有哪些字段 teacher teacher no teacher name teacher contact classes class no class name department name course course no course name up limit description status teacher no student student no student name student contact class no choose choose no student no char 11 course no score choose time 22 依据自己所掌握的知识 描述如何使用数据库技术解决 选课系统 问题域中的 问题 如何存储以及维护课程 学生 教师以及班级的详细信息 答 course student teacher classes 表可以用于存储以及维护课程 学生 教师 以及班级的详细信息 不同教师申报的课程名能否相同 如果允许课程名相同 如何区分课程 答 如果需求要求 不同教师申报的课程名不能相同 则可以通过将 course 表的 course name 字段设置为 unique 约束即可 如果需求要求 不同教师申报的课程名可以相同 此时可以通过给 course 表添加 course id 无任何逻辑意义 主键字段 标记不同教师申报的课程 如何控制每位教师只能申报一门选修课程 请参看 1 4 3 章节的 情形二 内容 如何控制每门课程的人数上限在 60 150 230 中取值 答 MySQL 目前不正常 check 约束 但该问题可以借助 MySQL 触发器解决 该 题超出本章知识点内容 请参看触发器章节内容 如何控制每一门课程的选课学生总人数不超过该课程的人数上限 请参看 1 4 9 章节的内容 如何实现学生选课功能 退选功能以及调课功能 答 该问题可以借助 MySQL 存储过程 事务解决 该题超出本章知识点内容 请参看存储过程章节以及事务章节的内容 如何控制每位学生最多可以选修两门课程 且两门课程不能相同 答 该问题可以借助 MySQL 存储过程解决 该题超出本章知识点内容 请参看 存储过程章节内容 系统如何自动记录学生的选课时间 答 借助 MySQL 的 now 函数 如何统计每一门课程还可以供多少学生选修 如何统计人数已经报满的课程 如何统计某一个教师已经申报了哪些课程 如何统计某一个学生已经选修了多少门课程 是哪些课程 如何统计选修人数少于 30 人的所有课程信息 如何统计选修每一门课程的所有学生信息 答 上述统计信息超出本章知识点内容 请参看表记录的检索章节内容 课程信息删除后 如何保证选择该课程的学生可以选修其他课程 答 可以通过外键约束级联删除实现 也可以通过触发器实现 如何通过搜索关键字检索自己感兴趣的课程信息 答 通过全文检索或者模糊查询 like 关键字实现 第二章答案 1 通过本章的学习 您了解的 MySQL 有哪些特点 答 请参看 2 1 1 章节内容 2 请您简单描述 MySQL 的使用流程 什么是 MySQL 客户机 登录主机与 MySQL 客户机有什么关系 什么是 MySQL 会话 答 请参看 2 1 1 章节内容 MySQL 客户机 与 MySQL 服务器通话的客户端不止一种 比如 Windows 操作系统 下的命令行 可以直接通过命令建立与 mysql 数据库的通话 另外还有 phpmyadmin MySQL 等图形化界面连接方式等 本书经常使用的 MySQL 客户机程序 mysql exe 存放在 C Program Files MySQL MySQL Server 5 6 bin 目录 在一台登录主机上可以开启多个 MySQL 客户机 数据库用户访问 MySQL 服务器的数据时 首先需要选择一台登录主机 然后在该登 录主机上开启 MySQL 客户机 输入正确的账户名 密码 建立一条 MySQL 客户机与 MySQL 服务器之间的 通信链路 通信 链 路 断 开 之 前 MySQL 客 户 机 可 以 向 MySQL 服 务 器 发 送 多 次 请 求 MySQL 服 务 器 会 对 每 一 次 请 求 做 出 响 应 请 求 响 应 期 间 称 为 MySQL 会 话 3 通过 Google 或者 Baidu 搜 索 引 擎 搜 索 常 用 的 MySQL 客 户 端 工 具 或 者 客 户 机 程 序 有 哪 些 答 案 参 见 知 乎 网 址 4 MySQL 服务 MySQL 服务实例 MySQL 服务器分别是什么 什么是端口号 端 口号有什么作用 答 请参看 2 1 1 章节内容 5 请列举 my ini 配置文件中常用的参数选项组以及参数信息 答 请参看 2 1 5 章节内容 6 启动 MySQL 服务的方法有哪些 停止 MySQL 服务的方法有哪些 答 请参看 2 1 4 章节内容 7 M ySQL 客 户 机 连 接 MySQL 服 务 器 的 方 法 有 哪 些 连 接 MySQL 服 务 器 时 需 提 供 哪 些 信 息 答 请参看 2 1 7 章节内容 8 字符 字符集 字符序分别是什么 字符序的命名规则是什么 答 请参看 2 2 1 章节内容 9 您所熟知的字符集 字符序有哪些 它们之间有什么区别 答 请参看 2 2 2 章节内容 10 请简述 MySQL 字符集的转换过程 答 请参看 2 2 3 章节内容 11 MySQL 系统数据库有哪些 这些系统数据库有什么作用 答 请参看 2 2 1 章节内容 12 如果仅仅需要在数据库中存储中文简体字符 那么如何设置 MySQL 字符集 答 请参看 2 2 4 章节内容 13 请自己编写一段 SQL 脚本文件 并运行该脚本文件中的代码 答 请参看 2 2 5 章节内容 14 您所熟知的存储引擎有哪些 MyISAM 存储引擎与 InnoDB 存储引擎相比 您更 喜欢哪一个 它们都有什么特点 答 请参看 2 4 1 章节内容 15 创建 student 数据库 并在该数据库中创建 student 表 用于保存您的个人信息 如姓名 性别 身份证号 出生日期等 并完成下列操作或问题 1 上述的 student 表有没有出现数据冗余现象 提示 出生日期可以由身份证号推 算得出 答 出生日期可由身份证号计算得出 所以上述的 student 表存在数据冗余现象 2 student 数据库目录存放在数据库根目录中 默认情况下 根目录是什么 答 使用命令 show variables like datadir 可以查看参数 datadir 的值 默认安装 MySQL 后 数据库根目录 datadir 的值为 C Documents and Settings All Users Application Data MySQL MySQL Server 5 6 Data 3 如何查看 student 数据库的结构 答 请参看 2 3 3 章节内容 4 如何查看 student 表的结构 并查看该表的默认字符集 字符序 存储引擎等信息 答 请参看 2 4 4 章节内容 5 student 数据库目录中存放了哪些文件 数据库根目录中存放了哪些文件 答 请参看 2 4 1 章节内容 student 数据库目录中存放了如下文件 1 数据库文件 如 db opt 2 表名 后缀名为 frm 的表结构定义文件 3 如果 student 数据库中存在 InnoDB 存储引擎的独享表空间的表 则 student 数 据库目录中还会存放一个名为 表 名 ibd 的数据文件 4 如果 student 数据库中存在 MyISAM 存储引擎的表 则 student 数据库目录中 会存在一 个 文 件 名 为 表 名 后 缀 名 为 MYD 即 MYData 的 简 写 的 数 据 文 件 以 及 文 件 名 为 表 名 后 缀 名 为 MYI 即 MYIndex 的 简 写 的 索 引 文 件 数据库根目录中存放如下文件以及目录 如下图所示 数据库目录 例如 test 数据库目录 student 数据库目录 ib logfile0 及 ib logfile1 是重做日志文件 InnoDB 共享表空间文件 ibdata1 文件 mysql bin 000001 等一系列二进制日志文件 该知识点超出本章范围 mysql bin index 二进制日志索引文件 该知识点超出本章范围 mysqld exe 进 程 ID 号 PID 文 件 f 文 件 server uuid 服 务 器 身 份 ID 在 第 一 次 启 动 MySQL 时 会 自 动 生 成 一 个 server uuid 并 写 入 到 数据库根目录 下 f 文 件 里 官 方 不 建 议 修 改 6 将个人信息插入到 student 表中 并查询 student 表的所有记录 create database student use student create table student name char 10 not null sex char 3 not null ID char 18 primary key insert into student values 张三 男 410 001 select from student 7 在上一步骤的查询结果中是否出现了乱码 如果出现了乱码 如何避免乱码问题的 发生 如果没有出现乱码 经过哪些设置可以产生乱码 如果出现了乱码 重新删除数据库 重新设置字符集 再创建数据库和数据库表 要 求在同一个 MySQL 会话中依次执行下列代码 drop database if exists student set character set client gbk set character set connection gbk set character set database gbk set character set results gbk set character set server gbk create database student use student create table student name char 10 not null sex char 3 not null ID char 18 primary key insert into student values 张三 男 410 001 select from student 如果没有出现乱码 经过哪些设置可以产生乱码 set names latin1 select from student 8 您的个人信息存放到了哪个文件中 情形一 如果 student 表是 MyISAM 存储引擎的表 则则张三的数据存放在 一 个 文 件 名 为 studnet 后 缀 名 为 MYD 即 MYData 的 简 写 的 数 据 文 件 情形二 如果 student 表是 InnoDB 存储引擎的共享表空间的表 则张三的数据存 放在 InnoDB 共享表空间文件 ibdata1 数据文件 情形三 如果 student 表是 InnoDB 存储引擎的独享表空间的表 则张三的数据存 放在 student ibd 的数据文件 9 如何修改 student 表的存储引擎 修改 student 表的存储引擎后 您的个人信息存放 到了哪个文件中 答案 参考上一题 10 删除 student 表以及 student 数据库 use student drop table student drop database student 16 您所熟知的系统变量有哪些 如何设置系统变量的值 答 请参看 2 5 2 章节内容 请参看 2 5 3 章节内容 17 如何进行数据库备份和恢复 备份期间 有哪些注意事项 答 请参看 2 6 章节内容 第三章答案 1 MySQL 数据库类型有哪些 如何选择合适的数据类型 答 请参看 3 1 章节内容 请参看 3 1 7 章节内容 2 简单总结 char n 数据类型与 varchar n 数据类型有哪些区别 答 请参看 3 1 3 章节内容 3 datetime 与 timestamp 数据类型有什么区别 答 请参看 3 1 4 章节内容 4 MySQL 模式与 MySQL 复合数据类型有什么关系 答 请参看 3 1 5 章节内容 5 创建 SQL 脚本文件 choose sql 书 写 SQL 代 码 运 行 choose sql 创 建 choose 数 据 库 的 5 张 表 set character set client gbk set character set connection gbk set character set database gbk set character set results gbk set character set server gbk create database choose use choose create table teacher teacher no char 10 primary key teacher name char 10 not null 教师姓名不允许为空 teacher contact char 20 not null 教师联系方式名不允许为空 engine InnoDB default charset gbk create table classes class no int auto increment primary key class name char 20 not null unique 班级名不允许为空 且不允许重复 department name char 20 not null 院系名不允许为空 engine InnoDB default charset gbk create table course course no int auto increment primary key course name char 10 not null 课程名允许重复 up limit int default 60 课程上限设置默认值为 60 description text not null 课程的描述信息为文本字符串 text 且不能 为空 status char 6 default 未审核 课程状态的默认值为 未审核 teacher no char 10 not null unique 唯一性约束实现教师与课程之间 1 1 关系 constraint course teacher fk foreign key teacher no references teacher teacher no engine InnoDB default charset gbk create table student student no char 11 primary key 学号不允许重复 student name char 10 not null 学生姓名不允许为空 student contact char 20 not null 学生联系方式不允许为空 class no int 学生的班级允许为空 constraint student class fk foreign key class no references classes class no engine InnoDB default charset gbk create table choose choose no int auto increment primary key student no char 11 not null 学生学号不允许为空 course no int not null 课程号不允许为空 score tinyint unsigned choose time datetime not null 选课时间可由 now 函数自动生成 constraint choose student fk foreign key student no references student student no constraint choose course fk foreign key course no references course course no engine InnoDB default charset gbk 6 分析 choose 数据库的 5 张表的表结构 通过这 5 张表 可以解决 选课系统 问 题域中的哪些问题 答 请参看第一章课后习题的答案 7 您是如何理解索引的 索引越多越好吗 答 请参看 3 5 章节内容 请参看 3 5 1 章节内容 8 索引关键字的选取原则有哪些 答 请参看 3 5 2 章节内容 9 您所熟知的索引种类有哪些 什么是全文索引 答 请参看 3 5 4 章节内容 全文索引与全文检索 全文索引 当查询数据量大的字符串信息时 使用全文索引可以大幅提升字符串的检索效 率 需要注意的是 全文索引只能创建在 char varchar 或者 text 字符串类型的字段上 且 全文索引不支持前缀索引 全文检索是指以全部文本信息作为检索对象的一种信息检索技术 摘自 本书 5 10 章节中 也给出了全文检索的定义 简单地说 MySQL 中的全文检索使用 特定的分词技术 利用查询关键字和查询字段内容之间的相关度进行检索 通过全文索引 可以提高文本匹配的速度 10 索引与约束有什么关系 答 请参看 3 5 3 章节内容 第四章答案 1 NUL 与 NULL 有什么区别 答 请参看 4 4 章节内容 2 truncate 与 delete 有什么区别 答 请参看 4 3 2 章节内容 3 更新操作与字符集有什么关系 答 如果更新语句中包含中文简体字符 应该合理地设置字符集 否则 将把乱码数 据更新到数据库表中 详细请参看 4 1 2 章节内容 4 数据库表中自增型字段的值一定连续吗 答 请参看 4 1 3 章节内容 5 replace 语句与 insert 语句有什么区别 答 请参看 4 1 6 章节内容 6 执行了 delete 语句后 表结构被删除了吗 使用什么命令可以删除表结构 答 delete 语句删除的是表中的记录 无法删除表结构 删除表结构可以使用 drop table 命令 7 请读者向 选课系统 choose 数据库中的选课 choose 表插入表 4 8 所示的信息 并完成其他操作 表 4 8 向 choose 表添加的测试数据 choose no student no course no score choose time 1 2012001 2 40 服务器当前时间 2 2012001 1 50 服务器当前时间 3 2012002 3 60 服务器当前时间 4 2012002 2 70 服务器当前时间 5 2012003 1 80 服务器当前时间 6 2012004 2 90 服务器当前时间 7 2012005 3 NULL 服务器当前时间 8 2012005 1 NULL 服务器当前时间 1 学生张三 student no 2012001 已经选修了课程 java 程序设计 course no 1 在选修时间截止前 他想把该课程调换成 MySQL 数据库 course no 2 试用 SQL 语句 实现该功能 说明 题目中的张三 student no 2012005 应该修改为张三 student no 2012001 第一种方法 use choose update choose set course no 2 where course no 1 and student no 2012001 第二种方法 use choose delete from choose where course no 1 and student no 2012001 insert into choose values null 2012005 2 null now 2 学生田七 student no 5 已经选修了课程 c 语言程序设计 course no 3 由 于某种原因 在选修时间截止前 他不想选修该课程了 试用 SQL 语句实现该功能 说明 题目中的田七 student no 5 应该修改为田七 student no 2012005 use choose delete from choose where course no 3 and student no 2012005 3 课程结束后 请录入某个学生的最终成绩 最终成绩 原成绩 70 30 说明 题目修改为 课程结束后 请修改所有学生的最终成绩 最终成绩 原成绩 70 30 use choose update choose set score score 0 7 30 4 请解释学生的成绩为 NULL 值的含义 NULL 值等于零吗 答 成绩为 NULL 值 表示学生还没有考试该课程 成绩未知 成绩为零 表示学生 已经考试了该课程 成绩已知 第五章答案 1 简述 limit 以及 distinct 的用法 答 请参看 5 1 2 章节内容 2 什么是内连接 外连接 MySQL 支持哪些外连接 答 请参看 5 1 3 章节内容 3 NULL 参与算术运算 比较运算以及逻辑运算时 结果是什么 答 请参看 5 2 2 章节内容 4 NULL 参与排序时 MySQL 对 NULL 如何处理 答 请参看 5 3 章节内容 5 您怎样理解 select 语句与字符集之间的关系 答 请参看 5 2 3 章节内容 6 MySQL 常用的聚合函数有哪些 这些聚合函数对 NULL 值操作的结果是什么 答 请参看 5 4 章节内容 7 您怎样理解 having 子句与 where 子句之间的区别 答 请参看 5 5 2 章节内容 8 您怎样理解 concat 与 group concat 函数之间的区别 答 请参看 5 5 3 章节内容 9 什么是相关子查询与非相关子查询 答 如果子查询中仅仅使用了自己定义的数据源 不依靠主查询 能够独立运行的子 查询 这种查询是非相关子查询 非相关子查询是独立于外部查询的子查询 子查询总共 执行一次 执行完毕后将值传递给主查询 如果子查询中使用了主查询的数据源 这种查询是相关子查询 此时主查询的执行与 相关子查询的执行相互依赖 10 请编写 SQL 脚本 输入选课系统综合查询章节内的 select 语句 答 请参看 5 8 章节内容 11 MySQL 如何使用 like 关键字实现模糊查询 有什么注意事项 答 请参看 5 2 5 章节内容 12 MySQL 如何使用正则表达式实现模糊查询 答 请参看 5 9 章节内容 13 MySQL 如何进行全文检索 全文检索有什么注意事项 答 请参看 5 10 章节内容 14 您觉得全文检索与 like 模糊查询 正则表达式模糊查询最大的区别是什么 答 全文检索 是指全文检索解析器 分词技术 通过扫描文章中的每一个词 对每一个 词建立一个索引 指明该词在文章中出现的次数和位置 当用户进行 against 查询时 根据 事先建立的全文索引进行查找 并将查找的结果反馈给用户 以全文检索 我们 is 中国人而自豪 为例 全文检索解析器可将该中文信息切分成 我们 is 中国 国人 人而 而自 自豪 这里以两个字为单位进行分割为例 实际情 况更为复杂 并建立全文索引 当用户使用 contains 语句查询 自豪 为了区分 搜索关键词是蓝色字 关键词时 此时 自豪 蓝色字 去匹配全文索引中的 自豪 为了区分 索引关键词是红色字 并将匹配到的结果 我们 is 中国人而自豪 返回 而使用 like 或者正则表达式查询 自豪 关键词时 并没有将 我们 is 中国人而自豪 这句话分割 还是将整句话当作整体来看 然后通过字符串比较的方式 判断 自豪 字 符串是不是 我们 is 中国人而自豪 字符串的子字符串 如果是 说明成功匹配 然后将 匹配到的结果 我们 is 中国人而自豪 返回 因此 全文检索的核心是利用分词技术建立索引 继而利用索引加快字符串的匹配速 度 like 或者正则表达式的核心是搜索关键词 自豪 字符串是不是 我们 is 中国人而自 豪 字符串的子字符串 15 最新版本的 MySQL 中 InnoDB 存储引擎的表支持全文检索吗 答 支持 16 MySQL 不支持完全连接 您能不能通过其他技术手段实现完全连接的功能 答 将左连接和右连接通过 union 模拟实现完全连接 17 合并结果集时 union 与 union all 有什么区别 答 请参看 5 6 章节内容 18 给定一个教师的工号 例如 001 统计该教师已经申报了哪些课程 答 select course no course name up limit description teacher teacher no teacher name teacher contact av ailable status from course join teacher on course teacher no teacher teacher no where teacher teacher no 001 第六章答案 1 使用 select 语句输出各种数据类型的常量时 数据类型都是如何转换的 答 各种数据类型的常量会被自 动 转 换 为 字 符 串 再 进 行 显 示 2 系统会话变量与用户会话变量有什么区别与联系 答 请参看 6 1 2 章节内容 3 用户会话变量与局部变量有什么区别与联系 答 请参看 6 1 2 章节内容 4 为用户会话变量或者局部变量赋值时 有哪些注意事项 答 请参看 6 1 2 章节内容 5 编写 MySQL 存储程序时 为什么需要重置命令结束标记 答 请参看 6 1 5 章节内容 6 创建本书涉及到的所有自定义函数 并进行调用 答 请参看本章内容 7 总结哪些日期 时间函数的执行结果与时区的设置无关 答 请参看 6 3 6 章节内容 8 创建自定义函数有哪些注意事项 1 自定义函数的函数体使用 select 语句时 该 select 语句不能产生结果集 否 则将产生编译错误 2 自定义函数是数据库的对象 因此 创建自定义函数时 需要指定该自定义 函数隶属于哪个数据库 3 同一个数据库内 自定义函数名不能与已有的函数名 包括系统函数名 重 名 建议在自定义函数名中统一添加前缀 fn 或者后缀 fn 4 函数的参数无需使用 declare 命令定义 但它仍然是局部变量 且必须提供参 数的数据类型 自定义函数如果没有参数 则使用空参数 即可 5 函数创建成功后 记得将命令结束标记恢复 原状 6 函数必须指定返回值数据类型 且须与 return 语句中的返回值的数据类型相 近 长度可以不同 9 请分析下面的 getdate 函数完成的功能 创建该函数 并调用该函数 函数的功能 对日期时间进行格式化 10 通过本章知识的讲解 您是如何理解中文全文检索的 您觉得实现中文全文检索 的核心技术是什么 答 请参考第五章课后习题答案 第七章答案 1 视图与基表有什么区别和联系 视图与 select 语句有什么关系 答 视图与基表有什么区别和联系 数据库表称为基本表或者基表 视图称为虚表 基表的数据发生变化时 虚表的数据 也会随之变化 触发器基于表 严格地说是基于表的记录 这里的表是基表 不是临时表 temporary 类型的表 也不是视图 通过视图虽然可以更新基表的数据 但本书并不建议这样做 原因在于 通过视图更 新基表数据 并不会触发触发器的运行 视图与 select 语句有什么关系 视图中保存的就是一条 select 语句 对于经常使用的结构复杂的 select 语句 建议将 其封装为视图 2 什么是检查视图 什么是 local 检查视图与 cascaded 检查视图 答 创建视图时 没有使用 with check option 子句时 即 with check option 的值为 0 表示视图为普通视图 使用 with check option 子句或者 with cascaded check option 子句 时 表示该视图为 cascaded 检查视图 使用 with local check option 子句 表示该视图为 local 检查视图 检查视图 通过检查视图更新基表数据时 检查视图对更新语句进行了先行检查 只 有满足检查条件的更新语句才能成功执行 如果更新语句不满足检查视图定义的检查条件 则检查视图抛出异常 更新失败 local 检查视图与 cascaded 检查视图的区别联系 请参看 7 1 7 章节内容 3 请用触发器实现检查约束 一个学生某门课程的成绩 score 要求在 0 到 100 之间取 值 答 本题需要为 choose 表创建了一个 before insert 触发器和一个 before update 触发 器 由于本章 7 2 3 章节中 已经为 choose 表创建了一个 before insert 触发器和一个 before update 触发器 而同一个表不能创建两个相同触发时间 触发事件的触发程序 因此 为了实现本题功能 需要首先删除 7 2 3 章节中的两个触发器 drop trigger choose insert before trigger drop trigger choose delete before trigger 然后再为 choose 表创建一个 after insert 触发器和一个 after update 触发器 自动维 护课程 available 的字段值 delimiter create trigger choose insert after trigger after insert on choose for each row begin update course set available available 1 where course no new course no end delimiter delimiter create trigger choose delete after trigger after delete on choose for each row begin update course set available available 1 where course no old course no end delimiter 最后 再为 choose 表创建一个 before insert 触发器和一个 before update 触发器实现 检查约束 一个学生某门课程的成绩 score 要求在 0 到 100 之间取值 delimiter create trigger choose insert before trigger before insert on choose for each row begin if new score 0 else insert into mytable values 0 end if end delimiter 4 MySQL 触发器中的触发事件有几种 触发器的触发时间有几种 答 请参看 7 2 1 章节内容 5 创建触发器时 有哪些注意事项 答 本题修改为 使用触发器时 有哪些注意事项 请参看 7 2 7 章节内容 6 使用触发器可以实现哪些数据的自动维护 答 使用触发器可以实现检查约束 使用触发器可以自动维护冗余数据 例如课程 available 的字段值 使用触发器可以模拟外键级联选项 7 您是如何理解临时表的 临时表与基表有什么关系 答 请参看 7 3 1 章节内容 请参看 7 3 4 章节内容 8 您是如何理解视图 子查询 临时表 派生表之间的关系的 答 请参看 7 5 章节内容 第八章答案 1 编写 选课系统 的存储过程 并对其进行调用 测试 答 请参看本章代码 2 查看存储过程定义的方法有哪些 答 请参看 8 1 4 章节内容 3 请罗列存储过程与函数的区别与联系 答 请参看 8 1 6 章节内容 4 数据库开发人员定义错误处理机制时 需要提供错误处理类型 错误触发条件以及 错误处理程序等信息 错误处理类型有哪些 什么是错误触发条件以及错误处理程序 答 错误处理类型的取值要么是 continue 要么是 exit 当错误处理类型是 continue 时 表示错误发生后 MySQL 立即执行自定义错误处理程序 然后忽略该错误继续执行其他 MySQL 语句 当错误处理类型是 exit 时 表示错误发生后 MySQL 立即执行自定义错误 处理程序 然后立刻停止其他 MySQL 语句的执行 错误触发条件以及错误处理程序 请参看 8 2 1 章节内容 5 游标的使用步骤是什么 每一个步骤完成什么任务 答 请参看 8 3 1 章节内容 6 举例说明 如何遍历游标中的 结果集 答 请参看 8 3 2 章节内容 7 使 用 预 处 理 SQL 语 句 有 哪 些 注 意 事 项 预 处 理 SQL 语 句 与 静 态 SQL 语 句 有 什 么 区 别 和 联 系 答 注 意 事 项 请参看 8 4 1 章节内容 预 处 理 SQL 语 句 与 静 态 SQL 语 句 有 什 么 区 别 和 联 系 请参看 8 4 4 章节内容 第九章答案 1 请简单描述事务的必要性 答 请参看 9 1 1 章节内容 2 关闭 MySQL 自动提交的方法有哪些 您推荐数据库开发人员使用哪一种方法 答 请参看 9 1 2 章节内容 推荐数据库开发人员尽可能地使用 MySQL 命令 start transaction 隐式地关闭自动提交 使用 MySQL 命令 commit 显示地提交更新 语句 3 关 闭 MySQL 自 动 提 交 后 提 交 更 新 语 句 的 方 法 有 哪 些 您 推 荐 数 据 库 开 发 人 员 使 用 哪 一 种 方 法 答 请参看 9 1 4 章节内容 推荐数据库开发人员尽可能地使用 MySQL 命令 start transaction 隐式地关闭自动提交 使用 MySQL 命令 commit 显示地提交更新 语句 4 请简单描述典型的事务处理使用方法 答 请参看 9 1 5 章节内容 5 请简单描述典型的事务保存点使用方法 您是如何理解保存点是 临时状态 这句 话的 答 请参看 9 1 6 章节内容 6 请简单描述锁机制的必要性 答 请参看 9 2 1 章节内容 7 为 MyISAM 表施加表级锁的语法格式是什么 答 请参看 9 2 3 章节内容 8 为 MyISAM 表施加表级锁时 read local 与 read 选项有什么区别 答 请参看 9 2 3 章节内容 9 您是如何理解锁的粒度 隐式锁与显式锁 锁的类型 锁的钥匙以及锁的生命周期 等概念的 答 请参看 9 2 2 章节内容 10 您如何理解锁的粒度 锁的生命周期与数据库的并发性能之间的关系 答 锁的粒度越小 锁的生命周期越短 数据库的并发性能就越高 数据库越适合做 并发更新操作 反之亦然 11 您如何理解锁的粒度 锁的生命周期与服务器资源之间的关系 答 锁粒度越小 完成某个功能时所需要的加锁 解锁的次数就会越多 反而会消耗 较多的服务器资源 甚至会出现资源的恶性竞争 甚至发生死锁问题 锁是数据库管理系 统重要的数据库资源 需要耗费一定的服务器内存 锁的生命周期越长 该锁占用服务器 内存的时间间隔就越长 锁的生命周期越短 该锁占用服务器内存的时间间隔就越短 因 此为了节省服务器资源 数据库开发人员必须尽可能的缩短锁的生命周期 尽可能早地释 放锁资源 12 选课系统 应该使用哪种粒度的锁机制 为什么 答 对于 选课系统 而言 系统需要为上百名学生 甚至几百名学生同时提供选课 调课 退课服务 为了提高并发性能 选课系统 将选用行级锁 这也是 选课系统 的各个数据库表使用 InnoDB 存储引擎的原因 13 为 InnoDB 表施加行级锁的语法格式是什么 答 请参看 9 2 4 章节内容 14 请列举现实生活中的 资源竞争 问题 如何使用锁机制解决此类 资源竞争 问题 答 现实生活中 选课系统就存在 资源竞争 问题 解决方案请参看 9 2 5 章节内容 15 完成调课功能的 replace course proc 存储过程以及完成选课功能 choose proc 存 储过程使用了行级锁解决了 资源竞争 问题 能不能将存储过程中下面的 select 语句写 在 start transaction 语句之前 以便缩短行级锁的生命周期 select state into status from course where course no c no 说明 题目中的 select state into status from course where course no c no 应该修改为 select available into s3 from course where course no c no for update 答 select available into s3 from course where course no c no for update 必须放在 start transaction 语句之后 目的是 延长行级排他锁的生命周期 所以 需要将该 select 语句写在了 start transaction 语句后 封装到事务中 16 InnoDB 什么时候使用间隙锁 什么时候使用记录锁 间隙锁与记录锁之间的区别 是什么 答 当事务的隔离级别设置为 repeatable read 此时为 InnoDB 表施加行级锁 默认情况 下使用间隙锁 当事务的隔离级别设置为 read uncommitted 或者 read committed 此时为 InnoDB 表施加行级锁 默认情况下使用 记录锁 record lock 间隙锁 next key 锁 当检索条件为某个区间 例如 account no between 1 and 100 范围时 对该区间范围施加共享锁或排他锁后 满足该区间范围的记录 例如 account no 1 或者 account no 2 的记录 存在共享锁或排他锁 满足该区间范围 但表中 不存在的记录 例如 account no 50 或者 account no 100 的记录 也会存在共享锁或排他 锁 即行级锁会锁定相邻的键 next key locking 记录锁 与间隙锁不同 记录锁仅仅为满足该查询范围的记录施加共享锁或排他锁 17 锁等待与死锁之间是什么关系 答 请参看 9 2 9 章节内容 18 请解释事务的 ACID 特性 答 请参看 9 3 1 章节内容 19 MySQL 支持哪些事务隔离级别 默认的事务隔离级别是什么 答 请参看 9 3 2 章节内容 20 每一种事务隔离级别可能引发什么问题 答 脏读 不可重复读 幻读 死锁等问题 21 脏读现象 不可重复读现象以及幻读现象之间有什么区别 答 请参看 9 3 2 章节内容 22 您如何理解事务 锁机制 事务的隔离级别之间的关系 答 请参看 9 4 章节内容 第十章答案 1 选用 PHP 脚本语言开发网上选课系统的原因是什么 答 请参看 10 1 1 章节内容 2 请简单描述 PHP 脚本程序的工作流程 答 请参看 10 1 3 章节内容 3 什么是软件开发生命周期 对于一个真实的软件项目而言 您觉得编码阶段是软件 开发生命周期中最难
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!