前端学数据库之数据类型

这篇博客详细介绍了MySQL数据库中的数据类型,包括整数、浮点数、定点数、日期时间、字符串和二进制类型。文章强调了数据类型的选取原则,如数值类型中的整数和浮点数用于不需要小数部分的数值,浮点数和定点数在精度要求高的场景下选择。同时,讨论了日期时间类型中的YEAR、TIME、DATE、DATETIME和TIMESTAMP的差异,并给出了选择数据类型的建议。
摘要由CSDN通过智能技术生成

一、数据类型

  MySQL的数据类型有大概可以分为5种,分别是 整数类型、浮点数类型和定点数类型、日期和时间类型、字符串类型、二进制类型。 

  注意:整数类型和浮点数类型可以统称为数值数据类型。

  数值数据类型

   整数类型:TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT

   浮点数类型:FLOAT、DOUBLE

   定点小数:DECIMAL

  日期/时间类型

   YEAR、TIME、DATE、DATETIME、TIMESTAMP

  字符串类型

   CHAR、VARCHAR、TEXT、ENUM、SET等   

  二进制类型

   BIT、BINARY、VARBINARY、BLOB

  1、整数类型

  1个字节= 8位二进制数。 每个类型的取值范围也就能够知道,比如 TINYINT占用1个字节,也就是8位,2的8次方减1等于255,也就是说如果代表没符号的整数,该取值范围为0~255,如果是有符号的,最高位为符号号位,也就是2的7次方减1,也就是127,取值范围为-128~127。

不同整数类型的取值范围

 根据自己所需去选取不同的类型名称,

  例如:

  CREATE TABLE aaa(

  id INT(10) PRIMARY KEY,

  age INT(6)

  );

这个例子中INT(10)、INT(6) 括号中的数字表示的是该数据类型指定的显示宽度,指定能够显示的数值中数字的个数。这里要注意:显示宽度和数据类型的取值范围是无关的,显示宽度只是指明MySQL最大可能显示的数字个数。通俗点讲就是,比如这个age字段,显示宽度为6,但是如果你插入的数据大于6,达到了8,6666 6666,那也没关系,只要插入的数值的位数不超过该类型整数的取值范围就行,如果插入的数值长度是4,或者3,数值的位数小于指定的宽度,后面的位数就会由空格填空,5555插入age字段,存的就是"5555 "后面用空格补齐。还有一点,这个显示宽度没限制,你写100度没问题,但是插入数据时,实际起控制作用的还是数据类型的取值范围。如果不写显示宽度,就会用系统默认的,比如,INT的默认显示宽度是11,看上面表,最高也就能表示10位大小的数值,但是要注意,有符号的,也就是负数时,符号位也占一位。

2、浮点数类型和定点数类型

解释M,D的意思:

  M:数值的总位数。 通俗点讲,就是看有多少个数字,比如,5.6789,M就是5

  D:小数点后面能保留几位。 比如上面的5.6789 ,D就是4。 这只是举一个例子,来说明M,D是什么,实际是先有M,D的,然后在来控制数值,而不是更具数值来确定M,D。

  不单单就MECIMAL有M,D这两个参数,FLOAT 和 DOUBLE 度有,看下面例子

  比如:

  CREATE TABLE tmp(

  x FLOAT(3,1),

  y DOUBLE(5,3),

  z DECIMAL(5,4)

  );

  假设x插入的值为:5.69,56.78,5.438,349.2 (注意:实验给x这个字段插入的值,可能实验了三次,不要错看成x的值为5.69,y为56.78等等了)

  实际上在数据库中存的值为:5.7,56.9,5.3,349.2这个报错

  分析:x的M为3,D为1,那么小数点上必须是占了一位数字,就算没有值,也会用0来填充,所以说,整数位上最多就只能是2位,这里要切记要先根据D的值,来算整数位能最多有多少位。

  通过分析x,y和z也就简单了,

  y字段上的值,整数部分最多是2位,小数点后的位数最多是3位,也就是说小数点后超过了3位,就会四舍五入。

  z字段上的值,整数部分最多只能是一位,小数点后的位数最多是4位,如果不足4位,也会用0补充。比如插入1.56,在数据库中存的就是1.5600, 比如插入25.46,这个就会报错,因为整数部分只能是一位,小数点后的位数已经占了4位了。

  FLOAT、DOUBLE、DECIMAL三者的区别。

  都是用来表示我们所说的小数的也就是浮点数,但是三种的精度不一样,也就是后面显示的位数不一样,

  区别一:

  FLOAT显示后面的小数点位大概在40多位,

  DOUBLE能显示的就是300多位了,不是一个层次上的,

  DECIMAL这个小数点后面能显示的位数跟DOUBLE差不多,

  区别二:

  FLOAT和DOUBLE在不指定精度时,也就是不用(M,D),默认会按照实际的精度,也就是你写多少就是多少,而DECIMAL如不指定精度默认为(10,0),也就是如果不指定精度,插入数值56.89,在数据库中存储的就是57。所以一般使用DECIMAL时就会指定精度,而使用FLOAT和DOUBLE就不用。

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值