1. 数据类型分类

2. 数值类型

(一)tinyint类型

验证有符号范围:

所以 tinyint 有符号范围是 :-128 ~ 127

注意:

  1. 在MySQL中,整型可以指定是有符号的和无符号的,默认是有符号的
  2. 可以通过 UNSIGNED 来说明某个字段是无符号的

验证无符号范围:

所以 tinyint 无符号范围是 :0 ~ 255

(二)bit类型

  • bit[M]

位字段类型,单位:比特位。M表示每个值的位数,范围从1到64。如果M不写,默认为1

注意:

bit字段在显示时,是按照ASCII码对应的值显示

(三)小数类型

1 . float

  • float[(m, d)] [unsigned]

M指定显示长度(最终存储数据的总长度),d指定小数位数,占用空间4个字节

举例 : 设置 m = 4 , d = 2 , 有符号,则取值范围是 99.99 ~ -99.99

超出范围的都会被拦截,则存储失败

注意:

  1. 只要不超出范围,则存储数据都是有效的
  2. 如果小数点后几位与 d 的大小一样,则采取四舍五入的方法,四舍五入之后的结果如果没有超出范围,则可以存储

  1. 数据过大,float 类型保留的数据会有精度缺失,正数部分和小数都可能不准

举例 : 设置 m = 4 , d = 2 , 无符号,则取值范围是 0 ~ -99.99

2 . decimal

  • decimal(m, d) [unsigned]

定点数m指定长度(总长度),d表示小数点的位数

如:

decimal(5,2) 表示的范围是 -999.99 ~ 999.99

decimal(5,2) unsigned 表示的范围 0 ~ 999.99

注意:

  1. decimal 类型的精确更高
  2. decimal 整数最大位数 m 为 65 ,支持小数最大位数 d 是 30 ,如果d被省略,默认为 0 ,如果m被省略, 默认是 10

(三)字符串类型

1 . char 类型

  • char(L)

固定长度字符串,L是可以存储的长度,单位为字符,最大长度值可以为255

注意:

  1. 字符不等于字节
  2. char 的空间是一口气开辟好的,不管是否空间是否都被使用,所以可能会造成空间浪费

2 . varchar 类型

  • varchar(L)

可变长度字符串,L表示字符长度 ,单位为字符 ,最大长度65535个字节(最大长度跟编码有关)

注意:

使用 varchar类型,是需要多大的空间,就开辟多大空间,L只是限制了最大开辟的空间,所以不会造成空间浪费

L 最大长度:

在0到65535之间,但是有1 - 3 个字节需要用于记录数据大小,所以说有效字节数是65532

举例:

如果表的编码是utf8时,varchar(n)的参数n最大值是65532/3=21844[因为utf中,一个字符占

用3个字节],如果编码是gbk,varchar(n)的参数n最大是65532/2=32766(因为gbk中,一个字符

占用2字节)

3 . char 和 varchar 比较

选择定长或变长字符串:

  1. 如果数据确定长度都一样,就使用定长(char)
  2. 如果数据长度有变化,就使用变长(varchar)
  3. 定长的磁盘空间比较浪费,但是效率高,定长的意义是,直接开辟好对应的空间
  4. 变长的磁盘空间比较节省,但是效率低,变长的意义是,在不超过自定义范围的情况下,用多少,开辟多少

(四)日期和时间类型

常用的日期有如下三个:

date :日期 'yyyy-mm-dd' ,占用三字节

datetime :时间日期格式 'yyyy-mm-dd HH:ii:ss' 表示范围从 1000 到 9999 ,占用八字节

timestamp :时间戳,从1970年开始的 yyyy-mm-dd HH:ii:ss 格式和 datetime 完全一致,占用四字节

注意:

每一次更新这一行的其它的数据时,时间戳就会更改

(五)enum和set

  • enum:枚举,“单选”类型(列举的选项里面只能选一个);

enum('选项1','选项2','选项3',...);

  • set:集合,“多选”类型;

set('选项值1','选项值2','选项值3', ...);

集合查询使用find_ in_ set函数:

 

Logo

欢迎加入西安开发者社区!我们致力于为西安地区的开发者提供学习、合作和成长的机会。参与我们的活动,与专家分享最新技术趋势,解决挑战,探索创新。加入我们,共同打造技术社区!

更多推荐