下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、MySQL数据库基础与实例教程练习题参考答案由于时间仓促,答案中难免存在错误,不妥之处恳请读者批评指正!第一章答案1 数据库管理系统中常用的数学模型有哪些?数据库管理系统通常会选择某种“数学模型”存储、组织、管理数据库中的数据,常用的数学模 型包括“层次模型”、“网状模型”、“关系模型”以及“面向对象模型”等。2您听说过的关系数据库管理系统有哪些?数据库容器中通常包含哪些数据库对象? 目前成熟的关系数据库管理系统主要源自欧美数据库厂商,典型的有美国微软公司的 SQLServer、美国旧M公司的DB2和Informix、德国SAP公司的Sybase美国甲骨文公司 的 Oracle o数据库容器中
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具有开源、免费、体积小、便于安装,但功能强大等特点。5通过本章的学习,您觉得数据库表与电子表格(例如 Exc
4、el)有哪些区别?限于本章的知识点:外观上,关系数据库中的一个数据库表和一个不存在“合并单元格”的电子表格(例如Excel)相同。与电子表格不同的是:同一个数据库表的字段名不能重复。为了优化存储空间以及便于数据排序,数据库表的每一列必须指定某种数据类型。关系数据库中的表是由列和行构成的,和电子表格不同的是,数据库表要求表中的每一行记录都必须是唯一的,即在同一张数据库表中不允许出现完全相同的两条记录。6您所熟知的数据库设计辅助工具有哪些?您所熟知的模型、工具、技术有哪些?数据库设计辅助工有数据模型、数据建模工具、关系数据库设计技术。其中常用的数据模型有ER 模型和类图;常用的数据建模工具如ERw
5、in、PowerDesigner. Visi。等;常用的关系数据库设计技术 如数据库规范化技术。1 模型数据模型有E-R图或者类图等数据模型。业务模型有程序流程图、数据流程图 DFD、时序图、状 态图等业务模型。2 工具软件项目管理工具如美国微软公司的Project,数据建模工具如ERwin、PowerDesigner.Visio,业务建模工具如 PowerDesigner、Rational Rose 以及 Visio 等。IDE 工具有 VC+6.0、Visual Studio Eclipse以及NetBeans等。测试工具有Junit单元测试工具、QuickTest Professiona
6、l功能测 试工具以及LoadRunner性能测试工具等。3 .技术软件开发时常用的技术包括:面向对象分析和设计技术、结构化分析和设计技术、软件 测试技术和关系数据库设计技术等。7 请您罗列出“选课系统”需要实现哪些功能,使用数据库技术能够解决“选课系统”中的哪些 商业问题?“选课系统”中存在的商业问题(等于“选课系统”需要实现的功能): 如何存储以及维护课程、学生、教师以及班级的详细信息? 不同教师申报的课程名能否相同?如果允许课程名相同,如何区分课程? 如何控制每位教师只能申报一门选修课程?如何控制每门课程的人数上限在(60、150、230)中取值?如何控制每一门课程的选课学生总人数不超过该
7、课程的人数上限?如何实现学生选课功能、 退选功能以及调课功能?如何控制每位学生最多可以选修两门课程,且两门课程不能相同? 系统如何自动记录学生的选课时间?如何统计每一门课程还可以供多少学生选修?如何统计人数已经报满的课程?如何统计某一个教师已经申报了哪些课程?如何统计某一个学生已经选修了多少门课程,是哪些课程?如何统计选修人数少于30人的所有课程信息?如何统计选修每一门课程的所有学生信息?课程信息删除后,如何保证选择该课程的学生可以选修其他课程?如何通过搜索关键字检索自己感兴趣的课程信息?&您所熟知的编码规范有哪些?1 .命名规范2注释3书写规范(缩进规范)9您是如何理解“ E-R图中
8、实体间的关系是双向的”?能不能举个例子?请参看1.3.1章节的内容。10 - E-R图中,什么是基数?什么是元?什么是关联?请参看1.3.2章节的内容。11 ER图的设计原则是什么?您是怎么理解E-R图的设计原则的?请参看1.3.3章节数据库开发人员通常采用“一事一地”的原则的内容。12关系数据库的设计步骤是什么?为每张表定义一个主键有技巧可循吗?主键与关键 字有什么关系?关系数据库的设计步骤,请参看 1.4章节的内容。为每张表定义一个主键技巧,请参看 142章节的内容。主键与关键字有什么关系,请参看1.4.2章节的内容。12 .在关系数据库设计过程中,如何表示E-R图中的1:1、1:m、m:
9、n关系?请参看143以及144章节的内容。13 .在数据库管理系统中,您所熟知的数据类型有哪些?每一种数据类型能不能各一些例子? 请参看1.4.5章节的内容。14 .您所熟知的约束条件有哪些? MySQL支持哪些约束条件?请参看146章节的内容。MySQL支持主键(primarykey)约束、外键(foreign key )约束、 唯一性()约束、默认值(default)约束、非空()约束。15 .数据库中数据冗余的“并发症”有哪些,能不能列举一些例子?数据冗余“并发症”插入有异常、删除异常、修改复杂。例子参看1.4.8章节的内容。16 .如何避免数据冗余?什么是1NF、2NF、3NF ?使用
10、规范化减少数据冗余请参看1.4.8章节的内容。17 .根据本章的场景描述一一 “很多团购网站在网上对房源进行出租”的E-R图,请 设计该场景描述的数据库表。团购网站(网站ID,网址)房源(房间号,房型)顾客(顾客号)出租(出租ID,网站ID,房间号,顾客号)19 .如果将学生student表设计为如下表结构:(student _no,student _no,student _name,student _contact,class _no,department _name)请用数据库规范化的知识解释该表是否满足3NF范式的要求?该表是否存在数据冗余?是否会产生诸如插入异常、删除异常、修改复杂等数
11、据冗余“并发症”?此题题目中的学生student表存在问题。建议将学生student表修改为如下结构。学号 姓名性别课程号课程名I成绩课程号I课程名I成绩居住地I邮编请参看1.4.8章节的内容。20 .在“选课系统”中,学生选课时,由于每一门课程受到教室座位数的限制,每一门课程设置 了人数上限,如何确保每一门课程选报学生的人数不超过人数上限?有几种设计方案?这些设计方案的 区别在哪里?请参看1.4.9章节的内容。21 . “选课系统”有几张表,每个表有哪些字段?teacher(teacher_ no,teacher_ name ,teacher_con tact) classes(class_
12、 no ,class_ name, departme nt_n ame) course(course_no ,course_name, upjimit,description,status,teacher_no)stude nt(stude nt_no, stude nt_n ame, stude nt_con tact,class_ no) choose(choose_ no ,stude nt_no char(11),course_ no ,score,choose_time)22 .依据自己所掌握的知识,描述如何使用数据库技术解决“选课系统”问题域中的问 题。如何存储以及维护课程、学生、
13、教师以及班级的详细信息?答:course> student、teacher、classes表可以用于存储以及维护课程、学生、教师 以及班 级的详细信息。不同教师申报的课程名能否相同?如果允许课程名相同,如何区分课程?答:如果需求要求:不同教师申报的课程名不能相同,则可以通过将course表的course_name字段设置为unique约束即可。如果需求要求:不同教师申报的课程名可以相同,此时可以通过给 course表添加coursejd (无任何逻辑意义)主键字段,标记不同教师申报的课程。如何控制每位教师只能申报一门选修课程?请参看143章节的“情形二”内容。如何控制每门课程的人数上限在
14、(60、150、230)中取值?答:MySQL目前不正常check约束。但该问题可以借助MySQL触发器解决,该题超出本章知识点内容,请参看触发器章节内容。如何控制每一门课程的选课学生总人数不超过该课程的人数上限?请参看149章节的内容。如何实现学生选课功能、退选功能以及调课功能?答:该问题可以借助MySQL存储过程、事务解决,该题超出本章知识点内容,请 参看存储 过程章节以及事务章节的内容。如何控制每位学生最多可以选修两门课程,且两门课程不能相同?答:该问题可以借助MySQL存储过程解决,该题超出本章知识点内容,请参看存 储过程章 节内容。系统如何自动记录学生的选课时间?答:借助MySQL的
15、now ()函数。如何统计每一门课程还可以供多少学生选修?如何统计人数已经报满的课程?如何统计某一个教师已经申报了哪些课程?如何统计某一个学生已经选修了多少门课程,是哪些课程?如何统计选修人数少于30人的所有课程信息?如何统计选修每一门课程的所有学生信息?答:上述统计信息超出本章知识点内容,请参看表记录的检索章节内容。课程信息删除后,如何保证选择该课程的学生可以选修其他课程?答:可以通过外键约束级联删除实现,也可以通过触发器实现。如何通过搜索关键字检索自己感兴趣的课程信息?答:通过全文检索或者模糊查询 like关键字实现。第二章答案23 通过本章的学习,您了解的MySQL有哪些特点?答:请参看
16、2.1.1章节内容。24 请您简单描述MySQL的使用流程。什么是MySQL客户机?登录主机与MySQL客户机有 什么关系?什么是MySQL会话?答:请参看2.1.1章节内容。MySQL客户机:与MySQL服务器通话的客户端不止一种,比如Windows操作系统下的命令 行,可以直接通过命令建立与mysql数据库的通话,另外还有phpmyadmin . MySQL等图形化界面 连接方式等。本书经常使用的MySQL客户机程序mysql.exe存放在C:Program FilesMySQLMySQL Server 5.6bin 目录。在一台登录主机上可以开启多个MySQL客户机。数据库用户访问MyS
17、QL服务器的数据时,首先需要选择一台登录主机,然后在该登录主机上开 启MySQL客户机,输入正确的账户名、密码,建立一条MySQL客户机与MySQL服务器之间的 “通信链路”。通信链路断开之前,MySQL客户机可以向MySQL服务器发送 多次“请求”,MySQL服务器会对每一次请求做出“响应”,请求/响应期间称为MySQL会话。25 通过Google或者Baidu搜索引擎,搜索常用的MySQL客户端工具(或者客户机程序)有 哪些。答案参见知乎,网址:26 MySQL服务、MySQL服务实例、MySQL服务器分别是什么?什么是端口号?端口号有什 么作用?答:请参看2.1.1章节内容。27 请列举
18、my.ini配置文件中常用的参数选项组以及参数信息。答:请参看2.1.5章节内容。28 启动MySQL服务的方法有哪些?停止MySQL服务的方法有哪些?答:请参看2.1.4章节内容。29 MySQL客户机连接MySQL服务器的方法有哪些?连接MySQL服务器时,需提供哪些 信 息?答:请参看2.1.7章节内容。30 字符、字符集、字符序分别是什么?字符序的命名规则是什么?答:请参看2.2.1章节内容。31 您所熟知的字符集、字符序有哪些?它们之间有什么区别?答:请参看2.2.2章节内容。32 .请简述MySQL字符集的转换过程。答:请参看2.2.3章节内容。33 . MySQL系统数据库有哪些
19、?这些系统数据库有什么作用?答:请参看2.2.1章节内容。34 .如果仅仅需要在数据库中存储中文简体字符,那么如何设置 MySQL字符集?答:请参看2.2.4章节内容。35 .请自己编写一段SQL脚本文件,并运行该脚本文件中的代码。答:请参看2.2.5章节内容。36 .您所熟知的存储引擎有哪些? MylSAM存储引擎与InnoDB存储引擎相比,您更喜欢哪一 个?它们都有什么特点?答:请参看241章节内容。37 .创建student数据库,并在该数据库中创建student表,用于保存您的个人信息(如姓名、性别、身份证号、出生日期等),并完成下列操作或问题。1)上述的student表有没有出现数据
20、冗余现象?(提示:出生日期可以由身份证号推算 得出)答:出生日期可由身份证号计算得出,所以上述的 student表存在数据冗余现象。2 ) student数据库目录存放在数据库根目录中,默认情况下,根目录是什么?答:使用命令"show variables like 'datadir: 可以查看参数datadir的值。默认安装MySQL后, 数据库根目录 datadir 的值为 " C:/Docume nts and Sett in gs/AII Users/ApplicationData/MySQL/MySQL Server 5.6/Data/ "。3 )
21、如何查看student数据库的结构。答:请参看2.3.3章节内容。4 )如何查看student表的结构,并查看该表的默认字符集、字符序、存储引擎等信息。答:请参看2.4.4章节内容。5) student数据库目录中存放了哪些文件?数据库根目录中存放了哪些文件?答:请参看2.4.1章 节内容。stude nt数据库目录中存放了如下文件:(1) 数据库文件(如db.opt)(2) 表名、后缀名为frm的表结构定义文件(3) 如果 student数据库中存在InnoDB存储引擎的独享表空间的表,则student数据库目录中还会存放一个名为表名.ibd”的数据文件。(4) 如果student数据库中存
22、在MylSAM存储引擎的表,则student数据库目录中会 存在 一个文件名为表名、后缀名为MYD (即MYData的简写)的数据文件以及文件名为表名、后 缀名为MYI (即MYIndex的简写)的索引文件。数据库根目录中存放如下文件以及目录(如下图所示):数据库目录(例如test数据库目录、stude nt数据库目录)ib_logfileO及ibogfilel是重做日志文件InnoDB共享表空间文件ibdatal文件mysql-bi n.000001等一系列二进制日志文件(该知识点超出本章范围)mysql-bin.index二进 制日志索引文件(该知识点超出本章范围)mysqld.exe进程
23、ID号PID文件f文件:servejuuid:服务器身份ID。在第一次启动 MySQL时,会自动生成 一个server_uuid并写入到数据库根目录下f文件里,官方不建议修改。wirrwjEMbXnODDtni fcjwi.cHal6)将个人信息插入到stude nt表中,并查询stude nt表的所有记录。 create database stude nt;use stude nt;create table stude nt( n ame char(10) not n ull, sex char(3) not nu II, ID char(18) primary key);insert in
24、to student values。张三?男?410*001'); select * from stude nt;7)在上一步骤的查询结果中是否出现了乱码?如果出现了乱码,如何避免乱码问题的发生?如 果没有出现乱码,经过哪些设置可以产生乱码?如果出现了乱码,重新删除数据库,重新设置字符集,再创建数据库和数据库表(要求在同一个MySQL会话中依次执行下列代码):drop database if exists stude nt;set character_set_clie nt = gbk;set character_set_c onnection = gbk;set character_
25、set_database = gbk;set character_set_results = gbk;set character_set_server = gbk;create database stude nt;use stude nt;create table stude nt (n ame char (10) not n ull,sex char (3) not nu II,ID char (18) primary key);insert into student values ('张三?男?410*001');select * from stude nt;如果没有出现乱
26、码,经过哪些设置可以产生乱码:set n ames lati n1;select * from stude nt;8)您的个人信息存放到了哪个文件中?情形一:如果student表是MylSAM存储引擎的表,则则张三的数据存放在一个文 件名为 stud net后缀名为MYD (即MYData的简写)的数据文件。情形二:如果student表是InnoDB存储引擎的共享表空间的表,则张三的数据存 放在InnoDB共享表空间文件ibdatal数据文件。情形三:如果student表是InnoDB存储引擎的独享表空间的表,则张三的数据存 放在“student.ibd”的数据文件。9)如何修改student
27、表的存储引擎?修改student表的存储引擎后,您的个人信息存放 到了哪个文件中?答案:参考上一题。10)删除student表以及student数据库。use stude nt; drop table stude nt; drop database stude nt;16您所熟知的系统变量有哪些?如何设置系统变量的值?答:请参看252章节内容。请参看 253章节内容。17 如何进行数据库备份和恢复?备份期间,有哪些注意事项?答:请参看2.6章节内容。第三章答案1. MySQL数据库类型有哪些?如何选择合适的数据类型?答:请参看3.1章节内容。请参看1 .1.7章节内容。2 .简单总结char(
28、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_clie nt = gbk; set character_set_c onn ecti on = gbk; set character_set_database = gbk;
29、 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 n ull, teacher_c on tact char(20) not n ull )engine=lnnoDB default charset=gbk; create table classes( class_ no int
30、auto_ in creme nt primary key, class_ name char(20) not n ull uniq ue, departme nt_n ame char(20) not null )engine=lnnoDB default charset=gbk; create table course( course_ no int auto_ in creme nt primary key, course_ name char(10) not n ull, upjimit int default 60, description text not null, status
31、 char(6) default,未审核teacher_ no char(10) not n ull uniq ue,# 教师姓名不允许为空# 教师联系方式名不允许为空# 班级名不允许为空、且不允许重复# 院系名不允许为空# 课程名允许重复# 课程上限设置默认值为60# 课程的描述信息为文本字符串text,且不能为空# 课程状态的默认值为“未审核”# 唯一性约束实现教师与课程之间1:1关系con stra int course_teacher_fk foreig n key(teacher_ no) references teacher(teacher_ no) )engine=lnnoDB
32、default charset=gbk;create table stude nt(stude nt_no char(11) primary key, stude nt_n ame char(10) not n ull, stude# 学号不允许重复# 学生姓名不允许为空nt_con tact char(20) not nu II, class_ no int,# 学生联系方式不允许为空constraint student class fk foreign key (class# 学生的班级允许为空no) references classes(class no) )engine=lnnoDB
33、default charset=gbk;create table choose(choose_ no int auto_ in creme nt primary key, stude nt_no char(11) not null,#学生学号不允许为空第四章答案course no int n ot null,#课程号不允许为空score tinyint un sig ned,choose_time datetime not null,#选课时间可由now()函数自动生成con stra int choose_stude nt_fk foreig n key(stude nt_no) refer
34、ences stude nt(stude nt_no), con stra int choose course fk foreig n key(course_ no) referen ces course(course_ no) )engine=lnnoDB default charset=gbk;6 . 分析choose数据库的5张表的表结构,通过这5张表,可以解决选课系统”问题 域中的哪些 问题?答:请参看第一章课后习题的答案。7 .您是如何理解索引的?索引越多越好吗?答:请参看3.5章节内容。请参看3.5.1章节内容。&索引关键字的选取原则有哪些?答:请参看3.5.2章节内容。9
35、您所熟知的索引种类有哪些?什么是全文索引?答:请参看3.5.4章节内容。全文索引与全文检索全文索引:当查询数据量大的字符串信息时,使用全文索引可以大幅提升字符串的检索效率。需要注意的 是,全文索引只能创建在char, varchar或者text字符串类型的字段上,且全文索引不支持前缀索引。全文检索是指以全部文本信息作为检索对象的一种信息检索技术。摘自 全文检索本书5.10章节中,也给出了全文检索的定义:简单地说,MySQL中的全文检索使用特定的分词技术,利用查询关键字和查询字段内容之间的相关度进行检索。通过全文索引可以提高文本匹配的速度。10.索引与约束有什么关系?答:请参看3.5.3章节内容
36、。1. NUL与NULL有什么区别?答:请参看4.4章节内容。2. truncate与delete有什么区别?答:请参看432章节内容。3. 更新操作与字符集有什么关系?答:如果更新语句中包含中文简体字符,应该合理地设置字符集,否则,将把乱码数据更新到数据库表中。详细请参看4.1.2章节内容。4. 数据库表中自增型字段的值一定连续吗?答:请参看4.1.3章节内容。5. replace语句与insert语句有什么区别?答:请参看4.1.6章节内容。6. 执行了 delete语句后,表结构被删除了吗?使用什么命令可以删除表结构?答:delete语句删除的是表中的记录,无法删除表结构;删除表结构可以
37、使用drop table命令。7. 请读者向选课系统" choose数据库中的选课choose表插入表4-8所示的信息,并完成其他操作。表4-8向choose表添加的测试数据choose _nostudent_nocourse _noscorechoose _time12012001240服务器当前时间22012001150服务器当前时间32012002360服务器当前时间42012002270服务器当前时间52012003180服务器当前时间62012004290服务器当前时间720120053NULL服务器当前时间820120051NULL服务器当前时间(1)学生张三(stude
38、nt_no=2012001 )已经选修了课程java程序设计(course_no=1),在选修时间截止前,他想把该课程调换成MySQL数据库(course_no=2),试用SQL 语句 实现该功能。说明:题目中的张三(stude nt_n o=2012005)应该修改为张三(stude nt_no=2012001 )第一种方法: use choose;update choose set course no=2 where course no=1 and stude nt no='2012001 :第二种方法:use choose;delete from choose where cou
39、rse_ no=1 and stude nt_no='2012001 : insert into choosevalues( null,12012005',2, null, no w(); 学生田七(student_no=5)已经选修了课程c语言程序设计(course_no=3),由于某种原因,在选修时间截止前,他不想选修该课程了,试用SQL语句实现该功能。说明:题目中的田七(stude nt_no=5)应该修改为田七(stude nt_no=2012005) use choose;delete from choose where course no=3 and stude n
40、t no='2012005:(3)课程结束后,请录入某个学生的最终成绩,最终成绩=(原成绩*70%) +30。说明:题目修改为:课程结束后,请修改所有学生的最终成绩,最终成绩二(原成绩*70%) +30use choose;update choose set score=score*0.7+30;(4)请解释学生的成绩为NULL值的含义,NULL值等于零吗?答:成绩为NULL值,表示学生还没有考试该课程,成绩未知。成绩为零,表示学生已经考试了该课 程,成绩已知。第五章答案1. .简述limit以及distinet的用法。答:请参看5.1.2章节内容。2. 什么是内连接、外连接? MyS
41、QL支持哪些外连接?答:请参看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章节内容。&您怎样理解concat ()与group_concat ()函数之间的区别?
42、答:请参看5.5.3章节内容。9. 什么是相关子查询与非相关子查询?答:如果子查询中仅仅使用了自己定义的数据源,不依靠主查询,能够独立运行的子查询,这种查询是非相关子查询。非相关子查询是独立于外部查询的子查询,子查询总共执行一次,执行完毕后将值传递给主查询。如果子查询中使用了主查询的数据源, 这种查询是相关子查询,此时主查询的执行与相 关子查询的执行相互依赖。10. 请编写SQL脚本,输入选课系统综合查询章节内的select语句。答:请参看5.8章节内容。11. MySQL如何使用like关键字实现模糊查询?有什么注意事项? 答:请参看5.2.5章节内容。12. MySQL如何使用正则表达式实
43、现模糊查询?答:请参看5.9章节内容。13. MySQL如何进行全文检索?全文检索有什么注意事项?答:请参看5.10章节内容。14. 您觉得全文检索与like模糊查询、正则表达式模糊查询最大的区别是什么?答:全文检索:是指全文检索解析器(分词技术)通过扫描文章中的每一个词,对每一个词建立 一个索引,指明该词在文章中出现的次数和位置,当用户进行again st查询时,根据事先建立的全文索引进行查找,并将查找的结果反馈给用户。以全文检索“我们is中国人而自豪”为例。全文检索解析器可将该中文信息切分成: 我们、is、中国、国人、人而、而自、自豪(这里以两个字为单位进行分割为例,实际情况更为复杂),并
44、建立全文索引。当用户使用contains语句查询“自豪”(为了区分,搜索关键词是蓝色字)关键词时,此时 “自豪”(蓝色字)去匹配全文索引中的“自豪”(为了区分,索引关键词是红色字),并将匹配15. 最新版本的MySQL中,InnoDB存储引擎的表支持全文检索吗?答:支持16. MySQL不支持完全连接,您能不能通过其他技术手段实现完全连接的功能? 答:将左连接和右连接通过 union模拟实现完全连接。17. .合并结果集时,union与union all有什么区别?答:请参看5.6章节内容。18. 给定一个教师的工号(例如'001'),统计该教师已经申报了哪些课程。答:sele
45、ctcourse J no ,course_ name,up_limit,descriptio n,teacher.teacher_ no,teacher_ name,teacher_contact,av ailable,statusfrom course join teacher on course.teacher_ no=teacher.teacher_ nowhere teacher.teacher no = '001 :第六章答案1 .使用select语句输出各种数据类型的常量时,数据类型都是如何转换的?答:各种数据类型 的常量会被自动转换为“字符串”再进行显示。2.系统会话变
46、量与用户会话变量有什么区别与联 系?答:请参看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语句不能产生结果集,否则 将
47、产生 编译错误。(2)自定义函数是数据库的对象,因此,创建自定义函数时,需要指定该自定义函数隶 属于哪个数据库。(3)同一个数据库内,自定义函数名不能与已有的函数名(包括系统函数名)重名。建议 在自定义函数名中统一添加前缀“fn_ ”或者后缀“ Jn”。(4)函数的参数无需使用declare命令定义,但它仍然是局部变量,且必须提供参数的数 据类型。自定义函数如果没有参数,则使用空参数“()”即可。(5)函数创建成功后,记得将命令结束标记恢复“原状”。(6)函数必须指定返回值数据类型,且须与return语句中的返回值的数据类型相近长度 可以不同)。9 请分析下面的getdate()函数完成的功能
48、,创建该函数,并调用该函数。e chooseDatable changed nysql> deLimitei* $E|crfeAte Function tdate<gdate datetime3 i*eturns uarcli*i*<255>、nos: q_> beA£ndeclare x VArchai,ASSS? default J * >set x= dAte_foi*nAt<adateA年初月曲 日曲时M分岛秒'return X;end$Qu&py OK, & raus affected C007 seo d&
49、amp;linitep ;nys (11> sel&ct getdateCnowOA ; + +! getdatzeCitowC?>: I加饰年型月02 311时45分4秒I1 ib« xrt set CO-13 secA函数的功能:对日期时间进行格式化。10 .通过本章知识的讲解,您是如何理解中文全文检索的?您觉得实现中文全文检索的核心技术是什 么?答:请参考第五章课后习题答案。第七章答案1 视图与基表有什么区别和联系?视图与 select语句有什么关系?答:视图与基表有什么区别和联系:数据库表称为基本表或者基表,视图称为虚表。基表的数据发生变化时,虚表的数据也
50、会随之变化。触发器基于表(严格地说是基于表的记录),这里的表是基表,不是临时表(temporary类型的表),也不是视图。通过视图虽然可以更新基表的数据,但本书并不建议这样做。原因在于,通过视图更新基表数据,并不会触发触发器的运行。视图与select语句有什么关系:视图中保存的就是一条select语句。对于经常使用的结构复杂的select语句,建议将其封装为视图。2 .什么是检查视图?什么是local检查视图与cascaded检查视图?答:创建视图时,没有使用w让h check option子句时,即with _check_option的值为0,表示视图为普通视图;使用 with check
51、option子句或者with cascaded check option子句时, 表示该视图为cascaded检查视图;使用with local check option子句,表示该视图为 local检 查视图。检查视图:通过检查视图更新基表数据时,检查视图对更新语句进行了先行检查,只有满足检查条件的更新语句才能成功执行。如果更新语句不满足检查视图定义的检查条件,则检查视图抛出异常,更新失败。local检查视图与cascaded检查视图的区别联系,请参看 7.1.7章节内容3 .请用触发器实现检查约束:一个学生某门课程的成绩score要求在0到100之间取 值。答:本题需要为choose表创建
52、了一个before、insert触发器和一个before> update触发 器。由于本 章7.2.3章节中,已经为choose表仓ij建了一个beforeinsert触发器和一个beforeupdate触发器。而同一 个表不能创建两个相同触发时间、触发事件的触发程序。因此,为了实现本题功能,需要首先删除7.2.3章节中的两个触发器。drop trigger choose_ in sert_before_trigger;drop trigger choose delete before trigger;然后再为choose表创建一,个after、insert触发器和一个after、upd
53、ate触发器,自动维护 课程 available的字段值。delimiter $create trigger choose_ in sert_after_trigger after insert on choose for each row begin update course set available=available-1 where course_ no=n ew.course_ no; en d; $delimiter;delimiter $create trigger choose_delete_after_trigger after delete on choose for e
54、ach row begin update course set available=available+1 where course_ no=old.course_ no; en d;$delimiter;最后,再为choose表创建一个beforeinsert触发器和一个beforeupdate触发器实现 检查约束:一 个学生某门课程的成绩score要求在0到100之间取值。delimiter $create trigger choose_ in sert_before_trigger before insert on choose for each row begin if(n ew.sc
55、ore>=0 && n ew.score<=100) the nset n ew.score = n ew.score;else in sert into mytable values(O);end if;en d;$delimiter;delimiter $create trigger choose_update_before_trigger before update on choose for each row begin if(n ew.score>=0 && n ew.score<=100) the nset n ew.scor
56、e = n ew.score;else in sert into mytable values(O);end if;en d;$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
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 保安培训师博雅聘用合同
- 供应链创新与变革策略
- 燃煤运输司机薪资策略
- 游戏运营公司合伙协议
- 砂矿防水施工安全规范
- 旅游度假区网络升级合同
- 建筑设计合同存档查阅细则
- 体育场馆开荒保洁施工合同
- 铁路施工临时房建设合同
- 保税区建造师聘用协议
- 2024-2030年版中国测绘行业发展机遇分析及投资策略研究报告
- 心肺复苏术课件2024新版
- 安全环保职业健康法律法规清单2024年
- 北师大版数学一年级上册期中考试试题
- 治本攻坚三年行动
- 行政复议法-形考作业2-国开(ZJ)-参考资料
- web前端开发工程师职业生涯规划
- 起重机械安全技术规程(TSG-51-2023)宣贯解读课件
- 职业倦怠量表MBIGS (MBIGeneral Survey)
- 职业生涯规划书(14篇)
- JIS G4304-2021 热轧不锈钢板材、薄板材和带材
评论
0/150
提交评论