1、实验 1 MySQL 数据库服务器配置(预备知识:第 1,2 章;分值:16 分;需辅导教师评分)1. 实验目的掌握 MySQL 的安装方法,练习 MySQL 数据库服务器的使用,理解 MySQL 服务器的组成,掌握 MySQL 服务器的配置方法。2. 实验内容【实验 1-1】下载当前最新版本的 MySQL,或者之前某个版本的 MySQL, 并在 Windows 上完成安装。【实验 1-2】安装完毕后,找到MySQL 的配置文件;并查看初始化配置文件的内容。【实验 1-3】使用 start 和 stop 命令启动和关闭 mysql 数据库。【实验 1-4】连接到 MySQL 服务器,连接成功后
2、是一个 mysql的提示。【实验 1-5】在MySQL 数据库服务器端找到错误日志文件,并查看错误日志的内容。【实验 1-6】通过初始化配置文件,启用二进制日志、慢查询日志和通用查询日志。【实验 1-7】查看二进制日志、慢查询日志和通用查询日志的内容。【实验 1-8】关闭二进制日志、慢查询日志和通用查询日志。【实验 1-9】用 CREATE DATABASE 语句创建数据库,使用 SHOW DATABASES 命令查看显示所有数据库,可以看到新建的数据库名称。【实验 1-10】使用 Workbench 图形化管理工具创建数据库。【实验 1-11】使用 SHOW STATUS 命令查看系统状态参
3、数;使用 SHOW VARIABLES 命令查看服务器变量设置。【实验 1-12】使用命令“select basedir”和“select datadir” 寻找到 MySQL 的安装目录和数据存放目录。【实验 1-13】使用 SHOW ENGINES 查看所有引擎,在配置文件中更改默认存储引擎 default-storage-engine 变量,改为 MyISAM。重启 MySQL,查看默认存储引擎是否改变。【实验 1-14】创建一个数据表 t_myisam(id int auto_increment, name varchar(30),primary key(id),创建时显式指定存储引擎
4、为 MyISAM。使用“ALTER TABLE TABLE_NAME ENGINE=ENGINE_NAME ”语句,更改表t_myisam 的存储引擎为 InnoDB。【实验 1-15】使用“SHOW TABLE STATUS FROM DB_NAME WHERE NAME =TABLE_NAME”和“SHOW CREATE TABLE TABLE_NAME”命令查看数据库 DB_NAME 下表 TABLE_NAME 的存储引擎。【实验 1-16】InnoDB 的 I/O 相关配置,根据公式:事务日志的总大小= Innodb_log_files_size *Innodb_log_files_i
5、n_group 来设置 64M 大小的事务日志缓冲区并设置在每次事务提交执行 log 写入cache,并 flush 到磁盘。3. 实验要求(1) 所有操作均在命令行或者 MySQL Workbench 中完成。(2) 将操作过程以屏幕抓图的方式复制,形成实验文档,并对照本章内容写出分析报告。实验 2 MySQL 数据库对象管理(预备知识:第 3 章; 分值:16 分;需辅导教师评分)1. 实验目的理解数据字典、表、索引、视图的作用,掌握数据字典的操纵方式,掌握库、表、索引、视图的操作方法。2. 实验内容【实验 2-1】查看 INFORMATION_SCHEMA.SCHEMATA 表中的信息。
6、【实验 2-2】查看 INFORMATION_SCHEMA.TABLES 表中的信息。【实验 2-3】查看 INFORMATION_SCHEMA.COLUMNS 表中的信息。【实验 2-4】查看 INFORMATION_SCHEMA.STATISTICS 表中的信息。【实验 2-5】查看 INFORMATION_SCHEMA.CHARACTER_SETS 表中的信息。【实验 2-6】查看 INFORMATION_SCHEMA.COLLATIONS 表中的信息。【实验 2-7】使用 CREATE DABASE 语句创建 school 数据库。【实验 2-8】将 school 数据库的字符集设为
7、utf-8。【实验 2-9】在 school 数据库下创建 stu_info 表,包括 stuno varchar(10)、stuname varchar(8)、stubir date、stuage int;创建表course,包括courno varchar(3) 、 courname varchar(10) 、 schyear date 、 credit int ; 创建stuandcour 表,包括 stuno varchar(10)、courno varchar(3)、grade int。【实验 2-10】使用 SHOW、DESCRIBE 语句查看所建的表。【实验 2-11】使用 AL
8、TER TABLE 语句将 stuinfo 表的表名改为 stuinfo, 并且增加 stugender varchar(4)字段,将 course 表中 courno 字段的类型改为varchar(5)。【实验 2-12】将前边建的表复制到 test 数据库中,如果没有 test 数据库就新建一个。【实验 2-13】删除 test 数据库中的 course 表。【实验 2-14】创建 stuinfo 表上 stuno 的索引。【实验 2-15】创建 stuandcour 表上 stuno 字段和 courno 字段上的多列索引。【实验 2-16】删除创建的索引。【实验 2-17】创建 stu
9、info 表上的单源视图。【实验 2-18】创建 stuinfo 表和 stuandcour 上的多源视图,包含 stuno、stuname、courno、grade。【实验 2-19】分别通过访问 information_schema 的 views 表和 tables 表,查看已经创建好的视图;使用 DESCRIBE 语句查看已经创建好的视图。【实验 2-20】使用 SELECT 语句查询创建好的视图。3. 实验要求(1) 所有操作均在命令行或者 MySQL Workbench 中完成。(2) 将操作过程以屏幕抓图的方式复制,形成实验文档,并对照本章内容写出分析报告。实验 3 数据库安全性
10、与完整性控制实验(预备知识: 第 4 章;分值:16 分;需辅导教师评分)1. 实验目的练习安全性授权方法、安全性和完整性查看的操作方法。2. 实验内容【实验 3-1】使用 create user 创建用户,创建单个用户 teacher,创建两个用户 teacher1 和 student。【实验 3-2】通过直接操作MySQL 用户表创建用户,创建单个用户teacher2,创建两个用户 teacher3 和 student2(请注意,新版的 MySQL 可能不支持使用此方法创建新用户)。【实验 3-3】新建一个 terminal 窗口,使用 mysql u h -p 方式登录teacher。【
11、实验 3-4】再次新建一个 terminal 窗口,使用 mysql u h -p 方式登录 student。【实验 3-5】使用 GRANT 语句对用户 student 赋予所有数据库所有表的insert 权限和 update 权限。【实验 3-6】使用 GRANT 语句对用户 student 赋予 school 数据库所有表的 select 权限。【实验 3-7】使用 GRANT 语句对用户 student 赋予 school 数据库 stuinfo 表的 create 访问权限。【实验 3-8】使用 GRANT 语句对用户 student 赋予 school 数据库 stuinfo 表的
12、 stuno 列上的 select 访问权限。【实验 3-9】使用 GRANT 语句对用户 student 赋予 s 所有数据库所有表的select 访问权限,并设定 student 每小时最多可使用 select 操作访问数据库的次数。【实验 3-10】查看表 INFORMATION_SCHEMA.USER_PRIVILEGES 中有关 student 的信息,查看 user 表中的内容信息。【实验 3-11】查看表 INFORMATION_SCHEMA.SCHEMA_PRIVILEGES,找到 student 在 school 数据库下拥有的权限。【实验 3-12】查看表INFORMATI
13、ON_SCHEMA.TABLE_PRIVILEGES,查找 school 数据库中 stuinfo 数据表相关的表权限。【实验 3-13】查看表 INFORMATION_SCHEMA.COLUMN_PRIVILEGES,查找用户 sutdent 的其中一条记录,其数据库为 school,表名为 stuinfo,列名为 stuno,查看其授予权限类型。【实验 3-14】首先进入 school 数据库,如果没有,创建一个 school 数据库。创建 stuinfo 表,包括 stuno varchar(10)(加非空约束和主键约束)、stuname varchar(8)、stubir date、s
14、tuage int。创建表 course ,包括 courno varchar(3) ( 非空约 束) 、courname varchar(10)、schyear date(非空约束)、credit int,主键为课程号 courno 和学年 schyear。创建 stuandcour 表,包括 stuno varchar(10)、courno varchar(3)、chono varchar(10),定义其主键为选课号 chono,stuno 为外键,参考 stuinfo 中的stuno 列。上述操作完成后,继续向 stuandcour 数据表中添加新的字段 schyear date,添加外
15、键(courno,schyear)参照 course 表中的 courno,并删除时置空值。【实验 3-15】查看表 INFORMATION_SCHEMA.TABLES存放数据库中所有数据库表信息,所得到的记录值有很多条,然后观察其内部字段表示,进一步筛选表名为 stuinfo 的记录,school 数据库 stuinfo 表的所有基本信息都在这里描述。【实验 3-16】查看表 INFORMATION_SCHEMA.TABLE_CONSTRAINTS存放表中所存在的约束信息。进一步筛选表名为 stuandcour 的记录信息, 可以看到关于该表有三条约束信息,与我们设定的一样,其拥有两个外键和
16、一个主键。尽管这三种约束涉及四个列字段,但是基于表层面还是三个约束,因为有一个外键是由两个列组成的。【实验 3-17】查看表 INFORMATION_SCHEMA.KEY_COLUMN_USAGE存放数据库里所有具有约束的键信息,然后通过对表名筛选,选出表stuandcour 的所有以列为单位的约束信息,通过观察可以得出该查询结果与table 级 别 约 束 的 查 询 结 果 个 数 不 同 , 这 里 出 现 四 个 结 果 , 列 名COLUMN_NAME 部分涉及 stuandcour 表中所有约束包含的全部列。据我们所知,stuandcour 表的主键为 chono,为第一行结果;第
17、一个外键只有一列, 该列为 stuno,出现在第二行结果;第二个外键含有两列,分别为 courno、schyear,出现在第三行、第四行。3. 实验要求(1) 所有操作均在命令行或者 MySQL Workbench 中完成。(2) 将操作过程以屏幕抓图的方式复制,形成实验文档,并对照本章内容写出分析报告。实验 4 数据库备份与恢复实验(预备知识:第 5 章; 分值:16 分;需辅导教师评分)1. 实验目的练习数据库备份与恢复的操作方法。说明:实验过程中可以使用 MySQL 官网 提 供 实 例 employees 数 据 库 , 下 载 地 址 为2. 实验内容【实验 4-1】使用 selec
18、tintooutfile 语句对数据库 employees 的表departments 进行数据导出。【实验 4-2】使用 selectintooutfile 语句对数据库 employees 的表salaries 进行数据导出,并使用 fields 字句指定字段值之间的符号分隔符为“,”, 字段的包裹符号为“”。【实验 4-3】 使用 mysqldump 命令备份数据库中的某个表,对数据库employees 的表 deparments 导出 SQL 语句。【实验4-4】使用mysqldump 命令备份单个数据库,对数据库employees 的导出 SQL 语句,并忽略数据表 departme
19、nts。【实验4-5】使用mysqldump 命令备份多个数据库,对数据库employees、test 两个数据库导出 SQL 语句。【实验 4-6】使用 mysqldump 命令导出界定格式文件数据,对数据库employees 进行 CSV 文件数据的导出。【实验 4-7】使用图形化工具 MySQL Workbench 导出数据库 employees 的表 departments 的 CSV 格式数据。【实验 4-8】使用图形化工具 MySQL Workbench 导出数据库 employees 的表 departments 的 SQL 文件。【实验 4-9】使用 DELETE 语句删除 e
20、mployees 数据库的表 departments 的表格数据,使用 LOAD DATA INFILE 语句,通过【实验 5-1】导出的文件, 对删除的数据进行恢复,并使用 SELECT 语句对恢复的数据进行检查。【实验 4-10】 使用 DELETE 语句删除 employees 数据的表 salaries 的表格数据,使用 LOAD DATA INFILE 语句以及 FIELDS 子句,通过【实验 5-2】导出的文件,对删除的数据进行恢复,即字段值之间的符号分隔符为“ ,”,字段的包裹符号为“”。【实验 4-11】使用 DELETE 语句删除 employees 数据的表 salarie
21、s 的表格数据,使用 mysqlimport 命令,通过【实验 5-2】导出的文件,对删除的数据进行恢复,即字段值之间的符号分隔符为“,”,字段的包裹符号为“”。【实验 4-12】使用 DROP 命令 employees 数据库下的除 departments 的所有数据表及其数据,使用 mysql 命令行工具,通过【实验 5-4】导出的 SQL 文件恢复删除的数据。【实验 4-13】使用 DROP 命令删除数据库 employees 和数据库 test,使用 SOURCE 语句,通过【实验 5-5】导出的 SQL 文件恢复删除的数据。【实验 4-14】 删除数据库 employees 的表 d
22、epartments 中的数据,使用图形化工具 MySQL Workbench,通过【实验 5-7】恢复删除的数据。【实验 4-15】删除数据库 employees 的表 departments 及其数据,使用图形化工具 MySQL Workbench,通过【实验 5-8】恢复删除的数据。【实验 4-16】在时间点 A 使用 mysqldump 命令对数据库 employees 导出 SQL 文件,进行逻辑备份,备份完成,创建一个表 test,并插入数据,在时间点 B 删除创建的表 test,在时间点 C 再次创建一个表 test2,并插入一条数据。在这个操作过程中在时间点 B 删除表 tes
23、t 是误操作。使用 mysqlbinlog 进行基于时间点的恢复操作,即经过恢复之后 employees 数据库中会同时存在数据表test2 和数据表 test。3. 实验要求(1) 所有操作均在命令行或者 MySQL Workbench 中完成。(2) 将操作过程以屏幕抓图的方式复制,形成实验文档,并对照本章内容写出分析报告。实验 5 数据库性能监视与优化实验(预备知识:第六章;分值:16 分;需辅导教师评分)1. 实验目的理解数据库性能概念,练习数据库性能监视命令方法,能够对数据库性能进行优化。2. 实验内容【实验 5-1】使用 SHOW 语句查询设备吞吐量 Questions、Com_S
24、elect、Com_insert、Com_update、Com_delete 几个指标值。【 实 验 5-2 】 访 问 Performance_schema 中 的events_statements_summary_by_digest 表,获取有关的延迟、错误和查询量信息的性能指标。【实验 5-3】使用 SHOW 语句查询连接检查指标 Threads_connected、Threads_running 、 Connection_errors_internal 、 Aborted_connects 和Connection_errors_max_connections。【 实 验 5-4 】 使
25、 用 SHOW 语 句 查 询 Innodb 缓 冲 区 指 标Innodb_buffer_pool_pages_total 、 Innodb_buffer_pool_read_requests 、Innodb_buffer_pool_reads。【 实验 5-5 】 使用 SHOW 语句获取与查询缓冲相关 的指标: Qcache_free_blocks、Qcache_free_memory、Qcache_hits、Qcache_inserts、Qcache_lowmem_prunes、Qcache_not_cached、Qcache_queries_in_cache、Qcache_total
26、_blocks。、【 实 验5-6 】 使 用SHOW语 句 获 取 关 于 临 时 表 的 指 标Created_tmp_disk_tables、Created_tmp_files、Created_tmp_tables。【实验 5-7】使用 SHOW 语句获取访问表的数量指标 Open_tables 和Opened_tables。【实验 5-8】使用 SHOW PROCESSLIST 命令查询用户正在运行的线程信息协助进行故障诊断。【实验 5-9】调出慢查询日志并利用 mysqldumpslow 来进行日志分析。【实验 5-10】使用 EXPLAIN EXTENDED 命令查看带有 UNIO
27、N 子句的SELECT 的执行计划。【实验 5-11】使用 EXPLAIN EXTENDED 命令查看如下语句的执行计划:SELECT * FROM t1 WHERE a110 AND (EXISTS (SELECT a2 FROM t2 WHERE t2.a25 ANDt2.b2=1) OREXISTS (SELECT a2 FROM t2 WHERE t2.a210) v_t2WHERE t1.a110 AND v_t2.a220;【实验 5-13】创建一个表,并在适当字段上创建索引,对比在大数据量情形下使用索引与不使用索引的性能。【实验 5-14】使用 PROCEDURE ANALYSE 检查表列。【实验 5-15】使用 Inet_ATON 将 IP 地址 192.128.1.1 转换为数字,再将2130706433 转换为 IP 地址。【实验 5-16】进行简单的关联查询代替子查询的重写操作,并验证其正确性和执行效率的变化。【实验 5-17】查询 SQL 的最大连接数并修改其至合适的数值。3. 实验要求(1) 所有操作均在命令行或者 MySQL Workbench 中完成。(2) 将操作过程以屏幕抓图的方式复制,形成实验文档,并对照本章内容写出分析报告。(3) 将操作所使用的命令对应的参数、参数含义、返回的内容、返回内容的含义整理到分析报告中一同给出。