MySQL数据库基础与~实例教程作业题参考内容答案.doc

上传人:一*** 文档编号:556744 上传时间:2018-10-26 格式:DOC 页数:23 大小:205.16KB
返回 下载 相关 举报
MySQL数据库基础与~实例教程作业题参考内容答案.doc_第1页
第1页 / 共23页
MySQL数据库基础与~实例教程作业题参考内容答案.doc_第2页
第2页 / 共23页
点击查看更多>>
资源描述

《MySQL数据库基础与~实例教程作业题参考内容答案.doc》由会员分享,可在线阅读,更多相关《MySQL数据库基础与~实例教程作业题参考内容答案.doc(23页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、MySQL 数据库基础与实例教程练习题参考答案由于时间仓促,答案中难免存在错误,不妥之处恳请读者批评指正!第一章答案1数据库管理系统中常用的数学模型有哪些?数据库管理系统通常会选择某种“数学模型”存储、组织、管理数据库中的数据,常用的数学模型包括“层次模型”、“网状模型”、“关系模型”以及“面向对象模型”等。2您听说过的关系数据库管理系统有哪些?数据库容器中通常包含哪些数据库对象?目前成熟的关系数据库管理系统主要源自欧美数据库厂商,典型的有美国微软公司的SQL Server、美国 IBM 公司的 DB2 和 Informix、德国 SAP 公司的 Sybase、美国甲骨文公司的 Oracle。

2、数据库容器中通常包含表、索引、视图、存储过程、触发器、函数等数据库对象。3通过本章知识的讲解,SQL 与程序设计语言有什么关系?SQL 并不是一种功能完善的程序设计语言,例如,不能使用 SQL 构建人性化的图形用户界面(Graphical User Interface,GUI),程序员需要借助 Java、VC+等面向对象程序设计语言或者 HTML 的 FORM 表单构建图形用户界面(GUI )。如果选用 FORM 表单构建GUI,程序员还需要使用 JSP、PHP 或者.NET 编写 Web 应用程序,处理 FORM 表单中的数据以及数据库中的数据。其他答案:1、首先 SQL 语言是数据库结构化

3、查询语言,是非过程化编程语言。而程序设计语言则有更多的面向对象及逻辑程序设计。比如用 SQL 语言编写图形用户界面(例如窗口、进度条),是无法实现的。2、SQL 语言可以说是,程序设计语言和数据库之间的一个翻译官。程序设计语言需要操作数据库时,需要借助(或者说调用)SQL 语言来翻译给数据库管理系统。3、不同数据库管理系统会有一些特殊的 SQL 规范,比如 limit 关键词在 SQL Server 中无法使用。而这些规范与程序设计语言无关。4通过本章的学习,您了解的 MySQL 有哪些特点?与题目 2 中列举的商业化数据库管理系统相比,MySQL 具有开源、免费、体积小、便于安装,但功能强大

4、等特点。5通过本章的学习,您觉得数据库表与电子表格(例如 Excel)有哪些区别?限于本章的知识点:外观上,关系数据库中的一个数据库表和一个不存在“合并单元格”的电子表格(例如 Excel)相同。与电子表格不同的是:同一个数据库表的字段名不能重复。为了优化存储空间以及便于数据排序,数据库表的每一列必须指定某种数据类型。关系数据库中的表是由列和行构成的,和电子表格不同的是,数据库表要求表中的每一行记录都必须是唯一的,即在同一张数据库表中不允许出现完全相同的两条记录。6您所熟知的数据库设计辅助工具有哪些?您所熟知的模型、工具、技术有哪些?数据库设计辅助工有数据模型、数据建模工具、关系数据库设计技术

5、。其中常用的数据模型有 ER 模型和类图;常用的数据建模工具如 ERwin、PowerDesigner 、Visio 等;常用的关系数据库设计技术如数据库规范化技术。1模型数 据 模 型 有 E-R 图 或 者 类 图 等 数 据 模 型 。 业 务 模 型 有 程 序 流 程 图 、 数 据 流 程 图 DFD、时 序 图 、 状 态 图 等 业 务 模 型 。2工具软件项目管理工具如美国微软公司的 Project,数据建模工具如ERwin、PowerDesigner、Visio,业务建模工具如 PowerDesigner、Rational Rose 以及 Visio等。IDE 工具有 VC

6、+6.0、Visual Studio、Eclipse 以及 NetBeans 等。测试工具有 Junit 单元测试工具、QuickTest Professional 功能测试工具以及 LoadRunner 性能测试工具等。3技术软件开发时常用的技术包括:面向对象分析和设计技术、结构化分析和设计技术、软件测试技术和关系数据库设计技术等。7请您罗列出“选课系统”需要实现哪些功能,使用数据库技术能够解决“选课系统”中的哪些商业问题?“选课系统”中存在的商业问题(等于“选课系统”需要实现的功能):如何存储以及维护课程、学生、教师以及班级的详细信息? 不同教师申报的课程名能否相同?如果允许课程名相同,如

7、何区分课程? 如何控制每位教师只能申报一门选修课程? 如何控制每门课程的人数上限在(60、150、230)中取值? 如何控制每一门课程的选课学生总人数不超过该课程的人数上限? 如何实现学生选课功能、退选功能以及调课功能? 如何控制每位学生最多可以选修两门课程,且两门课程不能相同? 系统如何自动记录学生的选课时间? 如何统计每一门课程还可以供多少学生选修? 如何统计人数已经报满的课程? 如何统计某一个教师已经申报了哪些课程? 如何统计某一个学生已经选修了多少门课程,是哪些课程? 如何统计选修人数少于 30 人的所有课程信息? 如何统计选修每一门课程的所有学生信息? 课程信息删除后,如何保证选择该

8、课程的学生可以选修其他课程? 如何通过搜索关键字检索自己感兴趣的课程信息?8您所熟知的编码规范有哪些?1命名规范2注释3书写规范(缩进规范)9您是如何理解“E-R 图中实体间的关系是双向的”?能不能举个例子?请参看 1.3.1 章节的内容。10E-R 图中,什么是基数?什么是元?什么是关联?请参看 1.3.2 章节的内容。11E-R 图的设计原则是什么?您是怎么理解 E-R 图的设计原则的?请参看 1.3.3 章节数 据 库 开 发 人 员 通 常 采 用 “一 事 一 地 ”的 原 则 的内容。12关系数据库的设计步骤是什么?为每张表定义一个主键有技巧可循吗?主键与关键字有什么关系?关系数据

9、库的设计步骤,请参看 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 支持主键(

10、primary key)约束、外键(foreign key)约束、唯一性()约束、默认值(default )约束、非空()约束。15数据库中数据冗余的“并发症”有哪些,能不能列举一些例子?数据冗余“并发症”插入有异常、删除异常、修改复杂。例子参看 1.4.8 章节的内容。16如何避免数据冗余?什么是 1NF、2NF、3NF ?使用规范化减少数据冗余请参看 1.4.8 章节的内容。17根据本章的场景描述“很多团购网站在网上对房源进行出租”的 E-R 图,请设计该场景描述的数据库表。团购网站(网站 ID,网址)房源(房间号,房型)顾客(顾客号)出租(出租 ID,网站 ID,房间号,顾客号)19如果

11、将学生 student 表设计为如下表结构:(student_no,student_no,student_name,student_contact,class_no,department_name)请用数据库规范化的知识解释该表是否满足 3NF 范式的要求?该表是否存在数据冗余?是否会产生诸如插入异常、删除异常、修改复杂等数据冗余“并发症”?此题题目中的学生 student 表存在问题。建议将学生 student 表修改为如下结构。学号 姓名 性别 课程号 课程名 成绩 课程号 课程名 成绩 居住地 邮编请参看 1.4.8 章节的内容。20在“选课系统”中,学生选课时,由于每一门课程受到教室座

12、位数的限制,每一门课程设置了人数上限,如何确保每一门课程选报学生的人数不超过人数上限?有几种设计方案?这些设计方案的区别在哪里?请参看 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,

13、student_contact,class_no)choose(choose_no,student_no char(11),course_no,score,choose_time)22依据自己所掌握的知识,描述如何使用数据库技术解决“选课系统”问题域中的问题。如何存储以及维护课程、学生、教师以及班级的详细信息?答:course、student、teacher 、classes 表可以用于存储以及维护课程、学生、教师以及班级的详细信息。 不同教师申报的课程名能否相同?如果允许课程名相同,如何区分课程?答:如果需求要求:不同教师申报的课程名不能相同,则可以通过将 course 表的course_n

