mysql打折数据类型_MySQL的数据类型(⼀)
每⼀个常量、变量和参数都有数据类型、它⽤来指定⼀定的存储格式、约束和有效范围。MySQL提供了多种数据类型、主要有数值型、字符串类型、⽇期和时间类型。不同的MySQL版本⽀持的数据类型可能会稍有不同。
数值类型:
MySQL⽀持所有标准SQL 中的数值类型、其中包括了严格数值类型、近似数值数据类型、并在此基础上做了⼀些扩展、增加了三种不同长度的整型。
在整数类型中、按照取值范围和存储⽅式不同、分为tinyint、smallint、mediumint、int和bigint这五种类型,如果超出类型范围的操作,会发⽣“Out of range” 错误提⽰。为了避免此类问题的发⽣,在选择数据类型的时候要根据应⽤的实际情况确定其取值范围,最后根据确定的结果去选择数据类型。
对于整型数据,MySQL还⽀持在类型名称后⾯的⼩括号能指定显⽰宽度,例如 int(5) 表⽰当数值宽度⼩于5位的时候在数字前⾯填满宽度,如果不显⽰指定宽度则默认为int(11)。⼀般配合zerofill使⽤,zerofill就是⽤“0”填充的意思,也就是在数字位数不够的空间⽤字
符“0”填满。
所有的整数类型都有⼀个可选属性UNSIGNED(⽆符号),如果需要在字段⾥⾯保存⾮负数或者需要较⼤的上限值时,可以⽤此选项,他的取值范围时正常值得下限取0,上限取原值的2倍,例如tinyint有符号范围是-128~+127,⽽⽆符号范围是0~255。如果⼀个列指定为zreofill,则MySQL⾃动为该列添加UNSIGNED属性。
整数类型还有⼀个属性,AUTO_INCREMENT。在需要产⽣唯⼀标识符或顺序值时,可以使⽤此属性,这个属性只能⽤于整数。
ATUO_INCREMENT值⼀般从1开始,每⾏增加1。在插⼊NULL到⼀个AUTO_INCREMENT列时,MySQL插⼊⼀个⽐该列中当前最⼤值⼤1的值。⼀个表中最多只能有⼀个AUTO_INCREMENT列。对于任何想要使⽤AUTO_INCREMENT的列,应该定义为NOT NULL,并定义为PRIMARY KEY 或者为 UNIQUE键。
⼩数类型,MySQL分为两种⽅式:浮点数和定点数。浮点数包括float(单精度)和double(双精度),⽽定点数则只有decimal⼀种表⽰。定点数在mysql中以字符串的形式存放,⽐浮点数更准确,适合⽤来表⽰货币等精度⾼的数据。mysql创建表数据类型
浮点数和定点数都可以在类型名称后加(M,D)的⽅式来表⽰“(M,D)”表⽰该值⼀共显⽰M位数字(整数位+⼩数位)其中D位位于⼩数点后⾯,M和D⼜称为精度和标度。需要注意的是浮点数后⾯跟“(M,D)”的⽤
法是⾮标准⽤法,如果要⽤于数据库的迁移,则最好不要这么使⽤。float和double在不指定精度时,默认会按照实际的精度(由实际的硬件和操作系统来决定)来显⽰,⽽decimal在不指定精度时,默认的整数位为10,默认⼩数位为0。
浮点数如果不写精度和标度,则会按照实际精度值来显⽰,如果有精度和标度,则会⾃动将四舍五⼊的结果插⼊,系统不会报错;定点数如果不写精度和标度,则按照默认值decimal(10,0)来进⾏操作,并且如果数据超越了精度和标度值,系统则会报错。
BIT(位)类型,⽤于存放字段值,BIT(M)可以⽤来存放多位⼆进制数,M范围从1~64,如果不写则默认为1位。对于位字段,直接使⽤SELECT命令将不会看到结果,可以⽤bin()
(显⽰为⼆进制格式)或者hex()(显⽰为⼗六进制格式)函数来进⾏读取。
⽇期时间类型:
MySQL中有多种数据类型可以⽤于⽇期和时间的表⽰,不同的版本可能有所差异,这些数据类型主要区别如下:
1.如果⽤来表⽰年⽉⽇,通常使⽤DATE来表⽰。字节:4,最⼩值:1000-01-01,最⼤值:9999-12-31
2.如果⽤来表⽰年⽉⽇时分秒,通常使⽤DATETIME来表⽰。字节:8,最⼩值:1000-01-01 00:00:00,最⼤值:9999-12-31 23:59:59
3.如果⽤来表⽰时分秒,通常使⽤TIME来表⽰。字节:4,最⼩值:-838:59:59,最⼤值:838:59:59
4.如果需要经常插⼊或者更新时间为当前系统时间,则通常是⽤TIMESTAMP来表⽰。TIMESTAMP值返回后显⽰为“YYY-MM-DD HH:MM:SS”格式的字符串,显⽰宽度固定位19个字符,如果想要获得数字值,应在TIMESTAMP列添加“+0”。字节:4,最⼩值:19700101080001,最⼤值:2038年的某个时刻
5.如果中表⽰年份,可以使⽤YEAR来表⽰,它⽐DATE占⽤更少的空间,YEAR有2位或4位格式的年,默认为4位格式。在4位格式中,允许的值:1901-2155和0000.在2位中,允许的值:70-69,表⽰1970-2069年。MySQL以YYYY格式显⽰年YEAR值(从5.5.27开始,2位格式的year已不被⽀持)。字节:1,最⼩值:1901,最⼤值:2155
每个⽇期时间类型都有⼀个有效值范围,如果超出这个范围,在默认的SQLMode下,系统会进⾏错误提⽰,并将以零值来进⾏存储。
TIMESTAMP还有⼀个重要特点,就是和时区相关。当插⼊⽇期时,会先转换为本地时区后存放;⽽从数据库取出时,也同样需要将⽇期转换为本地时区后显⽰。这样,两个不同时区的⽤户看到的同⼀个⽇期可能不⼀样。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论