首页 > Linux操作系统 > Linux操作系统 > mysql数据类型小结
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/ ,如需转载,请注明出处,否则将追究法律责任。