14、ame 字段设置为 unique 约束即可。如果需求要求:不同教师申报的课程名可以相同,此时可以通过给 course 表添加course_id(无任何逻辑意义)主键字段,标记不同教师申报的课程。 如何控制每位教师只能申报一门选修课程?请参看 1.4.3 章节的“情形二”内容。 如何控制每门课程的人数上限在(60、150、230)中取值?答:MySQL 目前不正常 check 约束。但该问题可以借助 MySQL 触发器解决,该题超出本章知识点内容,请参看触发器章节内容。 如何控制每一门课程的选课学生总人数不超过该课程的人数上限?请参看 1.4.9 章节的内容。 如何实现学生选课功能、退选功能以及

15、调课功能?答:该问题可以借助 MySQL 存储过程、事务解决,该题超出本章知识点内容,请参看存储过程章节以及事务章节的内容。 如何控制每位学生最多可以选修两门课程,且两门课程不能相同?答:该问题可以借助 MySQL 存储过程解决,该题超出本章知识点内容,请参看存储过程章节内容。 系统如何自动记录学生的选课时间?答:借助 MySQL 的 now()函数。 如何统计每一门课程还可以供多少学生选修? 如何统计人数已经报满的课程? 如何统计某一个教师已经申报了哪些课程? 如何统计某一个学生已经选修了多少门课程,是哪些课程? 如何统计选修人数少于 30 人的所有课程信息? 如何统计选修每一门课程的所有学

