MySQL数据库基础与实例教程练习题参考答案.docx
- 文档编号:14447376
- 上传时间:2023-06-23
- 格式:DOCX
- 页数:30
- 大小:51.47KB
MySQL数据库基础与实例教程练习题参考答案.docx
《MySQL数据库基础与实例教程练习题参考答案.docx》由会员分享,可在线阅读,更多相关《MySQL数据库基础与实例教程练习题参考答案.docx(30页珍藏版)》请在冰点文库上搜索。
MySQL数据库基础与实例教程练习题参考答案
数据库基础与实例教程练习题参考答案
由于时间仓促,答案中难免存在错误,不妥之处恳请读者批评指正!
第一章答案
1.数据库管理系统中常用的数学模型有哪些?
数据库管理系统通常会选择某种“数学模型”存储、组织、管理数据库中的数据,常用的数学模型包括“层次模型”、“网状模型”、“关系模型”以及“面向对象模型”等。
2.您听说过的关系数据库管理系统有哪些?
数据库容器中通常包含哪些数据库对象?
目前成熟的关系数据库管理系统主要源自欧美数据库厂商,典型的有美国微软公司的、美国公司的2和、德国公司的、美国甲骨文公司的。
数据库容器中通常包含表、索引、视图、存储过程、触发器、函数等数据库对象。
3.通过本章知识的讲解,与程序设计语言有什么关系?
并不是一种功能完善的程序设计语言,例如,不能使用构建人性化的图形用户界面(,),程序员需要借助、等面向对象程序设计语言或者的表单构建图形用户界面()。
如果选用表单构建,程序员还需要使用、或者编写应用程序,处理表单中的数据以及数据库中的数据。
其他答案:
1、首先语言是数据库结构化查询语言,是非过程化编程语言。
而程序设计语言则有更多的面向对象及逻辑程序设计。
比如用语言编写图形用户界面(例如窗口、进度条),是无法实现的。
2、语言可以说是,程序设计语言和数据库之间的一个翻译官。
程序设计语言需要操作数据库时,需要借助(或者说调用)语言来翻译给数据库管理系统。
3、不同数据库管理系统会有一些特殊的规范,比如关键词在中无法使用。
而这些规范与程序设计语言无关。
4.通过本章的学习,您了解的有哪些特点?
与题目2中列举的商业化数据库管理系统相比,具有开源、免费、体积小、便于安装,但功能强大等特点。
5.通过本章的学习,您觉得数据库表与电子表格(例如)有哪些区别?
限于本章的知识点:
外观上,关系数据库中的一个数据库表和一个不存在“合并单元格”的电子表格(例如)相同。
与电子表格不同的是:
同一个数据库表的字段名不能重复。
为了优化存储空间以及便于数据排序,数据库表的每一列必须指定某种数据类型。
关系数据库中的表是由列和行构成的,和电子表格不同的是,数据库表要求表中的每一行记录都必须是唯一的,即在同一张数据库表中不允许出现完全相同的两条记录。
6.您所熟知的数据库设计辅助工具有哪些?
您所熟知的模型、工具、技术有哪些?
数据库设计辅助工有数据模型、数据建模工具、关系数据库设计技术。
其中常用的数据模型有模型和类图;常用的数据建模工具如、、等;常用的关系数据库设计技术如数据库规范化技术。
1.模型
数据模型有图或者类图等数据模型。
业务模型有程序流程图、数据流程图、时序图、状态图等业务模型。
2.工具
软件项目管理工具如美国微软公司的,数据建模工具如、、,业务建模工具如、以及等。
工具有6.0、、以及等。
测试工具有单元测试工具、功能测试工具以及性能测试工具等。
3.技术
软件开发时常用的技术包括:
面向对象分析和设计技术、结构化分析和设计技术、软件测试技术和关系数据库设计技术等。
7.请您罗列出“选课系统”需要实现哪些功能,使用数据库技术能够解决“选课系统”中的哪些商业问题?
“选课系统”中存在的商业问题(等于“选课系统”需要实现的功能):
如何存储以及维护课程、学生、教师以及班级的详细信息?
不同教师申报的课程名能否相同?
如果允许课程名相同,如何区分课程?
如何控制每位教师只能申报一门选修课程?
如何控制每门课程的人数上限在(60、150、230)中取值?
如何控制每一门课程的选课学生总人数不超过该课程的人数上限?
如何实现学生选课功能、退选功能以及调课功能?
如何控制每位学生最多可以选修两门课程,且两门课程不能相同?
系统如何自动记录学生的选课时间?
如何统计每一门课程还可以供多少学生选修?
如何统计人数已经报满的课程?
如何统计某一个教师已经申报了哪些课程?
如何统计某一个学生已经选修了多少门课程,是哪些课程?
如何统计选修人数少于30人的所有课程信息?
如何统计选修每一门课程的所有学生信息?
课程信息删除后,如何保证选择该课程的学生可以选修其他课程?
如何通过搜索关键字检索自己感兴趣的课程信息?
8.您所熟知的编码规范有哪些?
1.命名规范
2.注释
3.书写规范(缩进规范)
9.您是如何理解“图中实体间的关系是双向的”?
能不能举个例子?
请参看1.3.1章节的内容。
10.图中,什么是基数?
什么是元?
什么是关联?
请参看1.3.2章节的内容。
11.图的设计原则是什么?
您是怎么理解图的设计原则的?
请参看1.3.3章节数据库开发人员通常采用“一事一地”的原则的内容。
12.关系数据库的设计步骤是什么?
为每张表定义一个主键有技巧可循吗?
主键与关键字有什么关系?
关系数据库的设计步骤,请参看1.4章节的内容。
为每张表定义一个主键技巧,请参看1.4.2章节的内容。
主键与关键字有什么关系,请参看1.4.2章节的内容。
12.在关系数据库设计过程中,如何表示图中的1:
1、1、关系?
请参看1.4.3以及1.4.4章节的内容。
13.在数据库管理系统中,您所熟知的数据类型有哪些?
每一种数据类型能不能各列举一些例子?
请参看1.4.5章节的内容。
14.您所熟知的约束条件有哪些?
支持哪些约束条件?
请参看1.4.6章节的内容。
支持主键()约束、外键()约束、唯一性()约束、默认值()约束、非空()约束。
15.数据库中数据冗余的“并发症”有哪些,能不能列举一些例子?
数据冗余“并发症”插入有异常、删除异常、修改复杂。
例子参看1.4.8章节的内容。
16.如何避免数据冗余?
什么是1、2、3?
使用规范化减少数据冗余请参看1.4.8章节的内容。
17.根据本章的场景描述——“很多团购网站在网上对房源进行出租”的图,请设计该场景描述的数据库表。
团购网站(网站,网址)
房源(房间号,房型)
顾客(顾客号)
出租(出租,网站,房间号,顾客号)
19.如果将学生表设计为如下表结构:
()
请用数据库规范化的知识解释该表是否满足3范式的要求?
该表是否存在数据冗余?
是否会产生诸如插入异常、删除异常、修改复杂等数据冗余“并发症”?
此题题目中的学生表存在问题。
建议将学生表修改为如下结构。
学号
姓名
性别
课程号
课程名
成绩
课程号
课程名
成绩
居住地
邮编
请参看1.4.8章节的内容。
20.在“选课系统”中,学生选课时,由于每一门课程受到教室座位数的限制,每一门课程设置了人数上限,如何确保每一门课程选报学生的人数不超过人数上限?
有几种设计方案?
这些设计方案的区别在哪里?
请参看1.4.9章节的内容。
21.“选课系统”有几张表,每个表有哪些字段?
()
(,)
(,)
(,,)
((11))
22.依据自己所掌握的知识,描述如何使用数据库技术解决“选课系统”问题域中的问题。
如何存储以及维护课程、学生、教师以及班级的详细信息?
答:
、、、表可以用于存储以及维护课程、学生、教师以及班级的详细信息。
不同教师申报的课程名能否相同?
如果允许课程名相同,如何区分课程?
答:
如果需求要求:
不同教师申报的课程名不能相同,则可以通过将表的字段设置为约束即可。
如果需求要求:
不同教师申报的课程名可以相同,此时可以通过给表添加(无任何逻辑意义)主键字段,标记不同教师申报的课程。
如何控制每位教师只能申报一门选修课程?
请参看1.4.3章节的“情形二”内容。
如何控制每门课程的人数上限在(60、150、230)中取值?
答:
目前不正常约束。
但该问题可以借助触发器解决,该题超出本章知识点内容,请参看触发器章节内容。
如何控制每一门课程的选课学生总人数不超过该课程的人数上限?
请参看1.4.9章节的内容。
如何实现学生选课功能、退选功能以及调课功能?
答:
该问题可以借助存储过程、事务解决,该题超出本章知识点内容,请参看存储过程章节以及事务章节的内容。
如何控制每位学生最多可以选修两门课程,且两门课程不能相同?
答:
该问题可以借助存储过程解决,该题超出本章知识点内容,请参看存储过程章节内容。
系统如何自动记录学生的选课时间?
答:
借助的()函数。
如何统计每一门课程还可以供多少学生选修?
如何统计人数已经报满的课程?
如何统计某一个教师已经申报了哪些课程?
如何统计某一个学生已经选修了多少门课程,是哪些课程?
如何统计选修人数少于30人的所有课程信息?
如何统计选修每一门课程的所有学生信息?
答:
上述统计信息超出本章知识点内容,请参看表记录的检索章节内容。
课程信息删除后,如何保证选择该课程的学生可以选修其他课程?
答:
可以通过外键约束级联删除实现,也可以通过触发器实现。
如何通过搜索关键字检索自己感兴趣的课程信息?
答:
通过全文检索或者模糊查询关键字实现。
第二章答案
1.通过本章的学习,您了解的有哪些特点?
答:
请参看2.1.1章节内容。
2.请您简单描述的使用流程。
什么是客户机?
登录主机与客户机有什么关系?
什么是会话?
答:
请参看2.1.1章节内容。
客户机:
与服务器通话的客户端不止一种,比如操作系统下的命令行,可以直接通过命令建立与数据库的通话,另外还有、等图形化界面连接方式等。
本书经常使用的客户机程序存放在C:
\\\5.6\目录。
在一台登录主机上可以开启多个客户机。
数据库用户访问服务器的数据时,首先需要选择一台登录主机,然后在该登录主机上开启客户机,输入正确的账户名、密码,建立一条客户机与服务器之间的“通信链路”。
通信链路断开之前,客户机可以向服务器发送多次“请求”,服务器会对每一次请求做出“响应”,请求/响应期间称为会话。
3.通过或者搜索引擎,搜索常用的客户端工具(或者客户机程序)有哪些。
答案参见知乎,网址:
4.服务、服务实例、服务器分别是什么?
什么是端口号?
端口号有什么作用?
答:
请参看2.1.1章节内容。
5.请列举配置文件中常用的参数选项组以及参数信息。
答:
请参看2.1.5章节内容。
6.启动服务的方法有哪些?
停止服务的方法有哪些?
答:
请参看2.1.4章节内容。
7.客户机连接服务器的方法有哪些?
连接服务器时,需提供哪些信息?
答:
请参看2.1.7章节内容。
8.字符、字符集、字符序分别是什么?
字符序的命名规则是什么?
答:
请参看2.2.1章节内容。
9.您所熟知的字符集、字符序有哪些?
它们之间有什么区别?
答:
请参看2.2.2章节内容。
10.请简述字符集的转换过程。
答:
请参看2.2.3章节内容。
11.系统数据库有哪些?
这些系统数据库有什么作用?
答:
请参看2.2.1章节内容。
12.如果仅仅需要在数据库中存储中文简体字符,那么如何设置字符集?
答:
请参看2.2.4章节内容。
13.请自己编写一段脚本文件,并运行该脚本文件中的代码。
答:
请参看2.2.5章节内容。
14.您所熟知的存储引擎有哪些?
存储引擎与存储引擎相比,您更喜欢哪一个?
它们都有什么特点?
答:
请参看2.4.1章节内容。
15.创建数据库,并在该数据库中创建表,用于保存您的个人信息(如姓名、性别、身份证号、出生日期等),并完成下列操作或问题。
1)上述的表有没有出现数据冗余现象?
(提示:
出生日期可以由身份证号推算得出)
答:
出生日期可由身份证号计算得出,所以上述的表存在数据冗余现象。
2)数据库目录存放在数据库根目录中,默认情况下,根目录是什么?
答:
使用命令“'';”可以查看参数的值。
默认安装后,数据库根目录的值为“5.6”。
3)如何查看数据库的结构。
答:
请参看2.3.3章节内容。
4)如何查看表的结构,并查看该表的默认字符集、字符序、存储引擎等信息。
答:
请参看2.4.4章节内容。
5)数据库目录中存放了哪些文件?
数据库根目录中存放了哪些文件?
答:
请参看2.4.1章节内容。
数据库目录中存放了如下文件:
(1)数据库文件(如)
(2)表名、后缀名为的表结构定义文件
(3)如果数据库中存在存储引擎的独享表空间的表,则数据库目录中还会存放一个名为“表名”的数据文件。
(4)如果数据库中存在存储引擎的表,则数据库目录中会存在一个文件名为表名、后缀名为(即的简写)的数据文件以及文件名为表名、后缀名为(即的简写)的索引文件。
数据库根目录中存放如下文件以及目录(如下图所示):
数据库目录(例如数据库目录、数据库目录)
0及1是重做日志文件
共享表空间文件1文件
.000001等一系列二进制日志文件(该知识点超出本章范围)
二进制日志索引文件(该知识点超出本章范围)
进程号文件
文件:
:
服务器身份。
在第一次启动时,会自动生成一个并写入到数据库根目录下文件里,官方不建议修改。
6)将个人信息插入到表中,并查询表的所有记录。
;
;
(
(10),
(3),
(18)
);
('张三','男','410******001');
*;
7)在上一步骤的查询结果中是否出现了乱码?
如果出现了乱码,如何避免乱码问题的发生?
如果没有出现乱码,经过哪些设置可以产生乱码?
如果出现了乱码,重新删除数据库,重新设置字符集,再创建数据库和数据库表(要求在同一个会话中依次执行下列代码):
;
=;
=;
=;
=;
=;
;
;
(
(10),
(3),
(18)
);
('张三','男','410******001');
*;
如果没有出现乱码,经过哪些设置可以产生乱码:
1;
*;
8)您的个人信息存放到了哪个文件中?
情形一:
如果表是存储引擎的表,则则张三的数据存放在一个文件名为、后缀名为(即的简写)的数据文件。
情形二:
如果表是存储引擎的共享表空间的表,则张三的数据存放在共享表空间文件1数据文件。
情形三:
如果表是存储引擎的独享表空间的表,则张三的数据存放在“”的数据文件。
9)如何修改表的存储引擎?
修改表的存储引擎后,您的个人信息存放到了哪个文件中?
答案:
参考上一题。
10)删除表以及数据库。
;
;
;
16.您所熟知的系统变量有哪些?
如何设置系统变量的值?
答:
请参看2.5.2章节内容。
请参看2.5.3章节内容。
17.如何进行数据库备份和恢复?
备份期间,有哪些注意事项?
答:
请参看2.6章节内容。
第三章答案
1.数据库类型有哪些?
如何选择合适的数据类型?
答:
请参看3.1章节内容。
请参看3.1.7章节内容。
2.简单总结(n)数据类型与(n)数据类型有哪些区别。
答:
请参看3.1.3章节内容。
3.与数据类型有什么区别?
答:
请参看3.1.4章节内容。
4.模式与复合数据类型有什么关系?
答:
请参看3.1.5章节内容。
5.创建脚本文件,书写代码,运行,创建数据库的5张表。
=;
=;
=;
=;
=;
;
;
(
(10),
(10),#教师姓名不允许为空
(20)#教师联系方式名不允许为空
);
(
(20),#班级名不允许为空、且不允许重复
(20)#院系名不允许为空
);
(
(10),#课程名允许重复
60,#课程上限设置默认值为60
#课程的描述信息为文本字符串,且不能为空
(6)'未审核',#课程状态的默认值为“未审核”
(10),#唯一性约束实现教师与课程之间1:
1关系
()()
);
(
(11),#学号不允许重复
(10),#学生姓名不允许为空
(20),#学生联系方式不允许为空
#学生的班级允许为空
()()
);
(
(11),#学生学号不允许为空
#课程号不允许为空
#选课时间可由()函数自动生成
()(),
()()
);
6.分析数据库的5张表的表结构,通过这5张表,可以解决“选课系统”问题域中的哪些问题?
答:
请参看第一章课后习题的答案。
7.您是如何理解索引的?
索引越多越好吗?
答:
请参看3.5章节内容。
请参看3.5.1章节内容。
8.索引关键字的选取原则有哪些?
答:
请参看3.5.2章节内容。
9.您所熟知的索引种类有哪些?
什么是全文索引?
答:
请参看3.5.4章节内容。
全文索引与全文检索
全文索引:
当查询数据量大的字符串信息时,使用全文索引可以大幅提升字符串的检索效率。
需要注意的是,全文索引只能创建在、或者字符串类型的字段上,且全文索引不支持前缀索引。
全文检索是指以全部文本信息作为检索对象的一种信息检索技术。
摘自全文检索
本书5.10章节中,也给出了全文检索的定义:
简单地说,中的全文检索使用特定的分词技术,利用查询关键字和查询字段内容之间的相关度进行检索。
通过全文索引可以提高文本匹配的速度。
10.索引与约束有什么关系?
答:
请参看3.5.3章节内容。
第四章答案
1.与有什么区别?
答:
请参看4.4章节内容。
2.与有什么区别?
答:
请参看4.3.2章节内容。
3.更新操作与字符集有什么关系?
答:
如果更新语句中包含中文简体字符,应该合理地设置字符集,否则,将把乱码数据更新到数据库表中。
详细请参看4.1.2章节内容。
4.数据库表中自增型字段的值一定连续吗?
答:
请参看4.1.3章节内容。
5.语句与语句有什么区别?
答:
请参看4.1.6章节内容。
6.执行了语句后,表结构被删除了吗?
使用什么命令可以删除表结构?
答:
语句删除的是表中的记录,无法删除表结构;删除表结构可以使用命令。
7.请读者向“选课系统”数据库中的选课表插入表4-8所示的信息,并完成其他操作。
表4-8向表添加的测试数据
1
2
40
服务器当前时间
2
1
50
服务器当前时间
3
3
60
服务器当前时间
4
2
70
服务器当前时间
5
1
80
服务器当前时间
6
2
90
服务器当前时间
7
3
服务器当前时间
8
1
服务器当前时间
(1)学生张三(2012001)已经选修了课程程序设计
(1),在选修时间截止前,他想把该课程调换成数据库
(2),试用语句实现该功能。
说明:
题目中的张三(2012005)应该修改为张三(2012001)
第一种方法:
;
21'2012001';
第二种方法:
;
1'2012001';
(,'2012005',2());
(2)学生田七(5)已经选修了课程c语言程序设计(3),由于某种原因,在选修时间截止前,他不想选修该课程了,试用语句实现该功能。
说明:
题目中的田七(5)应该修改为田七(2012005)
;
3'2012005';
(3)课程结束后,请录入某个学生的最终成绩,最终成绩=(原成绩*70%)+30。
说明:
题目修改为:
课程结束后,请修改所有学生的最终成绩,最终成绩=(原成绩*70%)+30
;
*0.7+30;
(4)请解释学生的成绩为值的含义,值等于零吗?
答:
成绩为值,表示学生还没有考试该课程,成绩未知。
成绩为零,表示学生已经考试了该课程,成绩已知。
第五章答案
1.简述以及的用法。
答:
请参看5.1.2章节内容。
2.什么是内连接、外连接?
支持哪些外连接?
答:
请参看5.1.3章节内容。
3.参与算术运算、比较运算以及逻辑运算时,结果是什么?
答:
请参看5.2.2章节内容。
4.参与排序时,对如何处理?
答:
请参看5.3章节内容。
5.您怎样理解语句与字符集之间的关系?
答:
请参看5.2.3章节内容。
6.常用的聚合函数有哪些?
这些聚合函数对值操作的结果是什么?
答:
请参看5.4章节内容。
7.您怎样理解子句与子句之间的区别?
答:
请参看5.5.2章节内容。
8.您怎样理解()与()函数之间的区别?
答:
请参看5.5.3章节内容。
9.什么是相关子查询与非相关子查询?
答:
如果子查询中仅仅使用了自己定义的数据源,不依靠主查询,能够独立运行的子查询,这种查询是非相关子查询。
非相关子查询是独立于外部查询的子查询,子查询总共执行一次,执行完毕后将值传递给主查询。
如果子查询中使用了主查询的数据源,这种查询是相关子查询,此时主查询的执行与相关子查询的执行相互依赖。
10.请编写脚本,输入选课系统综合查询章节内的语句。
答:
请参看5.8章节内容。
11.如何使用关键字实现模糊查询?
有什么注意事项?
答:
请参看5.2.5章节内容。
12.如何使用正则表达式实现模糊查询?
答:
请参看5.9章节内容。
13.如何进行全文检索?
全文检索有什么注意事项?
答:
请参看5.10章节内容。
14.您觉得全文检索与模糊查询、正则表达式模糊查询最大的区别是什么?
答:
全文检索:
是指全文检索解析器(分词技术)通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户进行查询时,根据事先建立的全文索引进行查找,并将查找的结果反馈给用户。
以全文检索“我们中国人而自豪”为例。
全文检索解析器可将该中文信息切分成:
我们、、中国、国人、人而、而自、自豪(这里以两个字为单位进行分割为例,实际情况更为复杂),并建立全文索引。
当用户使用语句查询“自豪”(为了区分,搜索关键词是蓝色字)关键词时,此时“自豪”(蓝色字)去匹配全文索引中的“自豪”(为了区分,索引关键词是红色字),并将匹配到的结果“我们中国人而自豪”返回!
而使用或者正则表达式查询“自豪”关键词时,并没有将“我们中国人而自豪”这句话分割,还是将整句话当作整体来看,然后通过字符串比较的方式,判断“自豪”字符串是不是“我们中国人而自豪”字符串的子字符串。
如果是,说明成功匹配,然后将匹配到的结果“我们中国人而自豪”返回!
因此:
全文检索的核心是利用分词技术建立索引,继而利用索引加快字符串的匹配速度。
或者正则表达式的核心是搜索关键词“自豪”字符串是不是“我们中国人而自豪”字符串的子字符串。
15.最新版本的中,存储引擎的表支持全文检索吗?
答:
支持
16.不支持完全连接,您能不能通过其他技术手段实现完全连接的功能?
答:
将左连接和右连接通过模拟实现完全连接。
17.合并结果集时,与有什么区别?
答:
请参看5.6章节内容。
18.给定一个教师的工号(例如'001'),统计该教师已经申报了哪些课程。
答:
='001';
第六章答案
1.使用语句输出各种数据类型的常量时,数据类型都是如何转换的?
答:
各种数据类型的常量会被自动转换为“字符串”再进行显示。
2.系统会话变量与用户会话变量有什么区别与联系?
答:
请参看6.1.2章节内容。
3.用户会话变量与局部变量有什么区别与联系?
答:
请参看6.1.2章节内容。
4.为用户会话变量或者局部变量赋值时,有哪些注意事项
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MySQL 数据库 基础 实例教程 练习题 参考答案