#### 存储引擎
```
存储引擎其实就是如何存储数据,如何为储存数据建立索引和如何更新数据等技术的实现方法因为关系型数据库中的数据是以表的形式储存的,所以存储引擎也可以称为表类型
```
#### 查询MySQL存储引擎
```
show engines;
show engines \g
以上两行代码是相同作用的
show engines \G 可以使得查询的结果更加美观
```
```
show variables like 'have%';
```
#### InnoDB存储引擎
```
InnoDB给MySQL提供的表事务,回滚,崩溃修复能力和多版本并发控制的事务安全,InnoDB也是MYSQL上第一个提供外键约束表引擎
InnoDB存储引擎中支持自动增长列AUTO_INCREAMENT. 自动增长列的值不能为空而且必须唯一,MySQL中规定自动增长必须为主键。
也就是当插入值时,会自动增长
InnoDB支持外键,外键所在的表为子表,外键所依赖的表为父表,父表中被外键关联的字段必须为主键
在InnoDB引擎中,创建的表的表结构存储在 .frm文件中,数据和引擎存储在 innodb_data_home_dir 和 innodb_data_file_path表中
但是其读写效率比较差,占用空间相对比较大
```
#### MyISAM存储引擎
```
frm表存储的结构
myd 存储数据,是MYData的简写
myi 存储索引,是MYIndex的简写
```
#### 数字类型
```
整型
TINYINT: 最小整数,有符号的范围:-127-127,无符号的范围:0-255,一个字节
BOOL: 最小整数,有符号的范围:-127-127,无符号的范围:0-255,一个字节
SMALLINT: 小型整数,有符号的范围:-32768-32767,无符号的范围:0-65536,两个字节
INT: 标准整数,4字节,
BIGINT: 大整数
```
```
浮点型
FLOAT: 单精度
DOUBLE: 双精度
DECIMAL: 可变
```
#### 选择技巧
```
选择最小的可用性,如果值永远小于127,则使用TINYINT比INT好
对于完全都是数字的,可以选择整数类型
浮点型用于可能具有小数,例如购物单价,网上交付金额
```
#### 字符串类型
```
普通文本字符串:CHAR和VARCHAR类型
可变类型:TEXT和BLOB
特殊类型:SET和ENUM
```
#### 普通文本字符串
````
CHAR的长度是被固定的,VARCHAR长度是可变的,都是0-255个字符
````
#### 可变类型
```
大小可变,TEXT更适合用于存储长文本类型,
BLOB更适合于存储二进制数据,例如 图片,声音,文本。
```
#### 特殊类型
```
存储枚举值 Enum('value1','value2')
存储集合值 Set('value1','value2')
```
#### 选择技巧
```
当从速度方面考虑,优先选择CHAR类型
要节省空间,使用动态咧,可以选择VARCHAR
要列出内容限制在一种选择,可以使用ENUM类型
允许在一个列中有多于一条的