MySQL数据库存储引擎与数据类型介绍

MySQL存储引擎与数据类型介绍

存储引擎(表类型)

MySQL存储引擎概念:MySQL中的数据用各种不同技术存储在文件(或内存)中,这些技术都使用不同的存储机制、索引技巧,锁定水平,并且最终提供广泛的、不同的功能。通过选择不同的技术,能够获得额外的速度或功能,从而改善整体功能。

查询MySQL中支持的存储引擎:
show engines;  或 show engines \g    (注意:\g后面不要加分号)

show variables like ‘have%’;

show variables like ‘table_type’

常见的三种存储引擎:

innoDB存储引擎、MyISAM存储引擎、MEMORY存储引擎

innoDB存储引擎的特点及优缺点:

innoDB存储引擎支持自动增长列(auto_increment)
innoDB存储引擎中支持外键(foreign key)

优点:提供良好的事务管理、崩溃修复能力和并发控制。
缺点:读写效率稍差,占用的数据空间相对较大。

MyISAM存储引擎的特点及优缺点:

MyISAM存储引擎文件类型
frm :存储表的结构
myd:存储数据
myi:存储索引
MyISAM存储引擎的存储格式:
MyISAM静态
MyISAM动态
MyISAM压缩

优点:占用空间小,处理速度快
缺点:不支持事务的完整性和并发性

MEMORY存储引擎的特点及优缺点:

MEMORY存储引擎是MySQL中一类特殊的存储引擎。其使用存储在内存中的内容来创建表,而且所有数据也存放在内存中。

优点:处理速度非常快
缺点:其数据已丢失,生命周期短

如何选择存储引擎:

innoDB存储引擎,用于事务处理应用程序,具有众多特性,包括ACID事务支持,支持外键,同时支持崩溃修复能力和并发控制。适用于对事务完整性要求比较高,要求并发控制,需要频繁进行更新、删除操作的数据库。

MyISAM存储引擎,主要用于非事务表,它提供高速存储和检索,以及全文搜索能力。
适用于表主要用于插入新纪录和读出记录,应用完整性、并发性要求很低。

MEMORY存储引擎,提供“内存”表,所有数据都存在内存中,数据的处理速度快,但安全性不高。
适用于需要很快读写速度,对数据的安全性要求较低,使用相对较小的数据库表。

MySQL中的数据类型:

MySQL支持多种数据类型,数值类型、日期/时间类型和字符串(字符)类型不区分大小写。

数值类型:

TINYINT                   一个很小的整数,1个字节
SMALLINT                  一个小整数,2个字节
MEDIUMINT                 一个中等大小整数,3个字节
INT\INTEGER               一个正常大小整数,4个字节
BIGINT                    一个大整数,8个字节
FLOAT                     一个小(单精密)浮点数字,近似值,可以带一个整数类型的参数,0到23的精度对应FLOAT列的4字节单精度。24-53的精度对应DOUBLE列的8字节双精度。
DOUBLE 、DOUBLE PRECISION 、REAL      一个正常大小(双精度)浮点数字,近似值。
DECIMAL(或简写为DEC) 、NUMERIC       一个精确的浮点数字。

日期时间类型:

DATE   一个日期,以YYYY-MM-DD格式来显示,范围是1000-01-01 到 9999-12-31,3个字节。
TIME   一个时间,以HH:MM:SS格式来表示,TIME值的范围可以从‘-838:59:59 到 838:59:59’。小时部分会因此大的原因是TIME类型不仅可以用于表示一天的时间(必须小于24小时),还可能为某个事件过去的时间或两个事件之间的时间间隔(可以大于24小时,或者甚至可以为负),3个字节
DATETIME    一个日期和时间的组合,以‘YYYY-MM-DD HH:MM:SS’格式来显示,取值范围:‘1000-01-01 00:00:00 到 9999-12-31 23:59:59’,8个字节
TIMESTAMP   一个时间数,基本上与DATETIME差不多(包括精度),但是在建时间戳;类型的列上会自动添加默认值为CURRENT_TIMESTAMP,而且在更新时自动用当前时间更新时间戳的列。
YEAR   以YYYY格式检索和显示YEAR的值。范围是1901-2155,1个字节。插入值时可以是:4位字符串、2位字符串、4位数字、2位数字。1到69和70到99范围的值被转换为2001到2069和1970到1999范围的YEAR值。

字符数据类型

CHAR[(M)]    一个定长字符串,M的取值范围是0-255,当CHAR值被存储时,他们被用空格在右边填补到指定的长度,当CHAR值被检索时,拖后的空格被删去
VARCHAR[(M)] 一个变长字符串,必须指指定M值,长度可以为0到65535之间的值。
TINYBLOB   TINYTEXT    最大长度为255(2的8次方-1)个字符的BLOB或TEXT列。
BLOB  TEXT    最大长度为65535(2的16次方-1)个字符的BLOB或TEXT列。
MEDIUMBLOB    MEDIUMTEXT    最大长度为16777215(2的24次方-1)个字符的BLOB或TEXT列
LONGBLOB     LONGTEXT       最大长度为4294967295(2的32次方-1)个字符的BLOB或TEXT列
ENUM('value1','valuel2',……)       枚举:列只能赋值为某个枚举成员或NULL。1或2个字节,取决于枚举值的个数(最多65535个值)
SET('value1','value2',……)         集合:列可以赋值为多个集合成员或NULL。1、2、3、4或者8个字节,取决于set成员的数目(最多64个成员)

字符串类型

BLOB是一个二进制大对象,可以容纳可变数量的数据。BLOB类型有TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB  四种。他们只是可容纳值的最大长度不同。支持任何数据,如文本、声音和图像等。
TEXT类型有TINYTEXT 、TEXT 、MEDIUMTEXT 、LONGTEXT 四种,这些对应四种BLOB类型,有相同的最大长度和存储需求,适合存储长文本。

布尔数据类型

BOOLEAN或简写为BOOL
0表示假,非0值表示真,一般用1表示。
it点点

it点点

满地都是六便士他却抬头看见了月亮。

留下你的评论

*评论支持代码高亮<pre class="prettyprint linenums">代码</pre>