mysql范围怎么表示 mysql数据类型范围

mysql中常见的数据类型一:MySQL数据类型
MySQL中定义数据字段的类型对mysql范围怎么表示你数据库的优化是非常重要的
MySQL支持多种数据类型,大致可以分为三类:数值 日期/时间和字符串
二、数值类型
 1.整数类型
2.浮点数
如果希望保证值比较准确,推荐使用定点数数据类型 。MySql中的浮点类型有float,double和real 。他们定义方式为:FLOAT(M,D) 、 REAL(M,D) 、 DOUBLE PRECISION(M,D) 。
FLOAT和DOUBLE中的M和D的取值默认都为0,即除了最大最小值,不限制位数 。允许的值理论上是-1.7976931348623157E 308~-2.2250738585072014E-308、0和2.2250738585072014E-308~1.7976931348623157E 308 。M、D范围如下:
(MySql5.7实测,与IEEE标准计算的实际是不同的 , 下面介绍):M取值范围为0~255 。FLOAT只保证6位有效数字的准确性,所以FLOAT(M,D)中,M=6时,数字通常是准确的 。如果M和D都有明确定义,其超出范围后的处理同decimal 。
D取值范围为0~30 , 同时必须=M 。double只保证16位有效数字的准确性,所以DOUBLE(M,D)中 , M=16时,数字通常是准确的 。如果M和D都有明确定义,其超出范围后的处理同decimal 。
CHAR值时 , 在它们的右边填充空格以达到指定的长度 。当检索到CHAR值时,尾部的空格被删除掉 , 所以,mysql范围怎么表示我们在存储时字符串右边不能有空格,即使有,查询出来后也会被删除 。在存储或检索过程中不进行大小写转换 。
三、时间日期类型(5)
该“0”值如下:
请点击输入图片描述
四、各种类型占用的存储
1.数值类型
请点击输入图片描述
定点数的比较特殊 , 而且与具体版本也有关系,此处单独解释:
使用二进制格式将9个十进制(基于10)数压缩为4个字节来表示DECIMAL列值 。每个值的整数和分数部分的存储分别确定 。每个9位数的倍数需要4个字节 , 并且“剩余的”位需要4个字节的一部分 。下表给出了超出位数的存储需求:
请点击输入图片描述
2.时间日期
请点击输入图片描述
从版本5.6.4开始,存储需求就有所改变,根据精度而定 。不确定部分需要的存储如下:
请点击输入图片描述
比如 , TIME(0), TIME(2), TIME(4), 和TIME(6) 分别使用3, 4, 5, 6 bytes 。
3.字符串
请点击输入图片描述
4.类型的选择
为了优化存储,在任何情况下均应使用最精确的类型 。
例如,如果列的值的范围为从1到99999 , 若使用整数,则MEDIUMINT UNSIGNED是好的类型 。在所有可以表示该列值的类型中,该类型使用的存储最少 。
用精度为65位十进制数(基于10)对DECIMAL 列进行所有基本计算( 、-、*、/) 。
使用双精度操作对DECIMAL值进行计算 。如果准确度不是太重要或如果速度为最高优先级,DOUBLE类型即足够了 。为了达到高精度,可以转换到保存在BIGINT中的定点类型 。这样可以用64位整数进行所有计算,根据需要将结果转换回浮点值 。
5.使用其他数据库的SQL语句
为了使用为其它数据库编写的SQL执行代码 , MySQL按照下表所示对列类型进行映射 。通过这些映射,可以很容易地从其它数据库引擎将表定义导入到MySQL中:
请点击输入图片描述
MySql数据类型有哪些Mysql支持的多种数据类型主要有mysql范围怎么表示:数值数据类型、日期/时间类型、字符串类型 。
1.整数数据类型及其取值范围:
类型
说明
存储需求(取值范围)
tinyint很小整数1字节([0~255]、[-128~127]); 255=2^8-1;127=2^7-1
smallint小整数2字节(0~65535、-32768~32767) ;65535=2^16-1
mediumint中等3字节(0~16777215) ;16777215=2^24-1
int(integer)普通4字节(0~4294967295) ;4294967295=2^32-1
bigint大整数8字节(0~18446744073709551615);18446744073709551615=2^64-1
浮点数定点数:
类型名称
说明
存储需求
float单精度浮点数4字节
double双精度浮点数8字节
decimal压缩的“严格”定点数M 2字节
注:定点数以字符串形式存储mysql范围怎么表示,对精度要求高时使用decimal较好;尽量避免对浮点数进行减法和比较运算 。
2.时间/日期类型:
year范围:1901~2155;
time格式:‘HH:MM:SS’(如果省略写 , 并且没有冒号,则默认最右起2位为秒,再到分,最后到时);
插入系统当前时间:insert into 表名 values(current_date()),(now());
date类型:‘YYYY-MM-DD’;
datetime(日期 时间):‘YYYY-MM-DD HH:MM:SS’或‘YYYYMMDDHHMMSS’ , 取值范围:‘1000-01-01 00:00:00’~‘9999-12-31 23:59:59’;
timestamp格式同datetime,但在存储时需要4个字节(datetime需要8字节),并且以UTC(世界标准时间)进行存储(即timestamp会随设置的时区而变化,而datetime存储的绝不会变化);timestamp的范围:1970-2037 。
3.字符串类型:
text类型:tinytext、text、mediumtext、longtext;
【mysql范围怎么表示 mysql数据类型范围】类型
范围
tinytext255=2^8-1
text65535=2^16-1
mediumtext16777215=2^24-1
longtext4294967295=4GB=2^32-1
char的存储需求是定义时指定的固定长度;varchar的存储需求是取决于实际值长度 。
set类型格式:set(’值1’,’值2’…) ——可以有0或者多个值,对于set而言,若插入的值为重复的 , 则只娶一个 。插入的值乱序 , 则自动按顺序插入排列 。插入不正常值,则忽略 。
二进制类型:
bit(M)——保存位字段值(位字段类型),M表示值的位数;
eg:select BIN(b 0) from 表名;—–b为列名;b 0表示将二进制的结果转换为对应的数字的值,BIN()函数将数字转换为二进制 。
blog——-二进制大对象,用来存储可变数量的数据 。
数据类型
存储范围(字节)
tinyblog最多255=2^8-1 字节
bolg最多65535=2^16-1 字节
mediumblog最多16777215=2^24-1 字节
longblog最多4294967295=4GB=2^32-1 字节
MySQL 字段数值范围11表示数据占用11个字节长度比如数字10那么占位就是00000000010 。它最大表示的数应该是2的88次方减一,很大非常大 。
MySQL int 类型的长度和范围解惑Mysql 建表过程中:
MySQL中int类型占用4个字节[byte(B)] , 1B有8个位[bit(b)] , 一个位(b)就代表一个0或者1,那么MySQL中int占用4B,对应位就是 4*8b = 32b 了,也就是说 int 表示的数字 个数 是: 2的32次方 。
因为字节分有符号和无符号两种,于是 int 有符号 的 范围就是 -2的31次方 到 2的31次方减去1 [?1 为什么不是32次方?] [?2 为什么要减去1?],即 -2147483648 ~ 2147483647; int 无符号(unsigned) 的 范围就是 0 到 2的32次方减去1 。
知道了 int 类型的范围后,我们再来看看长度是什么意思 。在MySQL手册中 , 字段类型的长度用 “M” 表示,表示最大显示宽度 。int 的 最大有效显示宽度是 255 。注意: 此处表示 显示宽度 和 存储大小或类型及范围 无关
参考:
1、
如何判断MySQL中的YEAR类型的范围每种日期和时间类型都有一个有效范围 。如果插入的值超出相应范围,系统会报错并将相应的零值插入到数据库中,各个类型的零值请看上表 。
YEAR类型用4位数表示年份 。范围从1901~2155,插入超范围的值时系统报错并插入0000 。
DATE类型用YYYY-MM-DD形式显示日期 。范围从1000-01-01~9999-12-31插入超范围的值时系统报错并插入零值 。此类型除了可接受YYYY-MM-DD和YYYYMMDD格式的输入外,还可以识别其它一些不严格的语法格式,例如YYYY/MM/DD、YYYY.MM.DD等其他标点符号作为间隔的形式日期值的输入 。
TIME类型用HH:MM:SS形式显示时间 。其中MM和SS的取值范围是0~59 , HH的取值范围比较特别其取值范围是0~838,一般来讲小时数的范围是0~23,但是为了满足特殊情况的需要,MySQL扩大了TIME类型的范围,而且可以接受负数 。TIME类型支持D HH:MM:S格式的时间表达字串,D表示天数,取值范围0~34 。例如,输入30 21:15:26 , 系统会将小时部分按30*24 21转换为 741:15:26 。除了标准的输入方式HH:MM:SS外,此类型还可以接受一些非标准的输入方式 , 例如,输入12,系统会转换为00:00:12、输入1212,系统会转换为
00:12:12、输入121212,系统会转换为12:12:12等 。
DATETIME类型用YYYY-MM-SS HH:MM:SS形式显示日期与时间 。范围从1000-01-01 00:00:00~9999-12-31 23:59:59 插入超范围的值时,系统报错并插入零值(0000-00-00 00:00:00) 。此类型除了可接受YYYY-MM-SS HH:MM:SS格式的输入外,还可以识别YYYYMMSSHHMMSS形式的输入值 。例如,输入20170117174856,系统会转换为
2017-01-17 17:48:56 。
TIMESTAMP类型情况与DATETIME类型接近,但是它的取值范围要比DATETIME类型窄很多,范围从19700101080001~20380119111407(1970-01-01 08:00:01~2038-01-19 11:14:07) 。**另外 , TIMESTAMP类型还有一个特别之处,那就是它的值的时间部分是根据时区来显示的,例如在东八区插入的TIMESTAMP类型值2017-01-16 18:04:25,在东七区的时间部分会显示17:04:25,而在东九区则变为19:04:25 , 对于这一点我们要特别留意 。**
我们在选择日期与时间数据类型时,请根据实际需求选择相应的类型,一般应选择刚好够用最好 , 这样可节省系统资源 。例如只需要知道日期的选择DATE类型、需要同时知道日期与时间的就选择DATETIME类型、仅仅需要记录时间的则选择TIME类型等 。
mysql范围怎么表示的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于mysql数据类型范围、mysql范围怎么表示的信息别忘了在本站进行查找喔 。

    推荐阅读