mysql 从入门到精通笔记-第五章 存储引擎和数据类型


5.1 MySQL存储引擎
存储引擎是如何存储数据、如何为存储的数据建立索引、更新索引、查询数据的技术的实现方法。
关系型数据库中,数据是按照表进行存储的,所以存储引擎也称为表类型(存储+操作此表的类型)。

  • Oracel + sql server只有一种存储类型。
  • MySQL 具有多个存储引擎,用户可以为不同需求选择、编写存储引擎。

 
1、show engines/g; 来查询当前数据库使用的存储引擎。
mysql 从入门到精通笔记-第五章 存储引擎和数据类型
 
可以看到当前默认的是InnoDB

 
2、查询默认的存储引擎
mysql 从入门到精通笔记-第五章 存储引擎和数据类型
 
 
5.1.1 InnoDb 存储引擎
1、支持自动增长列 AUTO_INCREMENT ,不能为空,并且为主键;
2、支持外键(foreign key) ;
 
优点:

  • 更新密集,适合处理多重并发更新请求;
  • 事务;
  • 自动灾难恢复,能从自动灾难中恢复;

 
5.1.2 MyISAM 存储引擎

  • mysql 5.5之前版本默认的存储引擎;
  • 优点:。。。。
  • 缺陷:占用空间小、处理速度快、不支持十五完整性和并发性;

 
5.1.3 Memory存储引擎

  • 设计是为了速度;
  • 用于存储临时数据;
  • 但是如果mysqld崩溃,所有数据丢失;

查看数据库存储位置:
mysql 从入门到精通笔记-第五章 存储引擎和数据类型
 
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

(0)
上一篇 2022年6月14日 18:19
下一篇 2022年6月14日 18:23

相关推荐

发表回复

登录后才能评论