16、生信息?答:上述统计信息超出本章知识点内容,请参看表记录的检索章节内容。 课程信息删除后,如何保证选择该课程的学生可以选修其他课程?答:可以通过外键约束级联删除实现,也可以通过触发器实现。 如何通过搜索关键字检索自己感兴趣的课程信息?答:通过全文检索或者模糊查询 like 关键字实现。第二章答案1通过本章的学习,您了解的 MySQL 有哪些特点?答:请参看 2.1.1 章节内容。2请您简单描述 MySQL 的使用流程。什么是 MySQL 客户机?登录主机与 MySQL客户机有什么关系?什么是 MySQL 会话?答:请参看 2.1.1 章节内容。MySQL 客户机:与 MySQL 服务器通话的客

17、户端不止一种,比如 Windows 操作系统下的命令行,可以直接通过命令建立与 mysql 数据库的通话,另外还有phpmyadmin、 MySQL 等图形化界面连接方式等。本书经常使用的 MySQL 客户机程序mysql.exe 存放在 C:Program FilesMySQLMySQL Server 5.6bin 目录。在一台登录主机上可以开启多个 MySQL 客户机。数据库用户访问 MySQL 服务器的数据时,首先需要选择一台登录主机,然后在该登录主机上开启 MySQL 客户机,输入正确的账户名、密码,建立一条 MySQL 客户机与MySQL 服务器之间的“通信链路”。通信 链 路 断

18、开 之 前 , MySQL 客 户 机 可 以 向 MySQL 服务 器 发 送 多 次 “请 求 ”, MySQL 服 务 器 会 对 每 一 次 请 求 做 出 “响 应 ”, 请 求 /响 应 期 间 称 为MySQL 会 话 。3通过 Google 或者 Baidu 搜 索 引 擎 , 搜 索 常 用 的 MySQL 客 户 端 工 具 ( 或 者 客 户 机 程序 ) 有 哪 些 。答 案 参 见 知 乎 , 网 址 : https:/ 服务、MySQL 服务实例、MySQL 服务器分别是什么?什么是端口号?端口号有什么作用?答:请参看 2.1.1 章节内容。5请列举 my.ini

19、配置文件中常用的参数选项组以及参数信息。答:请参看 2.1.5 章节内容。6启动 MySQL 服务的方法有哪些?停止 MySQL 服务的方法有哪些?答:请参看 2.1.4 章节内容。7M ySQL 客 户 机 连 接 MySQL 服 务 器 的 方 法 有 哪 些 ? 连 接 MySQL 服 务 器 时 , 需 提 供 哪 些信 息 ?答:请参看 2.1.7 章节内容。8字符、字符集、字符序分别是什么?字符序的命名规则是什么?答:请参看 2.2.1 章节内容。9您所熟知的字符集、字符序有哪些?它们之间有什么区别?答:请参看 2.2.2 章节内容。10请简述 MySQL 字符集的转换过程。答:请

20、参看 2.2.3 章节内容。11MySQL 系统数据库有哪些?这些系统数据库有什么作用?答:请参看 2.2.1 章节内容。12如果仅仅需要在数据库中存储中文简体字符,那么如何设置 MySQL 字符集?答:请参看 2.2.4 章节内容。13请自己编写一段 SQL 脚本文件,并运行该脚本文件中的代码。答:请参看 2.2.5 章节内容。14您所熟知的存储引擎有哪些?MyISAM 存储引擎与 InnoDB 存储引擎相比,您更喜欢哪一个?它们都有什么特点?答:请参看 2.4.1 章节内容。15创建 student 数据库,并在该数据库中创建 student 表,用于保存您的个人信息(如姓名、性别、身份证

21、号、出生日期等),并完成下列操作或问题。1)上述的 student 表有没有出现数据冗余现象?(提示:出生日期可以由身份证号推算得出)答:出生日期可由身份证号计算得出,所以上述的 student 表存在数据冗余现象。2)student 数据库目录存放在数据库根目录中,默认情况下,根目录是什么?答:使用命令“show variables like datadir;”可以查看参数 datadir 的值。默认安装MySQL 后,数据库根目录 datadir 的值为“C:/Documents and Settings/All Users/Application Data/MySQL/MySQL Ser

