好文档 - 专业文书写作范文服务资料分享网站

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

天下 分享 时间: 加入收藏 我要投稿 点赞

1)上述的student表有没有出现数据冗余现象?(提示:出生日期可以由身份证号推算得出)

答:出生日期可由身份证号计算得出,所以上述的student表存在数据冗余现象。 2)student数据库目录存放在数据库根目录中,默认情况下,根目录是什么?

答:使用命令“show variables like 'datadir';”可以查看参数datadir的值。默认安装MySQL后,数据库根目录datadir的值为“C:/Documents and Settings/All Users/Application Data/MySQL/MySQL Server Data/”。

3)如何查看student数据库的结构。 答:请参看章节内容。

4)如何查看student表的结构,并查看该表的默认字符集、字符序、存储引擎等信息。 答:请参看章节内容。

5)student数据库目录中存放了哪些文件?数据库根目录中存放了哪些文件? 答:请参看章节内容。

student数据库目录中存放了如下文件:

(1) 数据库文件(如)

(2) 表名、后缀名为frm的表结构定义文件

(3) 如果student数据库中存在InnoDB存储引擎的独享表空间的表,则student数据库目录中还会存放一个名为“表名.ibd”的数据文件。

(4) 如果student数据库中存在MyISAM存储引擎的表,则student数据库目录中会存在一个文件名为表名、后缀名为MYD(即MYData的简写)的数据文件以及文件名为表名、后缀名为MYI(即MYIndex的简写)的索引文件。 数据库根目录中存放如下文件以及目录(如下图所示):

数据库目录(例如test数据库目录、student数据库目录) ib_logfile0及ib_logfile1是重做日志文件 InnoDB共享表空间文件ibdata1文件

等一系列二进制日志文件(该知识点超出本章范围) 二进制日志索引文件(该知识点超出本章范围) 进程ID号PID文件

文件:server_uuid:服务器身份ID。在第一次启动MySQL时,会自动生成一个server_uuid并写入到数据库根目录下文件里,官方不建议修改。

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存储引擎的独享表空间的表,则张三的数据存放在“”的数据文件。

9)如何修改student表的存储引擎?修改student表的存储引擎后,您的个人信息存放到了哪个文件中?

答案:参考上一题。

10)删除student表以及student数据库。 use student; drop table student; drop database student; 16.您所熟知的系统变量有哪些?如何设置系统变量的值? 答:请参看章节内容。请参看章节内容。

17.如何进行数据库备份和恢复?备份期间,有哪些注意事项? 答:请参看章节内容。

第三章答案

1.MySQL数据库类型有哪些?如何选择合适的数据类型? 答:请参看章节内容。请参看章节内容。

2.简单总结char(n)数据类型与varchar(n)数据类型有哪些区别。 答:请参看章节内容。

3.datetime与timestamp数据类型有什么区别? 答:请参看章节内容。

4.MySQL模式与MySQL复合数据类型有什么关系? 答:请参看章节内容。

5.创建SQL脚本文件,书写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.您是如何理解索引的?索引越多越好吗? 答:请参看章节内容。请参看章节内容。

8.索引关键字的选取原则有哪些? 答:请参看章节内容。

9.您所熟知的索引种类有哪些?什么是全文索引? 答:请参看章节内容。 全文索引与全文检索

全文索引:当查询数据量大的字符串信息时,使用全文索引可以大幅提升字符串的检索效率。需要注意的是,全文索引只能创建在char、varchar或者text字符串类型的字段上,且全文索引不支持前缀索引。

全文检索是指以全部文本信息作为检索对象的一种信息检索技术。 摘自全文检索

本书章节中,也给出了全文检索的定义:简单地说,MySQL中的全文检索使用特定的分词技术,利用查询关键字和查询字段内容之间的相关度进行检索。通过全文索引可以提高文本匹配的速度。

10.索引与约束有什么关系? 答:请参看章节内容。

第四章答案

1.NUL与NULL有什么区别? 答:请参看章节内容。

2.truncate与delete有什么区别? 答:请参看章节内容。

3.更新操作与字符集有什么关系?

答:如果更新语句中包含中文简体字符,应该合理地设置字符集,否则,将把乱码数据更新到数据库表中。详细请参看章节内容。

4.数据库表中自增型字段的值一定连续吗? 答:请参看章节内容。

5.replace语句与insert语句有什么区别? 答:请参看章节内容。

6.执行了delete语句后,表结构被删除了吗?使用什么命令可以删除表结构? 答:delete语句删除的是表中的记录,无法删除表结构;删除表结构可以使用drop table命令。

7.请读者向“选课系统”choose数据库中的选课choose表插入表4-8所示的信息,并完成其他操作。

表4-8

choose_no 1 2 3 4 5 6 7 8 向choose表添加的测试数据

student_no 2012001 2012001 2012002 2012002 2012003 2012004 2012005 2012005 course_no 2 1 3 2 1 2 3 1 score 40 50 60 70 80 90 NULL NULL choose_time 服务器当前时间 服务器当前时间 服务器当前时间 服务器当前时间 服务器当前时间 服务器当前时间 服务器当前时间 服务器当前时间 (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),由

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

1)上述的student表有没有出现数据冗余现象?(提示:出生日期可以由身份证号推算得出)答:出生日期可由身份证号计算得出,所以上述的student表存在数据冗余现象。2)student数据库目录存放在数据库根目录中,默认情况下,根目录是什么?答:使用命令“showvariableslike'datadir';”可以查看参数datadir的值。默认安装
推荐度:
点击下载文档文档为doc格式
2ql4o04gqt5gf8x599ez10e609m8f001ba4
领取福利

微信扫码领取福利

微信扫码分享