MySQL-操作数据库(存储引擎)

Posted 旷世奇才李先生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL-操作数据库(存储引擎)相关的知识,希望对你有一定的参考价值。

有志者事竟成
文章持续更新,可以微信搜索【小奇JAVA面试】第一时间阅读,回复【资料】获取福利,回复【项目】获取项目源码,回复【简历模板】获取简历模板,回复【学习路线图】获取学习路线图。

文章目录


前言

数据库是指长期存储在计算机内、有组织的和可共享的数据集合。简而言之,数据库就是一个存储数据的地方。只是,其存储方式有特定的规律。这样可以方便处理数据。数据库的操作包括创建数据库和删除数据库。这些操作都是数据库管理的基础。

一、创建数据库

创建数据库是指在数据库系统中划分一块空间,用来存储相应的数据。这是进行表操作的基础,也是进行数据库管理的基础。

mysql中,创建数据库须通过SQL语句CREATE DATABASE实现的。其语法形式如下:

CREATE DATABASE 数据库名;

其中,“数据库名”参数表示所要创建的数据库的名称。在创建数据库之前,可以使用SHOW语句来显示现在已经存在的数据库。语法形式如下:

SHOW DATABASES;

二、删除数据库

删除数据库是指在数据库系统中删除已经存在的数据库。删除数据库之后,原来分配的空间将被收回。值得注意的是,删除数据库会删除该数据库中所有的数据。因此,应该特别小心。

MySQL中,删除数据库是通过SQL语句DROP DATABASE实现的。其语法形式如下:

DROP DATABASE 数据库名;

其中,“数据库名”参数表示所要删除的数据库的名称。

三、数据库存储引擎

MySQL中提到了存储引擎的概念。简而言之,存储引擎就是指表的类型。数据库的存储引擎决定了表在计算机中的存储方式。

1、MySQL存储引擎简介

存储引擎的概念是MySQL的特点,而且是一种插入式的存储引擎概念。这决定了MySQL数据库中的表可以用不同的方式存储。用户可以根据自己的不同要求,选择不同的存储方式、是否进行事务处理等。

下面使用SHOW ENGINES语句可以查看MySQL数据库支持的存储引擎类型。查询方法如下:

show engines;

查询结果中,Engine参数指存储引擎名称;Support参数说明了MySQL是否支持该类引擎,YES表示支持;Comment参数指对该引擎的评论;例如InnoDB的存储引擎的评论如下图

Transactions参数表示是否支持事务处理,YES表示支持,可以看到只有InnoDB支持事务处理。XA参数表示是否分布式交易处理的XA规范,YES表示支持;Savepoints参数表示是否支持保存点,以便事务回滚到保存点,YES表示支持。

从查询结果中可以看出,MySQL支持的存储引擎包括很多,其中InnoDB为默认存储引擎。

我们可以使用SHOW语句查询默认的存储引擎。如下

show variables like 'storage_engine';

结果显示,默认的存储引擎为InnoDB。如果我们想要修改默认的存储引擎,可以在my.ini中进行修改。将“default-storage-engine=INNODB”更改为“default-storage-engine=MyISAM”。然后重启服务,修改生效。

2、InnoDB存储引擎

InnoDB是MySQL数据库的一种存储引擎。InnoDB给MySQL的表提供了事务、回滚、崩溃修复能力和多版本并发控制的事务安全。

InnoDB是MySQL上第一个提供外键约束的表引擎。而且InnoDB对事务处理的能力,也是MySQL其他存储引擎所无法与之比拟的。

InnoDB存储引擎中支持自动增长列AUTO_INCREMENT。自动增长列的值不能为空,且值必须唯一。MySQL中规定自增列必须为主键。在插入值时,如果自动增长列不输入值,则插入的值为自动增长后的值;如果输入的值为0或空(NULL),则插入的值也为自动增长后的值;如果插入某个确定的值,且该值在前面没有出现过,则可以直接插入。

InnoDB存储引擎中支持外键(FOREIGN KEY)。外键所在的表为子表,外键所依赖的表为父表。父表中被子表外键关联的字段必须为主键。当删除、更新父表的某条信息时,子表也必须有相应的改变。

InnoDB存储引擎中,创建的表的表结构存储在.frm文件中。数据和索引存储在innodb_data_home_dir和innodb_data_file_path定义的表空间中。

InnoDB存储引擎的优势在于提供了良好的事务管理、崩溃修复能力和并发控制。缺点是其读写效率稍差,占用的数据空间相对比较大。

3、MyISAM存储引擎

MyISAM存储引擎是MySQL中常见的存储引擎,曾是MySQL的默认存储引擎。MyISAM存储引擎是基于ISAM存储引擎发展起来的。MyISAM增加了很多有用的扩展。

MyISAM存储引擎的表存储成3个文件。文件的名字与表名相同。扩展名包括frm、MYD和MYI。其中,frm为扩展名的文件存储表的结构;MYD为扩展名的文件存储数据,其是MYData的缩写;MYI为扩展名的文件存储索引,其是MYIndex的缩写。

基于MyISAM存储引擎的表支持3种不同的存储格式。包括静态型、动态型和压缩型。其中,静态型为MyISAM存储引擎的默认存储格式,其字段是固定长度的;动态型包含变长字段,记录的是长度不是固定的;压缩型需要使用myisampack工具创建,占用的磁盘空间较小。

MyISAM存储引擎的优势在于占用空间小,处理速度快。缺点是不支持事务的完整性和并发性。

4、MEMORY存储引擎

MEMORY存储引擎是MySQL中的一类特殊的存储引擎。其使用存储在内存中的内容来创建表,而且所有数据也放在内存中。这些特性都与InnoDB存储引擎、MyISAM存储引擎不同。

每个基于MEMORY存储引擎的表实际对应一个磁盘文件。该文件的文件名与表名相同,类型为frm类型。该文件中只存储表的结构。而其数据文件,都是存储在内存中。这样有利于对数据的快速处理,提高整个表的处理效率。值得注意的是,服务器需要有足够的内存来维护MEMORY存储引擎的表的使用。如果不需要使用了,可以释放这些内存,甚至可以删除不需要的表。

MEMORY存储引擎默认使用哈希(HASH)索引。其速度要比使用B型树(BTREE)索引快。如果希望使用B型树索引,可以在创建索引时选择使用。

四、总结

这里的相关内容还没有整理完毕,文章后面持续更新,建议收藏。

文章中涉及到的命令大家一定要像我一样每个都敲几遍,只有在敲的过程中才能发现自己对命令是否真正的掌握了。

可以微信搜索【小奇JAVA面试】第一时间阅读,回复【资料】获取福利,回复【项目】获取项目源码,回复【简历模板】获取简历模板,回复【学习路线图】获取学习路线图。

以上是关于MySQL-操作数据库(存储引擎)的主要内容,如果未能解决你的问题,请参考以下文章

MYSQL 三种存储引擎

运维面试面试官:MySQL 存储引擎有哪几种,他们的区别是什么?

MySQL存储引擎 SQL数据导入/导出 操作表记录 查询及匹配条件

数据库基本操作--------MySQL存储引擎

MySQL学习3 - 数据表的操作

MySQL-存储过程和函数