5.1 MySQL存储引擎
存储引擎是如何存储数据、如何为存储的数据建立索引、更新索引、查询数据的技术的实现方法。
关系型数据库中,数据是按照表进行存储的,所以存储引擎也称为表类型(存储+操作此表的类型)。
- Oracel + sql server只有一种存储类型。
- MySQL 具有多个存储引擎,用户可以为不同需求选择、编写存储引擎。
1、show engines/g; 来查询当前数据库使用的存储引擎。
可以看到当前默认的是InnoDB
2、查询默认的存储引擎
5.1.1 InnoDb 存储引擎
1、支持自动增长列 AUTO_INCREMENT ,不能为空,并且为主键;
2、支持外键(foreign key) ;
优点:
- 更新密集,适合处理多重并发更新请求;
- 事务;
- 自动灾难恢复,能从自动灾难中恢复;
5.1.2 MyISAM 存储引擎
- mysql 5.5之前版本默认的存储引擎;
- 优点:。。。。
- 缺陷:占用空间小、处理速度快、不支持十五完整性和并发性;
5.1.3 Memory存储引擎
- 设计是为了速度;
- 用于存储临时数据;
- 但是如果mysqld崩溃,所有数据丢失;
查看数据库存储位置:
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代替。
原创文章,作者:dweifng,如若转载,请注明出处:https://blog.ytso.com/tech/database/267117.html