ITPub博客

首页 > Linux操作系统 > Linux操作系统 > mysql数据类型小结

mysql数据类型小结

原创 Linux操作系统 作者:myownstars 时间:2012-12-24 16:44:57 0 删除 编辑

mysql的数据类型总体分为3大类:数字/日期/字符串

 

数字类型

--支持unsigned的同时也支持signed,如果为某列指定zerofill,则为unsigned类型

Bit—范围1-64,默认为1

Tinyint—signed范围-128 – 127, unsigned范围0 – 255

Bool – 与tinyint(1)同义,0代表False/非0代表true,但true只与1同价;

Smallint – signed范围-32768 – 32767,unsigned为0 – 65535

Mediumint – signed范围-8388608 – 8388607,unsigned为0 – 16777215

Int – signed范围-2147483648 – 2147483647,unsigned为0 – 4294967295

Bigint – signed范围-9223372036854775808 – 9223372036854775807(63位),unsigned范围0 -- 18446744073709551615

--对于bigint类型,所有计算都是通过signed bigint或double完成的,除非使用bit函数,unsigned big不要超过63位,否则其后的数据可能会在bigint转化为double时丢失

Decimal[(M[,D])] –M最大65默认为10,D最大30默认为0

Float[(M,D)]—单精度浮点数,理论取值范围-3.402823466E+38 to -1.175494351E-38, 0, and 1.175494351E-38 to 3.402823466E+38,具体的因OS和硬件而异

Double[(M,D)] --理论取值范围 -1.7976931348623157E+308 to -2.2250738585072014E-308, 0, and 2.2250738585072014E-308 to 1.7976931348623157E+308

Type

Storage

Minimum Value

Maximum Value

 

(Bytes)

(Signed/Unsigned)

Signed/Unsigned)

TINYINT

1

-128

127

 

 

0

255

SMALLINT

2

-32768

32767

 

 

0

65535

MEDIUMINT

3

-8388608

8388607

 

 

0

16777215

INT

4

-2147483648

2147483647

 

 

0

4294967295

BIGINT

8

-9223372036854775808

9223372036854775807

0

18446744073709551615

 

 

 

日期类型

Date – 范围’1000-01-01’ -- ’9999-12-31’,可以为之赋值字符串和数值

Datetime – 范围’1000-01-01 00:00:00’ – ‘9999-12-31 23:59:59’,可以为之赋值字符串和数值

Timestamp –范围’1970-01-01 00:00:01’ UTC – ‘2038-01-19 03:14:07’ UTC,存储自’1970-01-01 00:00:00’至某一时间点的秒数;

默认情况下,表的第一个timestamp列记录该表最近更新时间,即最近一次insert/update操作时间;除非timestamp列定义允许null值,否则为其赋值null则会转变为当前时间;

若mysql开启maxdb运行模式,则timestamp与datatime为同一类型;

Time – 范围’-838:59:59’ – ‘838:59:59’,可以为之赋值字符串和数值

Year[(2|4)] – 4位范围’1901’ – ‘2155’,2位范围’70’ – ‘69’ (1970 -- 2069)

 

datetime占用8个字节,而timestamp只占用4个字节;

另外,timestamp建表是可以设置默认值,且在更新表示该列会自动更新为当前时间;
year占用1个字节,定义时可为year(4)/year(2),两者显示年份不同;
time占用3字节,可以保存时间间隔

 

字符串类型

Char –固定长度字符串,最大255/默认为1;char(0)只占用1bit可存储两个不同的值,Null或空白字符串;最后的空白键自动被回收;

Varchar—variable-length,最大长度65535(mysql每行最大限度为65535字节);使用1或2个字节前缀存储该列长度;

Binary –类似char,以二进制字节存储;

Varbinary –类似varchar,二进制字节存储;

Tinyblob –最大长度255字节,使用1字节前缀存储实际字节数;

Tinytext –最大为255字符,如果使用多字节字符集则长度更少;使用1字节前缀存储实际字节数;

Blob –最大长度65536字节;使用2字节前缀存储实际字节数;

Text --最大长度65536字符;使用2字节前缀存储实际字节数;

Mediumblob –最大长度power(2,24) -1字节,使用3字节前缀存储实际字节数;

Mediumtext--最大长度power(2,24) -1字符,使用3字节前缀存储实际字节数;

Longblob --最大长度power(2,32) -1字节,使用4字节前缀存储实际字节数;

Longtext --最大长度power(2,32) -1字符,使用4字节前缀存储实际字节数;

Enum(‘val1’,’val2’,..) –一个字符串对象只能包含其中一个值:val1/val2/null或者’’;最多可包含65536个不同值,内部使用整数标注;

Set(‘val1’,’val2’,..) --一个字符串对象可包含0或多个值;最多可包含64个成员,内部使用整数标注;

 

 

尽量列声明为not null,这样每次处理时不必先检查其是否为NULL,还可以节约1bit的存储空间;
如果字符串数据列候选值数量有限,应该使用ENUM类型,使用一系列数值存储,操作速度快;

同时可将IPV4以number类型存储,字符串需要15字节而现在只需4字节

调用如下函数进行转换
mysql> SELECT INET_ATON('10.0.5.9');
        -> 167773449
mysql> SELECT INET_NTOA(167773449);
        -> '10.0.5.9'

 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/15480802/viewspace-751573/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: mysql之权限验证
请登录后发表评论 登录
全部评论

注册时间:2010-03-18

  • 博文量
    375
  • 访问量
    3320732