22、ver 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 数据库目录中还会存放一个

23、名为“表 名 .ibd”的数据文件。(4) 如果 student 数据库中存在 MyISAM 存储引擎的表,则 student 数据库目录中会存在一 个 文 件 名 为 表 名 、 后 缀 名 为 MYD( 即 MYData 的 简 写 ) 的 数 据 文 件 以 及 文件 名 为 表 名 、 后 缀 名 为 MYI( 即 MYIndex 的 简 写 ) 的 索 引 文 件 。数据库根目录中存放如下文件以及目录(如下图所示):数据库目录(例如 test 数据库目录、student 数据库目录)ib_logfile0 及 ib_logfile1 是重做日志文件InnoDB 共享表空间文件 ibd

24、ata1 文件mysql-bin.000001 等一系列二进制日志文件(该知识点超出本章范围)mysql-bin.index 二进制日志索引文件(该知识点超出本章范围)mysqld.exe 进 程 ID 号 PID 文 件f 文 件 : server_uuid: 服 务 器 身 份 ID。 在 第 一 次 启 动 MySQL 时 , 会 自 动 生成 一 个 server_uuid 并 写 入 到 数据库根目录 下 f 文 件 里 , 官 方 不 建 议 修 改 。6)将个人信息插入到 student 表中,并查询 student 表的所有记录。create database student;

25、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 data

26、base 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) pr

27、imary key);insert into student values(张三, 男,410*001);select * from student;如果没有出现乱码,经过哪些设置可以产生乱码:set names latin1;select * from student;8)您的个人信息存放到了哪个文件中?情形一:如果 student 表是 MyISAM 存储引擎的表,则则张三的数据存放在一 个 文 件 名 为 studnet、 后 缀 名 为 MYD( 即 MYData 的 简 写 ) 的 数 据 文 件 。情形二:如果 student 表是 InnoDB 存储引擎的共享表空间的表,则张三的

28、数据存放在 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

29、.3 章节内容。17如何进行数据库备份和恢复?备份期间,有哪些注意事项?答:请参看 2.6 章节内容。第三章答案1MySQL 数据库类型有哪些?如何选择合适的数据类型?答:请参看 3.1 章节内容。请参看 3.1.7 章节内容。2简单总结 char(n)数据类型与 varchar(n)数据类型有哪些区别。答:请参看 3.1.3 章节内容。3datetime 与 timestamp 数据类型有什么区别?答:请参看 3.1.4 章节内容。4MySQL 模式与 MySQL 复合数据类型有什么关系?答:请参看 3.1.5 章节内容。5创建 SQL 脚本文件 choose.sql, 书 写 SQL 代

30、码 , 运 行 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,teache

31、r_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 ch

32、arset=gbk;create table course(course_no int auto_increment primary key,course_name char(10) not null, #课程名允许重复up_limit int default 60, #课程上限设置默认值为 60description text not null, #课程的描述信息为文本字符串 text,且不能为空status char(6) default 未审核, #课程状态的默认值为“未审核”teacher_no char(10) not null unique, #唯一性约束实现教师与课程之间 1:1

33、 关系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 , #学生的班级允许为空cons

34、traint 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, #选课

35、时间可由 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您是如何理解索引的?索引越多越

36、好吗?答:请参看 3.5 章节内容。请参看 3.5.1 章节内容。8索引关键字的选取原则有哪些?答:请参看 3.5.2 章节内容。9您所熟知的索引种类有哪些?什么是全文索引?答:请参看 3.5.4 章节内容。全文索引与全文检索全文索引:当查询数据量大的字符串信息时,使用全文索引可以大幅提升字符串的检索效率。需要注意的是,全文索引只能创建在 char、varchar 或者 text 字符串类型的字段上,且全文索引不支持前缀索引。全文检索是指以全部文本信息作为检索对象的一种信息检索技术。摘自 http:/ 5.10 章节中,也给出了全文检索的定义:简单地说,MySQL 中的全文检索使用特定的分词技术,利用查询关键字和查询字段内容之间的相关度进行检索。通过全文索引可以提高文本匹配的速度。10索引与约束有什么关系?答:请参看 3.5.3 章节内容。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com