下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、MySQL 数据库基础与实例教程练习题参考答案由于时间仓促,答案|中难免存在错误,不妥之处恳请读者批评指正!第一章答案1 数据库管理系统中常用的数学模型有哪些?数据库管理系统通常会选择某种“数学模型”存储、组织、管理数据库中的数据,常用 的数学模型包括“层次模型”、“网状模型”、“关系模型”以及“面向对象模型”等。2您听说过的关系数据库管理系统有哪些?数据库容器中通常包含哪些数据库对象?目前成熟的关系数据库管理系统主要源自欧美数据库厂商,典型的有美国微软公司的SQL Server、美国 IBM 公司的 DB2 和 Informix、德国 SAP 公司的 Sybase 美国甲骨文公司 的 Ora
2、cle。数据库容器中通常包含表、索引、视图、存储过程、触发器、函数等数据库对象。3 通过本章知识的讲解, SQL 与程序设计语言有什么关系?SQL 并不是一种功能完善的程序设计语言,例如,不能使用SQL 构建人性化的图形用户界面(Graphical User In terface, 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.0、 Visual Studio、Eclipse 以及
6、NetBeans 等。测试工具有 Junit 单元测试工具、 QuickTest Professional 功能测试工具以及 LoadRunner 性能测试工具等。3.技术软件开发时常用的技术包括:面向对象分析和设计技术、结构化分析和设计技术、软件测试技术和关系数据库设计技术等。7请您罗列出“选课系统”需要实现哪些功能,使用数据库技术能够解决“选课系统” 中的哪些商业问题?“选课系统”中存在的商业问题(等于“选课系统”需要实现的功能):如何存储以及维护课程、学生、教师以及班级的详细信息?不同教师申报的课程名能否相同?如果允许课程名相同,如何区分课程?如何控制每位教师只能申报一门选修课程?如何控
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 章节的内容。为每张表定义一个主键技巧,请参看142 章节的内容
9、。主键与关键字有什么关系,请参看1.4.2 章节的内容。13在数据库管理系统中,您所熟知的数据类型有哪些?每一种数据类型能不能各 一些例子?请参看 1.4.5 章节的内容。14.您所熟知的约束条件有哪些?MySQL 支持哪些约束条件?请参看 1.4.6 章节的内容。 MySQL 支持主键(primary key )约束、外键(foreign key ) 约束、唯一性()约束、默认值(default)约束、非空()约束。15. 数据库中数据冗余的“并发症”有哪些,能不能列举一些例子?数据冗余“并发症”插入有异常、删除异常、修改复杂。例子参看1.4.8 章节的内容。16. 如何避免数据冗余?什么是
10、 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 范式的要求?该表是否存在数据冗余
11、?是否会产生诸如插入异常、删除异常、修改复杂等数据冗余“并发症”? 此题题目中的学生student 表存在问题。建议将学生student 表修改为如下结构。学号姓名性另U课程号 课程名|成绩 课程号 课程名|成绩 居住地|邮编请参看 1.4.8 章节的内容。20. 在“选课系统”中,学生选课时,由于每一门课程受到教室座位数的限制,每一门 课程设置了人数上限,如何确保每一门课程选报学生的人数不超过人数上限?有几种设计方 案?这些设计方案的区别在哪里?请参看 1.4.9 章节的内容。21. “选课系统”有几张表,每个表有哪些字段?teacher(teacher_ no,teacher_ name
12、,teacher_con tact) classes(class_ no ,class_ name, departme nt_name) course(course_no ,course_name, up_limit,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 表可以用于存储以及维护课程、学生、教师12.在关系数据库设计过程中, 如何表示 请参看 143 以及 144 章节的内容。E-R 图中的 1:1、1:m、m:n 关系?以及班级的详细信息。不同教师申报的课程名能否相同?如果允许课程名相同,如何区分课程?答:如果需求要求:不同教师申报的课程名不能相同,则可以通过将course 表的course_name 字段设置为 unique 约束即可。如果需求要求:不同教师申报的课程名可以相同,此时可以通过给
14、course 表添加course_id (无任何逻辑意义)主键字段,标记不同教师申报的课程。如何控制每位教师只能申报一门选修课程?请参看 143 章节的“情形二”内容。如何控制每门课程的人数上限在(60、150、230)中取值?答:MySQL 目前不正常 check 约束。但该问题可以借助MySQL 触发器解决,该题超出本章知识点内容,请参看触发器章节内容。如何控制每一门课程的选课学生总人数不超过该课程的人数上限?请参看 149 章节的内容。如何实现学生选课功能、退选功能以及调课功能?答:该问题可以借助 MySQL 存储过程、事务解决,该题超出本章知识点内容,请参看存储过程章节以及事务章节的内
15、容。如何控制每位学生最多可以选修两门课程,且两门课程不能相同?答:该问题可以借助 MySQL 存储过程解决,该题超出本章知识点内容,请参看存 储过程章节内容。系统如何自动记录学生的选课时间?答:借助 MySQL 的 now()函数。如何统计每一门课程还可以供多少学生选修?如何统计人数已经报满的课程?如何统计某一个教师已经申报了哪些课程?如何统计某一个学生已经选修了多少门课程,是哪些课程?如何统计选修人数少于 30 人的所有课程信息?如何统计选修每一门课程的所有学生信息?答:上述统计信息超出本章知识点内容,请参看表记录的检索章节内容。课程信息删除后,如何保证选择该课程的学生可以选修其他课程?答:
16、可以通过外键约束级联删除实现,也可以通过触发器实现。如何通过搜索关键字检索自己感兴趣的课程信息?答:通过全文检索或者模糊查询like 关键字实现。第二章答案1通过本章的学习,您了解的 MySQL 有哪些特点?答:请参看 2.1.1 章节内容。2请您简单描述 MySQL 的使用流程。什么是 MySQL 客户机?登录主机与 MySQL 客 户机有什么关系?什么是 MySQL 会话?答:请参看 2.1.1 章节内容。MySQL 客户机:与 MySQL 服务器通话的客户端不止一种,比如 Windows 操作系统下 的命令行,可以直接通过命令建立与 mysql 数据库的通话,另外还有 phpmyadmi
17、n 、 MySQL 等图形化界面连接方式等。 本书经常使用的 MySQL 客户机程序 mysql.exe 存放在 C:Program FilesMySQLMySQLServer 5.6bin 目录。在一台登录主机上可以开启多个 MySQL 客户机。数据库用户访问 MySQL 服务器的数据时,首先需要选择一台登录主机,然后在该登录 主机上开启 MySQL 客户机, 输入正确的账户名、 密码, 建立一条 MySQL 客户机与 MySQL 服务器之间的“通信链路”。 通信链路断开之前,MySQL 客户机可以向 MySQL 服务器发送 多次“请求”,MySQL服务器会对每一次请求做出“响应”,请求 /
18、响应期间称为 MySQL 会 话。3通过 Google 或者 Baidu 搜索引擎, 搜索常用的 MySQL 客户端工具 (或者客户机程序) 有哪些。答案参见知乎,网址: https:/ 服务、 MySQL 服务实例、 MySQL 服务器分别是什么?什么是端口号?端口 号有什么作用?答:请参看 2.1.1 章节内容。5请列举 my.ini 配置文件中常用的参数选项组以及参数信息。答:请参看 2.1.5 章节内容。6启动 MySQL 服务的方法有哪些?停止 MySQL 服务的方法有哪些?答:请参看 2.1.4 章节内容。7 MySQL 客户机连接 MySQL 服务器的方法有哪些?连接 MySQL
19、 服务器时,需提供哪些 信息?答:请参看 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 脚本文件,并运行该脚本文件中的代码。答:请参看
20、 2.2.5 章节内容。14您所熟知的存储引擎有哪些? MyISAM 存储引擎与 InnoDB 存储引擎相比,您更喜 欢哪一个?它们都有什么特点?答:请参看 241 章节内容。15.创建 student 数据库,并在该数据库中创建student 表,用于保存您的个人信息(如姓名、性别、身份证号、出生日期等),并完成下列操作或问题。1)上述的 student 表有没有出现数据冗余现象?(提示:出生日期可以由身份证号推算 得出)答:出生日期可由身份证号计算得出,所以上述的stude nt 表存在数据冗余现象。2)student 数据库目录存放在数据库根目录中,默认情况下,根目录是什么?答: 使用命
21、令“ show variables like datadir:”可以查看参数 datadir 的值。 默认安装 MySQL 后,数据库根目录 datadir 的值为 “ C:/Docume nts and Sett in gs/AII Users/ApplicationData/MySQL/MySQL Server 5.6/Data/ ”。3)如何查看 student 数据库的结构。答:请参看 2.3.3 章节内容。4)如何查看 student 表的结构,并查看该表的默认字符集、字符序、存储引擎等信息。答:请参看 2.4.4 章节内容。5)student 数据库目录中存放了哪些文件?数据库根目
22、录中存放了哪些文件? 答:请参看 2.4.1章节内容。stude nt 数据库目录中存放了如下文件:(1)数据库文件(如 db.opt)(2)表名、后缀名为 frm 的表结构定义文件(3)如果 student 数据库中存在 InnoDB 存储引擎的独享表空间的表,则 student 数据库目录中还会存放一个名为表名.ibd”的数据文件。(4)如果 student 数据库中存在 MylSAM 存储引擎的表,则 student 数据库目录中会 存在一个文件名为表名、后缀名为 MYD (即 MYData 的简写)的数据文件以及文件名 为表名、后缀名为 MYI (即 MYIndex 的简写)的索引文件
23、。数据库根目录中存放如下文件以及目录(如下图所示):数据库目录(例如 test 数据库目录、stude nt 数据库目录)ib_logfileO 及 ibogfile1 是重做日志文件InnoDB 共享表空间文件 ibdata1 文件mysql-bi n.000001 等一系列二进制日志文件(该知识点超出本章范围) mysql-bin.index 二进制日志索引文件(该知识点超出本章范围) mysqld.exe 进程 ID 号 PID 文件f 文件:server_uuid:服务器身份 ID。在第一次启动 MySQL 时,会自动生成 一个server_uuid 并写入到数据库根目录下 f 文件里
24、,官方不建议修改。更甘H:Jfc mytqiIBcS-l.SlR,aiiKrltan*期山17诋Si立M1电切血JEBSBtfiijuihdul201WELft#1myql-bL 1X)000 3(MM2立并科El26WV13 2師対2518/103WBW13B1M1W72 IB垃WCW*彌1|_j myu) )l-baiiDDH5-EDHIH立Krnql-bLDO0qlblKlflE2WBWWSI#旧砂qlZWSOL*KL&n/SL 2WWKflLflHB11 1. nrul-iMindhINDEX HnIL,VIKL41Jai3-XOaN4Hd2O1W1TL J1M-3WDR16)
25、将个人信息插入到 student 表中,并查询 student 表的所有记录。create database stude nt;use stude nt;create table stude nt(n ame char(10) not n ull,sex char(3) not n ull,ID char(18) primary key);insert into student values(张三,男,410*001); select * from stude nt;7)在上一步骤的查询结果中是否出现了乱码?如果出现了乱码, 如何避免乱码问题的 发生?如果没有出现乱码,经过哪些设置可以产生乱码
26、?如果出现了乱码,重新删除数据库,重新设置字符集,再创建数据库和数据库表(要求 在同一个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 stude nt;use stude nt;creat
27、e table stude nt(n ame char(10) not n ull,sex char(3) not n ull,ID char(18) primary key);insert into student values(张三,男,410*001); select * from stude nt;如果没有出现乱码,经过哪些设置可以产生乱码:set n ames lati n1;select * from stude nt;8)您的个人信息存放到了哪个文件中?情形一: 如果 student 表是 MylSAM 存储引擎的表, 则则张三的数据存放在一个文 件名为 studnet后缀名为
28、MYD (即 MYData 的简写)的数据文件。情形二: 如果 student表是 InnoDB存储引擎的共享表空间的表, 则张三的数据存 放在 InnoDB共享表空间文件 ibdatal 数据文件。情形三:如果 student 表是 InnoDB 存储引擎的独享表空间的表,则张三的数据存 放在student.ibd”的数据文件。9) 如何修改 student 表的存储引擎?修改student 表的存储引擎后,您的个人信息存放 到了哪个文件中?答案:参考上一题。10)删除 student 表以及 student 数据库。use stude nt; drop table stude nt; dr
29、op database stude nt;16您所熟知的系统变量有哪些?如何设置系统变量的值? 答:请参看 2.5.2 章节内容。请参看2.5.3 章节内容。17 如何进行数据库备份和恢复?备份期间,有哪些注意事项? 答:请参看 2.6 章节内容。第三章答案1. MySQL 数据库类型有哪些?如何选择合适的数据类型? 答:请参看 3.1 章节内容。请参看3.1.7 章节内容。2. 简单总结 char(n)数据类型与 varchar(n)数据类型有哪些区另 U。 答:请参看 3.1.3 章节内容。3. datetime 与 timestamp 数据类型有什么区别?答:请参看 3.1.4 章节内容
30、。4. MySQL 模式与 MySQL 复合数据类型有什么关系? 答:请参看 3.1.5 章节内容。5.创建 SQL 脚本文件 choose.sql,书写 SQL 代码,运行 choose.sql,创建 choose 数 据库的 5 张表。con stra int course_teacher_fk foreig n key(teacher_ no) references teacher(teacher_ no) )engine=lnnoDBdefault charset=gbk; create table stude nt(stude nt_no char(11) primary key,
31、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(classno) )engine=lnnoDB default charset=gbk;create table choose(choose_ no int auto_ in creme nt primary key, stude nt_no char(11) not null,#学
32、生学号不允许为空course_no int n ot null,#课程号不允许为空score tinyint un sig ned,choose_time datetime not null,#选课时间可由 now()函数自动生成set character_set_clie nt = gbk; setcharacter_set_c onn ecti on = gbk; setcharacter_set_database = gbk; setcharacter_set_results = gbk; setcharacter_set_server = gbk; createdatabase cho
33、ose;use choose; create table teacher( teacher_no char(10) primary key, teacher_ namechar(10) not n ull, teacher_c on tactchar(20) not n ull )engine=lnnoDB defaultcharset=gbk; create table classes( class_no int auto_ in creme nt primary key, class_name char(20) not n ull uniq ue, department_n ame cha
34、r(20) not null )engine=lnnoDBdefault charset=gbk; create tablecourse( course_ no int auto_ in creme ntprimary key, course_ name char(10) not null, up_limit int default 60, description textnot nuII, status char(6) default 未审核,teacher_ no char(10) not n ull uniq ue,#教师姓名不允许为空#教师联系方式名不允许为空#班级名不允许为空、且不允
35、许重复#院系名不允许为空#课程名允许重复#课程上限设置默认值为 60#课程的描述信息为文本字符串text,且不能为空#课程状态的默认值为“未审核”#唯一性约束实现教师与课程之间1:1 关系#学号不允许重复#学生姓名不允许为空#学生联系方式不允许为空#学生的班级允许为空con stra int choose_stude nt_fk foreig n key(stude nt_no) references stude nt(stude nt_no), con stra intchoose_course_fk foreig n key(course_ no) referen ces course(c
36、ourse_ no) )engine=lnnoDB defaultcharset=gbk;6 .分析 choose 数据库的 5 张表的表结构, 通过这 5 张表, 可以解决选课系统”问题 域中的哪些问题?答:请参看第一章课后习题的答案。7.您是如何理解索引的?索引越多越好吗?答:请参看 3.5 章节内容。请参看 3.5.1 章节内容。&索引关键字的选取原则有哪些?答:请参看 3.5.2 章节内容。9您所熟知的索引种类有哪些?什么是全文索引?答:请参看 3.5.4 章节内容。全文索引与全文检索全文索引:当查询数据量大的字符串信息时,使用全文索引可以大幅提升字符串的检索效 率。需要注意的
37、是,全文索引只能创建在char、varchar 或者 text 字符串类型的字段上,且全文索引不支持前缀索引。全文检索是指以全部文本信息作为检索对象的一种信息检索技术。摘自http:/ 5.10 章节中,也给出了全文检索的定义:简单地说,MySQL 中的全文检索使用特定的分词技术,利用查询关键字和查询字段内容之间的相关度进行检索。通过全文索引可以提高文本匹配的速度。10 .索引与约束有什么关系?答:请参看 3.5.3 章节内容。第四章答案1. NUL 与 NULL 有什么区别?答:请参看 4.4 章节内容。2. truncate 与 delete 有什么区别?答:请参看 432 章节内容。3.
38、 更新操作与字符集有什么关系?答:如果更新语句中包含中文简体字符,应该合理地设置字符集,否则,将把乱码数据更新到数据库表中。详细请参看4.1.2 章节内容。4. 数据库表中自增型字段的值一定连续吗?答:请参看 4.1.3 章节内容。5. replace 语句与 insert 语句有什么区别?答:请参看 4.1.6 章节内容。6. 执行了 delete 语句后,表结构被删除了吗?使用什么命令可以删除表结构?答: delete 语句删除的是表中的记录,无法删除表结构;删除表结构可以使用 drop table命令。7.请读者向选课系统”choose数据库中的选课 choose表插入表 4-8所示的信
39、息,并 完成其他操作。表4-8向choose表添加的测试数据choose _nostudent_nocourse _noscorechoose _time12012001240服务器当前时间22012001150服务器当前时间32012002360服务器当前时间42012002270服务器当前时间52012003180服务器当前时间62012004290服务器当前时间720120053NULL服务器当前时间820120051NULL服务器当前时间(1)学生张三(student_no=2012001 )已经选修了课程 java 程序设计(course_no=1), 在选修时间截止前,他想把该课程
40、调换成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 course_ no=1 and stude nt_no=2012001:insert into choosevalues( null,2
41、012005,2, null, no w();(2)学生田七(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 nt no=2012005:(3)课程结束后,请录入某个学生的最终成绩,最终成绩=(原成绩*70%)+30。说明:题目修改为:课程结束后,请修改所有学生
42、的最终成绩,最终成绩=(原成绩*70%)+30use choose;update choose set score=score*0.7+30;(4)请解释学生的成绩为 NULL 值的含义,NULL 值等于零吗?答:成绩为 NULL 值,表示学生还没有考试该课程,成绩未知。成绩为零,表示学生 已经考试了该课程,成绩已知。第五章答案1 .简述 limit 以及 distinet 的用法。答:请参看 5.1.2 章节内容。2.什么是内连接、外连接?MySQL 支持哪些外连接?答:请参看 5.1.3 章节内容。3.NULL 参与算术运算、比较运算以及逻辑运算时,结果是什么?答:请参看 5.2.2 章节
43、内容。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()函数之间的区别?答:请参看 5.5.3 章节内容。9.什么是相关子查询与非相关子查询?答:如果子查询中仅仅使用了自己定义的数据源,不
44、依靠主查询,能够独立运行的子查询,这种查询是非相关子查询。 非相关子查询是独立于外部查询的子查询,子查询总共执行一次,执行完毕后将值传递给主查询。如果子查询中使用了主查询的数据源,这种查询是相关子查询, 此时主查询的执行与相关子查询的执行相互依赖。10.请编写 SQL 脚本, 输入选课系统综合查询章节内的select 语句。答:请参看 5.8 章节内容。11.MySQL 如何使用 like 关键字实现模糊查询?有什么注意事项?答:请参看 5.2.5 章节内容。12. MySQL 如何使用正则表达式实现模糊查询?答:请参看 5.9 章节内容。13. MySQL 如何进行全文检索?全文检索有什么注
45、意事项?答:请参看 5.10 章节内容。14.您觉得全文检索与 like 模糊查询、正则表达式模糊查询最大的区别是什么?答:全文检索:是指全文检索解析器(分词技术)通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户进行against 查询时,根据事先建立的全文索引进行查找,并将查找的结果反馈给用户。以全文检索“我们 is 中国人而自豪”为例。全文检索解析器可将该中文信息切分成:我们、is、中国、国人、人而、而自、自豪(这里以两个字为单位进行分割为例,实际情况更为复杂),并建立全文索引。当用户使用 con tai ns 语句查询“自豪”(为了区分,搜索关键
46、词是蓝色字)关键词时,此 时“自豪”(蓝色字)去匹配全文索引中的“ 自豪”(为了区分,索引关键词是红色字), 并将匹配到的结果“我们 is 中国人而自豪”返回!而使用 like 或者正则表达式查询“自豪”关键词时,并没有将“我们 is 中国人而自豪” 这句话分割,还是将整句话当作整体来看,然后通过字符串比较的方式,判断“自豪”字符串是不是“我们 is 中国人而自豪”字符串的子字符串。如果是,说明成功匹配,然后将匹 配到的结果“我们is 中国人而自豪”返回!因此:全文检索的核心是利用分词技术建立索引,继而利用索引加快字符串的匹配速度。like 或者正则表达式的核心是搜索关键词“自豪”字符串是不是
47、“我们 is 中国人而自豪”字符串的子字符串。15. 最新版本的 MySQL 中,InnoDB 存储引擎的表支持全文检索吗?答:支持16. MySQL 不支持完全连接,您能不能通过其他技术手段实现完全连接的功能?答:将左连接和右连接通过union 模拟实现完全连接。17.合并结果集时,union 与 union all 有什么区别?答:请参看 5.6 章节内容。18 给定一个教师的工号(例如 001),统计该教师已经申报了哪些课程。答:selectcourseno ,course_ name,up_limit,descriptio n,teacher.teacher_ no,teacher_
48、name,teacher_con tact,available,statusfrom course join teacher on course.teacher_ no=teacher.teacher_ nowhere teacher.teacher no = 001:第六章答案1使用 select 语句输出各种数据类型的常量时,数据类型都是如何转换的? 答:各种数据类型的常量会被自动转换为“字符串”再进行显示。2系统会话变量与用户会话变量有什么区别与联系? 答:请参看 6.1.2 章节内容。3用户会话变量与局部变量有什么区别与联系? 答:请参看 6.1.2 章节内容。4为用户会话变量或者局部
49、变量赋值时,有哪些注意事项? 答:请参看 6.1.2 章节内容。5编写 MySQL 存储程序时,为什么需要重置命令结束标记? 答:请参看 6.1.5 章节内容。6创建本书涉及到的所有自定义函数,并进行调用。 答:请参看本章内容。7总结哪些日期、时间函数的执行结果与时区的设置无关。 答:请参看 6.3.6 章节内容。8创建自定义函数有哪些注意事项?(1)自定义函数的函数体使用 select 语句时,该 select 语句不能产生结果集,否则 将产生编译错误。(2)自定义函数是数据库的对象, 因此, 创建自定义函数时, 需要指定该自定义函 数隶属于哪个数据库。(3)同一个数据库内, 自定义函数名不
50、能与已有的函数名 (包括系统函数名) 重名。 建议在自定义函数名中统一添加前缀“ fn_ ”或者后缀“ _fn”。(4)函数的参数无需使用 declare 命令定义,但它仍然是局部变量,且必须提供参 数的数据类型。自定义函数如果没有参数,则使用空参数“() ”即可。(5)函数创建成功后,记得将命令结束标记恢复“原状”。(6)函数必须指定返回值数据类型, 且须与 return 语句中的返回值的数据类型相近 长度可以不同)。9 请分析下面的 getdate()函数完成的功能,创建该函数,并调用该函数。use choose;Database changedn*ysql delimitev$丰FtSf
51、sql create function getdate retui*ns uapchar T no sql -begin- declare x varchar2S5? default ;T set x- date_f ormat return x;- end一$Quei*v OK, 0 rows affected C0,07 secmysql delimiter;nsql select g( (etdatenou;!et dateflou ii- +i201802月驱日11时钙分34秒!+_- - - +1POWin set insert 触发器和一个 beforeupdate 触发器。而同一
52、个表不能创建两个相同触发时间、触发事件的触发程序。 因此,为了实现本题功能,需要首先删除7.2.3 章节中的两个触发器。drop trigger choose_ in sert_before_trigger; drop trigger choose delete before trigger;然后再为 choose 表创建一个 after、insert 触发器和一个 after、update 触发器,自动维护 课程 available的字段值。delimiter $create trigger choose_ in sert_after_trigger after insert on choo
53、se for each row beginupdate 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 each row beginupdate course set available=available+1 where course_ no=old.course_ no; en d;$delimiter ;最后
54、,再为 choose 表创建一个 before insert 触发器和一个 before update 触发器实现 检查约束:一个学生某门课程的成绩score 要求在 0 到 100 之间取值。delimiter $create trigger choose_ in sert_before_trigger before insert on choose for each row beginif(n ew.score=0 & n ew.score=0 & n ew.score=100) the nset n ew.score = n ew.score;else in sert i
55、nto mytable values(0);end if;en d;$delimiter ;4. MySQL 触发器中的触发事件有几种?触发器的触发时间有几种? 答:请参看 7.2.1 章节内容。5创建触发器时,有哪些注意事项?答:本题修改为:使用触发器时,有哪些注意事项? 请参看 7.2.7 章节内容。6使用触发器可以实现哪些数据的自动维护? 答:使用触发器可以实现检查约束使用触发器可以自动维护冗余数据,例如课程 使用触发器可以模拟外键级联选项。7您是如何理解临时表的?临时表与基表有什么关系?答:请参看 7.3.1 章节内容。请参看 7.3.4 章节内容8您是如何理解视图、子查询、临时表、派
56、生表之间的关系的? 答:请参看 7.5 章节内容。available 的字段值。第八章答案1编写“选课系统”的存储过程,并对其进行调用、测试。答:请参看本章代码。2查看存储过程定义的方法有哪些?答:请参看 8.1.4 章节内容。3请罗列存储过程与函数的区别与联系。答:请参看 8.1.6 章节内容。4数据库开发人员定义错误处理机制时,需要提供错误处理类型、错误触发条件以及 错误处理程序等信息,错误处理类型有哪些?什么是错误触发条件以及错误处理程序?答:错误处理类型的取值要么是continue,要么是 exit。当错误处理类型是 continue 时,表示错误发生后, MySQL 立即执行自定义错
57、误处理程序,然后忽略该错误继续执行其他 MySQL 语句。当错误处理类型是 exit 时,表示错误发生后,MySQL 立即执行自定义错误处理程序,然后立刻停止其他 MySQL 语句的执行。错误触发条件以及错误处理程序,请参看8.2.1 章节内容。5游标的使用步骤是什么?每一个步骤完成什么任务? 答:请参看 8.3.1 章节内容。6举例说明,如何遍历游标中的“结果集”。答:请参看 8.3.2 章节内容。7使用预处理 SQL 语句有哪些注意事项?预处理 SQL 语句与静态 SQL 语句有什么 区别和联系?答: 注意事项请参看 8.4.1 章节内容; 预处理 SQL 语句与静态 SQL 语句有什么区
58、别 和联系请参看 8.4.4章节内容。第九章答案1请简单描述事务的必要性。答:请参看 9.1.1 章节内容。2关闭 MySQL 自动提交的方法有哪些?您推荐数据库开发人员使用哪一种方法?答:请参 看 9.1.2 章节内容。推荐数据库开发人员尽可能地使 用 MySQL 命 令start transaction; ”隐式地关闭自动提交,使用MySQL 命令commit; ”显示地提交更新语句。3关闭 MySQL 自动提交后,提交更新语句的方法有哪些?您推荐数据库开发人员使用哪一 种方法?答:请参 看 9.1.4 章节内容。推荐数据库开发人员尽可能地使用 MySQL 命 令start transac
59、tion; ”隐式地关闭自动提交,使用MySQL 命令commit; ”显示地提交更新语句。4请简单描述典型的事务处理使用方法。答:请参看 9.1.5 章节内容。5请简单描述典型的事务保存点使用方法。您是如何理解保存点是“临时状态”这句 话的?答:请参看 9.1.6 章节内容。6请简单描述锁机制的必要性。答:请参看 9.2.1 章节内容。7为 MyISAM 表施加表级锁的语法格式是什么?答:请参看 9.2.3 章节内容。8.为 MylSAM 表施加表级锁时,read local 与 read 选项有什么区别?答:请参看 9.2.3 章节内容。9.您是如何理解锁的粒度、隐式锁与显式锁、锁的类型、
60、锁的钥匙以及锁的生命周期 等概念的?答:请参看 9.2.2 章节内容。10. 您如何理解锁的粒度、锁的生命周期与数据库的并发性能之间的关系? 答:锁的粒度越小,锁的生命周期越短,数据库的并发性能就越高,数据库越适合做并发更新操作。反之亦然。11. 您如何理解锁的粒度、锁的生命周期与服务器资源之间的关系? 答:锁粒度越小,完成某个功能时所需要的加锁、解锁的次数就会越多,反而会消耗较多的服务器资源, 甚至会出现资源的恶性竞争,甚至发生死锁问题。 锁是数据库管理系统重要的数据库资源, 需要耗费一定的服务器内存,锁的生命周期越长, 该锁占用服务器内存的时间间隔就越长; 锁的生命周期越短, 该锁占用服务器内存的时间间隔就越短。 因此为了节 省服务
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 驾驶员安全行车档案管理制度(2篇)
- 河南省周口市沈丘县两校2025-2026学年七年级上学期12月月考语文试题(含答案)(含解析)
- 2026年国家科技创新政策解读与应用考试
- 2026年南京信息职业技术学院单招职业倾向性考试题库附答案详解(夺分金卷)
- 2026年信阳艺术职业学院单招职业适应性测试题库附参考答案详解(达标题)
- 2026年伊犁职业技术学院单招职业适应性测试题库带答案详解(新)
- 2026年信阳涉外职业技术学院单招职业技能考试题库及完整答案详解1套
- 2026年保定幼儿师范高等专科学校单招职业倾向性测试题库附参考答案详解(能力提升)
- 2026年兰州外语职业学院单招职业适应性考试题库带答案详解(典型题)
- 2026年南京铁道职业技术学院单招职业倾向性考试题库附答案详解(满分必刷)
- 2026届湖南省长郡中学生物高三上期末学业质量监测模拟试题含解析
- 2025eber原位杂交检测技术专家共识解读 (1)课件
- 2026年抖音小店开店运营实操指南
- 老年友善医院创建-社区卫生服务中心员工手册
- 教练型上司培训
- 古罗马公共建筑与政治象征
- 加油站反恐应急预案(3篇)
- 农小蜂-2025年中国大豆进出口贸易数据分析简报
- 宫腔镜手术围手术期护理
- 2024年中考历史真题解析(安徽试卷)
- 2025美国急性冠脉综合征(ACS)患者管理指南解读课件
评论
0/150
提交评论