本文主要是介绍mysql 从入门到精通笔记-第五章 存储引擎和数据类型,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
5.1 MySQL存储引擎
存储引擎是如何存储数据、如何为存储的数据建立索引、更新索引、查询数据的技术的实现方法。
关系型数据库中,数据是按照表进行存储的,所以存储引擎也称为表类型(存储+操作此表的类型)。
-
Oracel + sql server只有一种存储类型。
-
MySQL 具有多个存储引擎,用户可以为不同需求选择、编写存储引擎。
1、show engines\g; 来查询当前数据库使用的存储引擎。
![](/upload/202206/10/202206100221092591.png)
可以看到当前默认的是InnoDB
2、查询默认的存储引擎
![](/upload/202206/10/202206100221093699.png)
5.1.1 InnoDb 存储引擎
1、支持自动增长列 AUTO_INCREMENT ,不能为空,并且为主键;
2、支持外键(foreign key) ;
优点:
-
更新密集,适合处理多重并发更新请求;
-
事务;
-
自动灾难恢复,能从自动灾难中恢复;
5.1.2 MyISAM 存储引擎
-
mysql 5.5之前版本默认的存储引擎;
-
优点:。。。。
-
缺陷:占用空间小、处理速度快、不支持十五完整性和并发性;
5.1.3 Memory存储引擎
-
设计是为了速度;
-
用于存储临时数据;
-
但是如果mysqld崩溃,所有数据丢失;
查看数据库存储位置:
![](/upload/202206/10/202206100221095588.png)
5.2 MySql 数据类型
5.2.1 数字类型
主要为整型 + 浮点型
TINYINT : -127~127 或者 0~255
BIT :-127~127 或者 0~255
BOOL :
SMALLINT : -32768-32768 或者 0-65535
MEDIUMINT :-8388608 -~8388607 或者 0~16777215
INT :-2147683648 ~2147683647 或者 -~4294967295
BIGINT:8字节 最大2^64-1
FLOAT:8或者4字节
DOUBLE:8字节
DECEMAL:长度自定义
5.2.2 字符串类型
文本字符串 创建表声明的长度:
-
char 1 255字符
-
varchar 255字符
CHAR类型是定长的,MySQL总是根据定义的字符串长度分配足够的空间。当保存CHAR值时,在它们的右边填充空格以达到指定的长度,当检索到CHAR值时,尾部的空格被删除掉。
VARCHAR类型用于存储可变长字符串,存储时,如果字符没有达到定义的位数,也不会在后面补空格。但是,由于行是变长的,在UPDATE时可能使行变得比原来更长,这就导致需要做额外的工作。如果一个行占用的空间增长,并且在页内没有更多的空间可以存储,在这种情况下InnoDB需要分裂页来使行可以放进页内,这样会增加碎片。
可变类型:
-
text : 存储长文本 tinytext 8位 ,text16位 longtext 32位
-
blob: 存储二进制数据 图片、声音、图像等等 tinyblob 、mediumblob、longblob
特殊类型:
-
set :容纳一组值或者null,最大64
-
enum :枚举,只能容纳指定的值或者null ,最大65535
适用场景:
1、速度方面考虑,使用char
2、节省空间使用vchar
3、列中的内容限制在一种选择,使用enum;
4、搜索内容不区分大小,使用text;
5、内容却分大小写使用blob
5.2.3 日期 和时间类型
-
datetime:YYYY-MM-DD HH:MM:SS
-
date : 日期格式 YYYY-MM-DD
-
timstamp :YYYY-MM-DD HH:MM:SS 需要设定时区,默认为UTC时区,可以使用SET TIMEZONE='+03:00';
-
time : HH:MM:SS
-
year: 范围1901-2155
每个类型都有取值范围,如果赋予一个非法值,将会使用0代替。
这篇关于mysql 从入门到精通笔记-第五章 存储引擎和数据类型的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!