实验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服务器,连接成功后是一个mysql>的提示。
【实验1-5】在MySQL数据库服务器端找到错误日志文件,并查看错误日志的内容。
【实验1-6】通过初始化配置文件,启用二进制日志、慢查询日志和通用查询日志。
【实验1-7】查看二进制日志、慢查询日志和通用查询日志的内容。
【实验1-8】关闭二进制日志、慢查询日志和通用查询日志。
【实验1-9】用CREATE DATABASE语句创建数据库,使用SHOW DATABASES命令查看显示所有数据库,可以看到新建的数据库名称。
【实验1-10】使用Workbench图形化管理工具创建数据库。
【实验1-11】使用SHOW STATUS命令查看系统状态参数;使用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)),创建时显式指定存储引擎为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_in_group
来设置64M大小的事务日志缓冲区并设置在每次事务提交执行log写入cache,并flush到磁盘。
3.实验要求
(1)所有操作均在命令行或者MySQL Workbench中完成。
(2)将操作过程以屏幕抓图的方式复制,形成实验文档,并对照本章内容写出分析报告。
实验2 MySQL数据库对象管理(预备知识:第3章;分值:16分;需辅导教师评分)
1. 实验目的
理解数据字典、表、索引、视图的作用, 掌握数据字典的操纵方式,掌握库、表、索引、视图的操作方法。
2. 实验内容
【实验2-1】查看INFORMATION_SCHEMA.SCHEMATA 表中的信息。
【实验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数据库的字符集设为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】使用ALTER 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】创建stuinfo表上的单源视图。
【实验2-18】创建stuinfo表和stuandcour上的多源视图,包含stuno、stuname、courno、grade。
【实验2-19】分别通过访问information_schema的views表和tables表,查看已经创建好的视图;使用DESCRIBE语句查看已经创建好的视图。
【实验2-20】使用SELECT语句查询创建好的视图。
3. 实验要求
(1)所有操作均在命令行或者MySQL Workbench中完成。
(2)将操作过程以屏幕抓图的方式复制,形成实验文档,并对照本章内容写出分析报告。
实验3 数据库安全性与完整性控制实验(预备知识:第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。
【实验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表的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】查看表INFORMATION_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、stuage 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,添加外键(courno,schyear)参照course表中的courno,并删除时置空值。
【实验3-15】查看表INFORMATION_SCHEMA.TABLES——存放数据库中所有数据库表信息,所得到的记录值有很多条,然后观察其内部字段表示,进一步筛选表名为stuinfo的记录,school数据库stuinfo表的所有基本信息都在这里描述。
【实验3-16】查看表INFORMATION_SCHEMA.TABLE_CONSTRAINTS——存放表中所存在的约束信息。进一步筛选表名为stuandcour的记录信息,可以看到关于该表有三条约束信息,与我们设定的一样,其拥有两个外键和一个主键。尽管这三种约束涉及四个列字段,但是基于表层面还是三个约束,因为有一个外键是由两个列组成的。
【实验3-17】查看表INFORMATION_SCHEMA.KEY_COLUMN_USAGE——存放数据库里所有具有约束的键信息,然后通过对表名筛选,选出表stuandcour的所有以列为单位的约束信息,通过观察可以得出该查询结果与table级别约束的查询结果个数不同,这里出现四个结果,列名COLUMN_NAME部分涉及stuandcour表中所有约束包含的全部列。据我们所知,stuandcour表的主键为chono,为第一行结果;第一个外键只有一列,该列为stuno,出现在第二行结果;第二个外键含有两列,分别为courno、schyear,出现在第三行、第四行。
3.实验要求
(1)所有操作均在命令行或者MySQL Workbench中完成。
(2)将操作过程以屏幕抓图的方式复制,形成实验文档,并对照本章内容写出分析报告。
实验4 数据库备份与恢复实验(预备知识:第5章;分值:16分;需辅导教师评分)
1.实验目的
练习数据库备份与恢复的操作方法。 说明:实验过程中可以使用MySQL官网提供实例employees数据库,下载地址为https://launchpad.net/test-db/employees-db-1/1.0.6,也可以自己创建数据库进行备份恢复实验。
2.实验内容
【实验5-1】使用select…into…outfile语句对数据库employees的表departments进行数据导出。
【实验5-2】使用select…into…outfile语句对数据库employees的表salaries进行数据导出,并使用fields字句指定字段值之间的符号分隔符为“,”,字段的包裹符号为“””。
【实验5-3】 使用mysqldump命令备份数据库中的某个表,对数据库employees的表deparments导出SQL语句。
【实验5-4】 使用mysqldump命令备份单个数据库,对数据库employees的导出SQL语句,并忽略数据表departments。
【实验5-5】使用mysqldump命令备份多个数据库,对数据库employees、test两个数据库导出SQL语句。
【实验5-6】使用mysqldump命令导出界定格式文件数据,对数据库employees进行CSV文件数据的导出。
【实验5-7】使用图形化工具MySQL Workbench导出数据库employees的表departments的CSV格式数据。
【实验5-8】使用图形化工具MySQL Workbench导出数据库employees的表departments的SQL文件。
【实验5-9】使用DELETE语句删除employees数据库的表departments的表格数据,使用LOAD DATA INFILE语句,通过【实验5-1】导出的文件,对删除的数据进行恢复,并使用SELECT语句对恢复的数据进行检查。
【实验5-10】 使用DELETE语句删除employees数据的表salaries的表格数据,使用LOAD DATA INFILE语句以及FIELDS子句,通过【实验5-2】导出的文件,对删除的数据进行恢复,即字段值之间的符号分隔符为“,”,字段的包裹符号为“””。
【实验5-11】使用DELETE语句删除employees数据的表salaries的表格数据,使用mysqlimport命令,通过【实验5-2】导出的文件,对删除的数据进行恢复,即字段值之间的符号分隔符为“,”,字段的包裹符号为“””。
【实验5-12】使用DROP命令employees数据库下的除departments的所有数据表及其数据,使用mysql命令行工具,通过【实验5-4】导出的SQL文件恢复删除的数据。
【实验5-13】使用DROP命令删除数据库employees和数据库test,使用SOURCE语句,通过【实验5-5】导出的SQL文件恢复删除的数据。
【实验5-14】 删除数据库employees的表departments中的数据,使用图形化工具MySQL Workbench,通过【实验5-7】恢复删除的数据。
【实验5-15】删除数据库employees的表departments及其数据,使用图形化工具MySQL Workbench,通过【实验5-8】恢复删除的数据。
【实验5-16】在时间点A使用mysqldump命令对数据库employees导出SQL文件,进行逻辑备份,备份完成,创建一个表test,并插入数据,在时间点B删除创建的表test,在时间点C再次创建一个表test2,并插入一条数据。在这个操作过程中在时间点B删除表test是误操作。使用mysqlbinlog进行基于时间点的恢复操作,即经过恢复之后employees数据库中会同时存在数据表test2和数据表test。
3.实验要求
(1)所有操作均在命令行或者MySQL Workbench中完成。
(2)将操作过程以屏幕抓图的方式复制,形成实验文档,并对照本章内容写出分析报告。
实验5 数据库性能监视与优化实验(预备知识:第六章;分值:16分;需辅导教师评分)
1.实验目的
理解数据库性能概念,练习数据库性能监视命令方法, 能够对数据库性能进行优化。
2.实验内容
【实验5-1】使用SHOW语句查询设备吞吐量Questions、Com_Select、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】使用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_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命令查看带有UNION子句的SELECT的执行计划。
【实验5-11】使用EXPLAIN EXTENDED命令查看如下语句的执行计划:
SELECT * FROM t1 WHERE a1<10 AND (
EXISTS (SELECT a2 FROM t2 WHERE t2.a2<5 AND t2.b2=1) OR
EXISTS (SELECT a2 FROM t2 WHERE t2.a2<5 AND t2.b2=2));
【实验5-12】使用EXPLAIN EXTENDED命令查看如下语句的执行计划:
SELECT * FROM t1, (SELECT * FROM t2 WHERE t2.a2 >10) v_t2
WHERE t1.a1<10 AND v_t2.a2<20;
【实验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)将操作所使用的命令对应的参数、参数含义、返回的内容、返回内容的含义整理到分析报告中一同给出。
奥鹏,国开,广开,电大在线,各省平台,新疆一体化等平台学习
详情请咨询QQ : 3230981406或微信:aopopenfd777