《(本科)第6章MySQL存储引擎与数据库操作管理ppt课件.pptx》由会员分享,可在线阅读,更多相关《(本科)第6章MySQL存储引擎与数据库操作管理ppt课件.pptx(38页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、课程主讲人:(本科)第6章-MySQL存储引擎与数据库操作管理ppt课件中国农业大学 李辉p存储引擎p字符集p数据库操作管理p知识点小结p本章实验p数据库是存储数据库对象的容器,是指长期存储在计算机内,有组织和可共享的数据的集合。p数据库的存储方式有特定的规律。pMySQL数据库的管理主要包括数据库的创建、选择当前操作的数据库、显示数据库结构以及删除数据库等操作。p本章将介绍MySQL存储引擎存储引擎与数据库操作管理数据库操作管理。pMySQL存储引擎存储引擎pMySQL字符集pMySQL数据库操作管理p知识点小结p本章实验p查看当前当前MySQL数据库支持的存储引擎的方法: show eng
2、ines命令 SHOW ENGINES;或SHOW ENGINES G “g”或“G”作用与分号作用相同分号作用相同,”G”可以让结果更加美观。 show variables like have% show variables like have%GpInnoDB存储引擎: 为处理巨大数据量巨大数据量时的最大性能设计。 完全与MySQL服务器整合,InnoDB存储引擎为在主内存中缓存数据和索引而维持它自己的缓冲池。 是事务(事务(Transaction)安全)安全的,并且支持外键外键(foreign key)。 InnoDB表空间分为共享表空间共享表空间与独享表空间独享表空间。其中,表空间是数
3、据库的逻辑划分,一个表空间只能属于一个数据库。所有的数据库对象都存放在指定的表空间中。pMyISAM存储引擎: 是默认默认存储引擎,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法。 MyISAM具有检查检查和修复表格修复表格的大多数工具。 MyISAM表格可以被压缩压缩,而且它们支持全文搜索支持全文搜索。 它们不是事务安全的,而且也不支持外键。 如果事务回滚将造成不完全回滚不完全回滚,不具有原子性不具有原子性。 如果执行大量的查询操作大量的查询操作时,MyISAM是更好的选择
4、。pMEMORY存储引擎: 将表中的数据存放在内存中,如果数据库重启或发生崩溃,表中的数据都将消失。 非常适合用于存储临时数据的临时表临时表,以及数据仓库中的纬度表纬度表。 默认使用哈希哈希(HASH)索引索引,而不是B+树索引。 速度非常快速度非常快,但在使用上还是有一定的限制:只支持表锁,并发性能较差并发性能较差,并且不支持不支持TEXT和和BLOB列类型列类型。最重要的是,存储变长字段(varchar)时是按照定常字段(char)的方式进行的,因此会浪费内存浪费内存。pMERGE存储引擎: 是一组MyISAM表的组合,这些MyISAM表必须结构完全相同。 MERGE表本身没有数据本身没有
5、数据,对MERGE类型的表可以进行查询、更新、删除操作,实际上是对内部的对内部的MyISAM表表进行的。 对MERGE表进行DROP操作,这个操作只是删除删除MERGE的定的定义义,对内部的表没有任何影响对内部的表没有任何影响。(1)BLACKHOLE存储引擎使用场合: 验证存储文件语法语法的正确性 来自二进制日志记录的开销测量开销测量,通过比较,允许二进制日志功能的BLACKHOLE的性能与禁止二进制日志功能的BLACKHOLE的性能。 被用来查找与存储和引擎自身不相关的性能瓶颈。(2)CSV存储引擎起主要用途就是通过数据库中的数据导出成一份报表文件报表文件。(3)ARCHIVE存储引擎AR
6、CHIVE 存储引擎主要用于通过较小的存储空间来存放过期的很少访问的历史数据。(1)MyISAM适用场景是不需要事务支持不需要事务支持、并发相对较低并发相对较低、数据修改相对较少数据修改相对较少、以读为主以读为主、数据一致性要求不是非常高数据一致性要求不是非常高。(2)InnoDB 适用场景是需要事务支持事务支持、行级锁定对高并发有很好的适应能力行级锁定对高并发有很好的适应能力,但需要确保查询是通过索引索引完成、数据更新较为频繁频繁。(3)MEMORY适用场景是需要很快的读写速度读写速度、对数据的安全性要求较低安全性要求较低。MEMORY存储引擎对表的大小有要求,不能是太大的表。pMySQL存
7、储引擎pMySQL字符集字符集pMySQL数据库操作管理p知识点小结p本章实验p 字符集:一套文字符号及其编码、比较规则的集合。p MySQL支持的字符集: 默认是latin1(西欧ISO_8859_1字符集的别名) latin1字符集是单字符单字符编码,而汉字是双字节编码,由此可能导致MySQL数据库不支持中文字符查询或者中文字符乱码等问题。 MySQL服务器可以支持多种字符集,在同一台服务器、同一个数据库甚至同一个表的不同字段都可以使用相同的字符集。 查看字符集的两种方式: show character set ; 使用使用information_schema.character_sets
8、,可以显示所有的字符集和该字符集默认校对规则。p MySQL字符集包括字符集字符集和校对规则校对规则两个概念。 字符集用来定义MySQL存储字符串存储字符串的方式。 校对规则定义比较字符串比较字符串的方式。 字符集和校对规则是一对多一对多的关系,两个不同的字符集不能有相同的校对规则,每个字符集有一个默认校对规则。 MySQL支持30多种字符集的70多种校对规则。每个字符集至少对应一个校对规则。 查看相关字符集的校对规则校对规则的方法: 通过SHOW COLLATION LIKE *;命令。 通过系统表information_schema.COLLATIONS来查看。p 选择MySQL字符集的考
9、虑因素:(1) 满足应用支持语言语言的要求,如果应用要处理的语言种类多,要在不同语言的国家发布,就应该选择Unicode字符集,就目前对MySQL来说,选择utf-8。(2) 如果应用中涉及已有数据的导入已有数据的导入,就要充分考虑数据库字符集对已有数据的兼容性。假若已经有数据是GBK文字,如果选择uft-8作为数据库字符集,就会出现汉字无法正确导入或显示的问题。(3) 如果数据库只需要支持一般中文中文,数据量很大数据量很大,性能要求也很性能要求也很高高,那就应该选择双字GBK。因为,相对于UTF-8而言,GBK比较“小”,每个汉字占用2个字节,而UTF-8汉字编码需要3个字节,这样可以减少磁
10、盘I/O、数据库Cache以及网络传输的时间。如果主要处理的英文字符,只要少量汉字,那么选择UTF-8比较好。(4) 如果数据库需要做大量的字符运算字符运算,如比较、排序等,那么选择定长字符集可能更好,因为定常字符集的处理速度要比变长字符集的处理速度快。(5) 考虑客户端所使用的字符集编码格式字符集编码格式,如果所有客户端都支持相同的字符集,则应该优先选择字符集作为数据库字符集。这样可以比避免因字符集转化带来的性能开销和数据损失。p MySQL的字符集和校对规则有4个级别个级别的默认设置: 服务器级服务器级字符集和校对规则 数据库级数据库级字符集和校对规则 表级表级字符集和校对规则 字段级字段
11、级字符集和校对规则p 查询当前的服务器服务器的字符集: 使用”show variables like character_set_server ”;命令。p 查看校对规则校对规则: 使用”show variables like collation_server;”命令。p 服务器字符集和校对规则,可以在MySQL服务启动的时候确定。 例:若要指定字符集为gbk(校验规则为与其对应的默认的校验规则) 在f配置文件中设置:mysqldcharacter-set-server=gbk; 在启动时启动时指定字符集为gbk,命令如下:mysqld character-set-server=gbkp 数据
12、库的字符集和校验规则在创建数据库创建数据库的时候指定,也可以在创建完数据库后通过“alter database”命令进行修改命令进行修改。p 如果数据库中已经存在数据,因为修改字符集并不能将已有的数据按照新的字符集进行存放,所以不能通过修改数据库的字不能通过修改数据库的字符集直接修改数据的内容符集直接修改数据的内容。p 显示当前数据库字符集和校验规则可用以下两条命名分别查看: show variables like character_set_database show variables like collation_databasep 设置的规则规则: 如果指定了字符集和校对规则,则使用指
13、定的字符集和校对规则: 如果指定了字符集没有指定校对规则,则使用指定字符集的默认默认校对规则; 如果指定了校对规则但未指定字符集,则字符集使用与该校对规则关联关联的字符集; 如果没有指定字符集和校对规则,则使用服务器字符集和校对规则作为数据库的字符和校对规则。p 在创建表创建表的时候指定p 可以通过alter table命令进行修改修改p 如果表中已有记录,修改字符集对原有的记录并没有影响,不会按照新的字符集进行存放。p 要显示当前表字符集和校验规则可用以下如下命名查看: show create table 表名;p 设置表的字符集的规则规则: 如果指定了字符集和校对规则,使用指定的指定的字符
14、集和校对规则; 如果指定了字符集没有指定校对规则,使用指定字符集的默默认认校对规则; 如果指定了校对规则但未指定字符集,则字符集使用与该校对规则关联关联的字符集; 如果没有指定字符集和校对规则,使用数据库数据库字符集和校对规则作为表的字符集和校对规则。p MySQL可以定义列级列级别的字符集和校对规则,主要是针对相同的表不同字段需要使用不同的字符集的情况。p 列字符集和校对规则的定义可以在创建表创建表时指定,或者在修改修改表时调整表时调整,如果在创建表的时候没有特别指定字符集和校对规则,则默认使用表的字符集和校对规则。p 客户端和服务器之间交互的字符集和校对规则的设置。p MySQL提供了3个
15、不同的参数:character_set_client、character_set_connection和character_set_results,分别代表客客户端、连接和返回结果的字符集户端、连接和返回结果的字符集。通常情况下,这3个字符集应该是相同的,才可以确保用户写入的数据可以正确地读出,特别是对于中文字符,不同的写入字符集和返回结果字符集将导致写入的记录不能正确读出。p 同时修改这3个参数的值:set names *;命令p 在f中设置一下语句mysqldefault-character-set=gbk;pMySQL存储引擎pMySQL字符集pMySQL数据库操作管理数据库操作管理p知
16、识点小结p本章实验p MySQL数据库操作管理 创建数据库 修改数据库的名称 删除数据库创建创建p 创建数据库是通过SQL语句CREATE DATABASE或CREATE SCHEMA命令来实现的。p 每一个数据库都有一个数据库字符集和一个数据校验规则,不不能够为空能够为空。p 语法格式: CREATE DATABASE | SCHEMA IF NOT EXISTS db_name DEFAULT CHARACTER SET charset_nameDEFALUT COLLATE collation_name p 说明: 数据库名:在文件系统中,MySQL的数据库存储区将以目录方式表示MySQ
17、L数据库。因此,命令中的数据库名字必须符合操作系统文件夹命名规则。 在MySQL中不区分大小写不区分大小写,在一定程度上方便使用。 如果指定了CHARACTER SET charset_name 和COLLATE collation_name,那么采用指定的字符集charset_name和校验规则collation_name,如果没有指定,那么会采用默认默认的值。p 查看所有所有的数据库: 使用SHOW DATABASES;命令。p 查看数据库的详细详细信息: show create database 数据库名称 Gp 使用使用某个数据库: 使用USE db_name;命令。p 如果MySQL
18、数据库的存储引擎是MyISAM,那么只要修改DATA目录下的库名文件夹就可以了。p 如果存储引擎是InnoDB,是无法修改无法修改数据库名称的,只能修改字符集和校对规则。p 语法格式: ALTER DATABASE | SCHEMA db_name DEFAULT CHARACTER SET charset_name| DEFAULT COLLATE collation_namep 说明: ALTER DATABASE用于更改数据库的全局特性,用户必须有数据库修改权限修改权限,才可以使用ALTER DATABASE修改数据库。p 删除数据库是指在数据库系统删除已经存在已经存在的数据库,删除数据
19、库成功后,原来分配的空间将被收回。在删除数据库时,会删除数据库中的所有的表和所有的数据,因此,删除数据库时需要慎重考虑。p 如果要删除某个数据库,可以先将该数据库备份备份,然后再进行删除。p 删除数据库语法格式:DROP DATABASE IF EXISTS db_name;pMySQL存储引擎pMySQL字符集pMySQL数据库操作管理p知识点小结知识点小结p本章实验本章知识小结:p MySQL中的存储引擎的概念和几种常见的存储引擎p 字符集和校对规则的概念、设置方法p 数据库的创建、修改、和删除的命令以及使用注意事项pMySQL存储引擎pMySQL字符集pMySQL数据库操作管理p知识点小结p本章实验本章实验p 实验内容:见教材“6.8 MySQL安装创建和维护数据库实验”谢谢!中国农业大学 李辉 Email: