@entity不限字节长度的类型_MySQL数据类型
mysql提供了整数类型、浮点数类型、⽇期和时间类型、字符串类型等。
1、整数类型
TINYINT(1个字节)SMALLINT(2个字节)MEDIUMINT(3个字节)INT和INTEGER(4个字节)BIGINT(8个字节)
2、浮点数、位类型
FLOAT(4个字节)
varchar2最大长度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”
YEAR
DATE,字节数为4,取值范围为“1000-01-01——9999-12-31”
DATE
TIME,字节数为3,取值范围为“-838:59:59——838:59:59”
TIME
DATETIME,字节数为8,取值范围为“1000-01-01 00:00:00——9999-12-31 23:59:59”
DATETIME
TIMESTAMP,字节数为4,取值范围为“19700101080001——20380119111407”
TIMESTAMP
当插⼊值超出有效取值范围时,系统会报错,并将零值插⼊到数据库中。
如果只要表⽰年⽉⽇,⽐如⽣⽇ 使⽤DATE类型
如果要表⽰年⽉⽇时分秒,⽐如⽤户注册时间,使⽤DATETIME类型
如果需要经常插⼊或者更新⽇期为当前系统时间,使⽤TIMESTAMP
如果只需要时分秒,⼀般使⽤TIME类型 ‐ ⽐如跑步记时
如果只需要年份 可以使⽤YEAR,因为该类型⽐DATE类型更省空间
如果系统是⼀个全球化的系统。不同的时间需要在不同的地⽅显⽰成当地的时间则需要
4、字符串类型
char系列字符串
CHAR(M) 0~255之间的整数
CHAR(M)
VARCHAR(M) 0~65535之间的整数
VARCHAR(M)
字符串类型CHAR的字节数是M, 例如CHAR(4)的数据类型为CHAR,其最⼤长度为4,VARCHAR类型的长度是可变的 具体选择哪⼀个需要判断所存储字符串长度是否经常变化,如果经常发⽣变化,则可以选择varchar类型。否则选择char类型。
text系列字符串
TINYTEXT 0~255
TINYTEXT
TEXT 0~65535
TEXT
MEDIUMTEXT 0~167772150
MEDIUMTEXT
LONGTEXT 0~4294967295
LONGTEXT
如果需要存储⼤量字符串,可以选择text类型字符串, ⾄于是选择这些类型中的哪⼀种,则需要判断所存储字符串长度,根据存储字符的长度来决定是选择允许长度最⼩的tinytext字符串类型,还是选择允许长度最⼤的longtext字符串类型。
char,varchar和text的区别
在MySQL中,char、varchar和text类型的字段都可以⽤来存储字符类型的数据,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、能够⽤数字类型的字段尽量选择数字类型⽽不⽤字符串类型,这会降低查询和连接的性能, 并会增加存储开销。这是因为引擎在处理查询和连接回逐个⽐较字符串中每⼀个字符,⽽对于数字型⽽⾔只需要⽐较⼀次就够了。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论