MySQL数据类型及后⾯⼩括号的意义
1,数值类型
  1.1数值类型的种类
  标准 SQL 中的数值类型,包括严格数值类型(INTEGER、SMALLINT、DECIMAL、NUMERIC),以及近似数值数据类型(FLOAT、REAL、DOUBLE PRECISION)。
  MySQL在此基础上⼜扩展了TINYINT、MEDIUMINT 和 BIGINT 这 3 种长度不同的整型,并增加了 BIT 类型,⽤来存放位数据。
网页float是什么意思  对于⼩数的表⽰,MySQL 分为两种⽅式:浮点数和定点数。浮点数包括 float(单精度)和 double(双精度),⽽定点数则只有decimal ⼀种表⽰。定点数在 MySQL 内部以字符串形式存放,⽐浮点数更精确,适合⽤来表⽰货币等精度⾼的数据。
  浮点数和定点数都可以⽤类型名称后加“(M,D)”的⽅式来进⾏表⽰,“(M,D)”表⽰该值⼀共显⽰ M 位数字(整数位+⼩数位),其中 D 位位于⼩数点后⾯,M 和 D ⼜称为精度和标度。例如,定义为 float(7,4)的⼀个列可以显⽰为-999.9999。MySQL 保存值时进⾏四舍五⼊,因此如果在float(7,4)列内插⼊ 999.00009,近似结果是 999.0001。
1.2数值类型的显⽰宽度
  对于5种整数类型(tinyint、smallint、mediumint、int、bigint),MySQL 还⽀持在类型名称后⾯的⼩括号内指定显⽰宽度(并不是该类型占⽤字节数)。
  例如 int(5)表⽰当数值宽度⼩于 5 位的时候在数字前⾯填满宽度,如果不显⽰指定宽度则默认为 int(11)。⼀般配合 zerofill 使⽤,顾名思义,zerofill 就是⽤“0”填充的意思,也就是在数字位数不够的空间⽤字符“0”填满。以下⼏个例⼦分别描述了填充前后的区别。
(1)创建表 t1,有 id1 和 id2 两个字段,指定其数值宽度分别为 int 和 int(5)。
(2)在 id1 和 id2 中都插⼊数值 1,可以发现格式没有异常。
(3)分别修改 id1 和 id2 的字段类型,加⼊ zerofill 参数:
  设置了宽度限制后,如果插⼊⼤于宽度限制的值,会不会截断或者插不进去报错?答案是肯定的:不会对插⼊的数据有任何影响,还是按照类型的实际精度进⾏保存,这是,宽度格式实际已经没有意义 。
1.3数值类型的属性
(1)UNSIGNED(⽆符号) ,如果需要在字段⾥⾯保存⾮负数或者需要较⼤的上限值时,可以⽤此选项,它的取值范围是正常值的下限取 0,上限取原值的 2 倍,例如,tinyint 有符号范围是-128~+127,⽽⽆符号范围是 0~255。如果⼀个列指定为 zerofill,则MySQL ⾃动为该列添加 UNSIGNED 属性。
(2)AUTO_INCREMENT ,在需要产⽣唯⼀标识符或顺序值时,可利⽤此属性,这个属性只⽤于整数类型。AUTO_INCREMENT 值⼀般从 1 开始,每⾏增加 1。 ⼀个表中最多只能有⼀个 AUTO_INCREMENT列 。对于任何想要使⽤ AUTO_INCREMENT 的列,应该定义为 NOT NULL,并
定义为 PRIMARY KEY 或定义为 UNIQUE 键。 例如,可按下列任何⼀种⽅式定义 AUTO_INCREMENT 列:
2,⽇期时间类型
MySQL 5.0 中所⽀持的⽇期和时间类型
如果要⽤来表⽰年⽉⽇,通常⽤ DATE 来表⽰。
如果要⽤来表⽰年⽉⽇时分秒,通常⽤ DATETIME 表⽰ 。
如果只⽤来表⽰时分秒,通常⽤ TIME 来表⽰ 。
如果需要经常插⼊或者更新⽇期为当前系统时间,则通常使⽤ TIMESTAMP 来表⽰。TIMESTAMP 值
返回后显⽰为“YYYY-MM-DD HH:MM:SS”格式的字符串,显⽰宽度固定为 19 个字符。如果想要获得数字值,应在 TIMESTAMP 列添加+0。
如果只是表⽰年份,可以⽤ YEAR 来表⽰,它⽐ DATE 占⽤更少的空间。YEAR 有 2 位或4 位格式的年。默认是 4 位格式。
3,字符串类型
  CHAR 和 VARCHAR 很类似,都⽤来保存 MySQL 中较短的字符串。⼆者的主要区别在于存储⽅式的不同:CHAR 列的长度固定为创建表时声明的长度,长度可以为从 0~255 的任何值(即指定长度是4的话,存的字符串长度必须是4);⽽ VARCHAR 列中的值为可变长字符串,长度可以指定为 0~255 (5.0.3 以前)或者 65535 (5.0.3以后)之间的值(即指定长度是4的话,存的字符串长度最⼤是4,1、2、3、4都可以)。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。