配色: 字号:
第4章 数据库的创建和管理
2024-08-28 | 阅:  转:  |  分享 
  
第4章 数据库的创建和管理《数据库原理及应用教程(MySQL)》主要内容4.1 MySQL数据库的存储引擎1. 存储引擎概述存储引擎是决定如
何存储数据库中的数据、如何为数据建立索引、如何更新和查询数据的机制MySQL数据库管理系统提供了多种存储引擎,用户可以根据不同的需
求为数据表选择不同的存储引擎,也可以根据自己的需要编写自己的存储引擎MySQL常用的存储引擎有InnoDB、MyISAM、MEMO
RY和MERGE等可以查看MySQL支持的存储引擎,查看命令如下:SHOW ENGINES;4.1 MySQL数据库的存储引擎1.
存储引擎概述在MySQL Workbench查询窗口输入“SHOW ENGINES;”,单击“执行”按钮,即可查看各存储引擎的相
关信息。4.1 MySQL数据库的存储引擎1. 存储引擎概述MySQL的默认存储引擎是InnoDB,如果想把其他存储引擎设置为默认
存储引擎,可以使用如下命令:SET DEFAULT_STORAGE_ENGINE=存储引擎名;如果不确定MySQL当前默认的存储引
擎,可以使用如下命令:SHOW VARIABLES LIKE ''%storage_engine%'';在MySQL Workbenc
h中执行上述命令的结果如图所示:4.1 MySQL数据库的存储引擎2. InnoDB存储引擎MySQL5.5之后,InnoDB是M
ySQL的默认存储引擎InnoDB是事务型数据库的首选引擎,具有提交、回滚和崩溃修复能力InnoDB提供专门的缓冲池,是为处理巨大
数据量时的最大性能设计InnoDB支持外键约束,是 MySQL 上第一个提供外键约束的存储引擎InnoDB存储引擎将表和索引存储在
一个表空间中,表空间可以包含多个文件(或原始磁盘分区)4.1 MySQL数据库的存储引擎3. MyISAM存储引擎MySQL5.5
之前,MyISAM是MySQL的默认存储引擎MyISAM不支持事物处理,也不支持外键约束,但是,MyISAM具有高效的查询速度,插
入数据的速度也很快,是在Web、数据仓储等应用环境中最常使用的存储引擎之一MyISAM的修复时间与数据量的多少成正比,随着数据量的
增加,MyISAM的恢复能力的性能会变弱MyISAM不提供专门的缓冲池,必须依靠操作系统来管理读取与写入的缓存,因此在某些情况下,
其数据访问效率会比InnoDB低使用MyISAM创建数据库,将生成三个文件。文件的主文件名与表名相同,扩展名包括“.frm”、“.
myd”和“.myi”4.1 MySQL数据库的存储引擎4. MEMORY存储引擎MEMORY类型的表中的数据存储在内存中,如果数
据库重启或者发生崩溃,表中的数据都将消失MEMORY类型的表适用于暂时存放数据的临时表、作为统计操作的中间表,以及数据仓库中的维度
表每个MEMORY类型的表对应于一个文件,其主文件名与表名相同,扩展名为“.frm”,该文件只存储数据表的定义,而数据表中的数据存
储在内存中,这样可以有效地提高数据的处理速度MEMORY默认使用哈希(HASH)索引4.1 MySQL数据库的存储引擎5. 其他存
储引擎MERGE存储引擎MERGE存储引擎是一组具有相同结构的MyISAM表的组合。MERGE表本身没有数据,对MERGE表可以进
行查询、更新和删除操作,这些操作实际上是对内部的MyISAM表进行的BLACKHOLE存储引擎BLACKHOLE存储引擎可以用来验
证存储文件语法的正确性。还可以对二进制日志记录进行开销测量,通过比较,允许与禁止二进制日志功能的BLACKHOLE的性能。可以用来
查找与存储和引擎自身不相关的性能瓶颈CSV存储引擎CSV存储引擎实际上操作的是一个标准的CSV文件,不支持索引。CSV文件是很多软
件都支持的较为标准的格式,当需要把数据库中的数据导出成一份报表文件时,可以先在数据库中建立一张CVS表,然后将生成的报表信息插入到
该表,得到CSV报表文件ARCHIVE存储引擎ARCHIVE存储引擎主要用于通过较小的存储空间来存储过期的很少访问的历史数据4.1
MySQL数据库的存储引擎6. MySQL存储引擎的选择在实际工作中,可以根据应用场景的不同,对各种存储引擎的特点进行对比和分析
,选择适合的存储引擎如果实际应用需要事物处理,在并发操作时要求保持数据的一致性,而且除了查询和插入操作,还经常要进行更新和删除操作
,这种情况可以选择InnoDB,可以有效降低更新和删除操作导致的锁定,并且可以确保事务的完整性提交和回滚如果实际应用不需要事物处理
,以查询和插入操作为主,更新和删除操作较少,并且对事物的完整性和并发性要求不是很高,可以选择MyISAM如果实际应用不需要事物处理
,需要很快的读写速度,并且对数据的安全性要求较低,可以选择MEMOEY。它对表的大小有要求,不能建立太大的表。所以,MEMORY适
用于创建相对较小的数据库表主要内容4.2 MySQL数据库的字符集1. MySQL字符集概述针对数据的存储,MySQL提供了多种字
符集针对同一字符集内字符之间的比较,MySQL提供了与之对应的多种校对规则一个字符集对应至少一种校对规则(通常是一对多的关系),两
个不同的字符集不能有相同的校对规则,而且,每个字符集都设置默认的校对规则可以通过如下命令查看MySQL支持的所有字符集:SHOW
CHARACTER SET;或者使用系统表infromation_schema中的CHARACTER_SETS,如下:use in
formation_schema;SELECT FROM CHARACTER_SETS;4.2 MySQL数据库的字符集1.
MySQL字符集概述在MS DOS窗口或者MySQL Shell窗口执行上述命令,可以得到如图所示的MySQL8.0字符集列表4.
2 MySQL数据库的字符集1. MySQL字符集概述通过如下命令可以查看MySQL支持的所有校对规则:SHOW COLLATIO
N;或者使用系统表infromation_schema中的COLLATIONS,如下:USE information_schema
;SELECT FROM COLLATIONS;如果需要查看某一种特定的字符集,例如utf8字符集的校对规则,可以使用如下命令
:SHOW COLLATION WHERE Charset = ''utf8'';或者使用系统表infromation_schema中
的COLLATIONS,如下:USE information_schema;SELECT FROM COLLATIONS WH
ERE CHARACTER_SET_NAME = ''utf8'';4.2 MySQL数据库的字符集1. MySQL字符集概述在MS
DOS窗口或者MySQL Shell窗口执行上述命令,可以得到如图所示的utf8字符集的校对规则可以看出,utf8字符集的校对规则
有28个,其中,“utf8_general_ci”是默认校对规则。 “utf8_general_ci”结尾的“ci”表示大小写不敏
感;如果是“cs”,表示大小写敏感;如果是“bin”,表示按编码值比较。4.2 MySQL数据库的字符集2. MySQL字符集设置
MySQL对于字符集的设置分为4个级别:服务器(Server)、数据库(DataBase)、数据表(Table)和连接(Conne
ction)可以查看MySQL字符集在各个级别上的默认设置,查看命令如下:SHOW VARIABLES LIKE ''charact
er%'';在MS DOS窗口或者MySQL Shell窗口执行上述命令,可以得到如图所示的各个级别的默认字符集4.2 MySQL数
据库的字符集2. MySQL字符集设置可以单独查看某个特定级别的字符集默认设置,例如,查看服务器级的字符集默认设置的命令如下:SH
OW VARIABLES LIKE ''character_set_server'';可以查看MySQL校对规则在各个级别上的默认设置
,查看命令如下:SHOW VARIABLES LIKE ''collation%'';在MS DOS窗口或者MySQL Shell窗口
执行上述命令,可以得到如图所示的各个级别的默认校对规则4.2 MySQL数据库的字符集3. MySQL字符集常见问题在数据库系统开
发中,MySQL乱码一直是困扰开发者的主要问题。主要表现为:数据录入时为正常编码数据,但存入的数据库的数据后呈现乱码数据数据库中存
储的是正常编码的数据,但读取后的数据呈现乱码形态4.2 MySQL数据库的字符集3. MySQL字符集常见问题可以从数据流向的角度
,分析出现上述乱码问题的主要原因:数据输入端问题:在终端对用户录入的数据进行编码时,如果选择了与数据存储端不同的编码方式,则在传输
后对数据进行解码过程时导致数据出现乱码网络问题:对于在线运行的数据库系统,可能因网络服务中断、网络服务质量不可靠等原因,出现数据接
收不完整等现象,如果接收端不对数据的完整性进行校验,会导致数据库中存储了编码不完整的数据数据存储端问题:数据存储端主要是运行在服务
器或者本地系统中的数据库,数据库存储的编码涉及多个层面,例如,若数据库管理系统采用Latin编码,而数据库层面未设置默认编码,则会
继承使用数据库管理系统的编码,导致当存储中文数据时,会出现乱码主要内容4.3 MySQL数据库管理1. 创建数据库在MySQL中,
创建数据库的语法格式如下: CREATE DATABASE | SCHEMA [IF NOT EXISTS] db_nam
e [ [DEFAULT] CHARACTER SET charset_name] [ [DEFAULT] COL
LATE collation_name]【例4-1】创建名称为teaching的数据库,设置默认字符集为utf8mb4,设置默认校
对规则为utf8mb4_0900_ai_ci。 CREATE DATABASE IF NO
T EXISTS teaching DEFAULT CHARACTER SET utf8m
b4 DEFAULT COLLATE utf8mb4_0900_ai_ci;4.3 MyS
QL数据库管理2. 查看数据库查看数据库的语法格式如下:SHOW CREATE DATABASE db_name;创建完数据库之后
,可以在MySQL安装盘符下的“\ProgramData\MySQL\MySQL Server 8.0\Data”文件下看到以数据
库名称命名的文件夹,该文件夹最初是空文件夹,之后,在数据库中创建的数据表等的相关文件会存储在该文件夹中例如,查看数据库teachi
ng,在MS DOS窗口或者MySQL Shell窗口执行以下命令SHOW CREATE DATABASE teaching;可以
得到如图所示的执行结果,其中展示了数据库teaching的创建命令和参数设置。4.3 MySQL数据库管理3. 修改数据库数据库创
建之后,可以根据需要修改数据库的参数如果MySQL的默认存储引擎是InnoDB,无法修改数据库名,只能修改字符集和校对规则修改数据
库的语法格式如下: ALTER DATABASE | S
CHEMA db_name [DEFAULT] CHAR
ACTER SET charset_name [DEFA
ULT] COLLATE collation_name需要注意,用户必须有数据库的修改权限,才能使用ALTER DATABASE命
令修改数据库【例4-2】将数据库teaching的默认字符集修改为gbk,默认校对规则修改为gbk_chinese_ci。
ALTER DATABASE teaching DEFAULT CHARACTER SET gbk DEFAULT COLLATE gbk_chinese_ci;4.3 MySQL数据库管理4. 删除数据库删除数据库是指在数据库系统中删除已经存在的数据库,删除成功之后,原来分配的空间将被收回如果数据库中已经包含了数据表和数据,则删除数据库时,这些内容也会被删除,因此,删除数据库之前最好先对数据库进行备份操作。删除数据库的语法格式如下:DROP DATABASE [IF EXISTS] db_name【例4-3】删除数据库teaching。DROP DATABASE IF EXISTS teaching
献花(0)
+1
(本文系太好学原创)