MySQL数据类型

mysql提供了整数类型、浮点数类型、日期和时间类型、字符串类型等。

1、整数类型

TINYINT(1个字节)
SMALLINT(2个字节)
MEDIUMINT(3个字节)
INTINTEGER(4个字节)
BIGINT(8个字节)

2、浮点数、位类型

FLOAT(4个字节)
DOUBLE(8个字节)

  • 如果要存储小数类型,可以选择float或者double, 具体选择哪一个,则需要判断小数需要精确到小数点后多少位,如果超过10位就要选择double,其余情况选择float位类型 MySQL提供了允许您存储位值的BIT类型。BIT(m)可以存储多达m位的值,m的范围在1到64之间。
  • 位类型用的最多的是用于表示 true和false两种情况的场景 可以使用BIT(1) 可以最大限度降低存储空间的浪费,实际开发中有很多信息都是这种类型,比如 is_vip表示是否是vip用户等
3、时间和日期

YEAR ,字节数为1,取值范围为“1901——2155”
DATE,字节数为4,取值范围为“1000-01-01——9999-12-31”
TIME,字节数为3,取值范围为“-838:59:59——838:59:59”
DATETIME,字节数为8,取值范围为“1000-01-01 00:00:00——9999-12-31 23:59:59”
TIMESTAMP,字节数为4,取值范围为“19700101080001——20380119111407”
当插入值超出有效取值范围时,系统会报错,并将零值插入到数据库中。

  • 如果只要表示年月日,比如生日 使用DATE类型
  • 如果要表示年月日时分秒,比如用户注册时间,使用DATETIME类型
  • 如果需要经常插入或者更新日期为当前系统时间,使用TIMESTAMP
  • 如果只需要时分秒,一般使用TIME类型 ‐ 比如跑步记时
  • 如果只需要年份 可以使用YEAR,因为该类型比DATE类型更省空间
  • 如果系统是一个全球化的系统。不同的时间需要在不同的地方显示成当地的时间则需要TIMESTAMP类型
    在这里插入图片描述
4、字符串类型
  • char系列字符串
    CHAR(M) 0~255之间的整数
    VARCHAR(M) 0~65535之间的整数
    字符串类型CHAR的字节数是M, 例如CHAR(4)的数据类型为CHAR,其最大长度为4,VARCHAR类型的长度是可变的 具体选择哪一个需要判断所存储字符串长度是否经常变化,如果经常发生变化,则可以选择varchar类型。否则选择char类型。
  • text系列字符串
    TINYTEXT 0~255
    TEXT 0~65535
    MEDIUMTEXT 0~167772150
    LONGTEXT 0~4294967295
    如果需要存储大量字符串,可以选择text类型字符串, 至于是选择这些类型中的哪一种,则需要判断所存储字符串长度,根据存储字符的长度来决定是选择允许长度最小的tinytext字符串类型,还是选择允许长度最大的longtext字符串类型。
  • char,varchar和text的区别
    在MySQL中,char、varchar和text类型的字段都可以用来存储字符类型的数据,char、varchar都可以指定最大的字符长度,但text不可以。
    存储方式和数据的检索方式也都不一样:
    数据的检索效率是:char > varchar > text
  1. char:存储定长数据很方便,CHAR字段上的索引效率级高,必须在括号里定义长度,可以有默认值,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间(自动用空格填充),且在检索的时候后面的空格会隐藏掉,所以检索出来的数据需要记得用什么trim之类的函数去过滤空格。
  2. varchar:存储变长数据,但存储效率没有CHAR高,必须在括号里定义长度,可以有默认值。保存数据的时候,不进行空格自动填充,而且如果数据存在空格时,当值保存和检索时尾部的空格仍会保留。另外,varchar类型的实际长度是它的值的实际长度+1,这一个字节用于保存实际使用了多大的长度。
  3. text:存储可变长度的非Unicode数据,最大长度为2^31‐1个字符。text列不能有默认值,存储或检索过程中,不存在大小写转换,后面如果指定长度,不会报错误,但是这个长度是不起作用的,意思就是你插入数据的时候,超过你指定的长度还是可以正常插入。
    结论:
    1、经常变化的字段用varchar;
    2、知道固定长度的用char; ‐ 身份证
    3、超过255字节的只能用varchar或者text;
    4、能用varchar的地方不用text;
    5、能够用数字类型的字段尽量选择数字类型而不用字符串类型,这会降低查询和连接的性能, 并会增加存储开销。这是因为引擎在处理查询和连接回逐个比较字符串中每一个字符,而对于数字型而言只需要比较一次就够了;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值