MySQL中中的整数类型int主要有如下几种:
1、tinyint 的范围是-128~127;
2、int的范围是-2^31 (-2,147,483,648) 到 2^31 – 1 (2,147,483,647) 的整型数据(所有数字),存储大小为4个字节;
3、bigint的范围是 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字)。存储大小为 8 个字节;
4、smallint unsigned的范围是 –2^15(2^15表示2的15次幂) 到2^15 – 1,即 –32768 到 32767;
5、smallint 的范围是 0 到 2^16 – 1,即 0 到 65535,存储的字节是2个字节。
扩展资料
int类型, 占用字节数为4byte, 学过计算机原理的同学应该知道,字节(byte)并非是计算机存储的最小单位, 还有比字节(byte)更小的单位,也就是位(bit),一个位就代表一个0或1; 8个位组成一个字节;一般字节用大写B来表示byte,位用小写b来表示bit。
计算机存储单位的换算:
1B=8b
1KB=1024B
1MB=1024KB
那么根据int类型允许存储的字节数是4个字节,就能换算出int UNSIGNED(无符号)类型的能存储的最小值为0,最大值为4294967295(即4B=32b,最大值即为32个1组成)。
有相当一部分刚接触到MySQL
的朋友都遇到这样一个相同的问题,就是关于毫秒的存储与显示。由于MySQL数据类型中只提供了DATETIME,
TIMESTAMP,
TIME,
DATE,
YEAR这几种时间类型,而且DATETIME
以及
TIMESTAMP
的最小单位是秒,没有存储毫秒级别的函数。
不过MySQL却能识别时间中的毫秒部分。而且我们有多种方式可以获得毫秒的部分,比如函数:microsecond
等。
我这里举一个简单的例子,来存储秒之前和之后的部分。
对于把时间字段作为主键的应用,我们可以建立以下的表来作相应的转化:
mysql>
create
table
mysql_microsecond
(
log_time_prefix
timestamp
not
null
default
0,
log_time_suffix
mediumint
not
null
default
0)
engine
innnodb
Query
OK,
0
rows
affected,
2
warnings
(0.00
sec)
mysql>
alter
table
mysql_microsecond
add
primary
key
(log_time_prefix,
log_time_suffix)
Query
OK,
0
rows
affected
(0.01
sec)
Records:
0
Duplicates:
0
Warnings:
0
mysql>
set
@a
=
convert(concat(now(),'.222009'),datetime)
Query
OK,
0
rows
affected
(0.00
sec)
mysql>
insert
into
mysql_microsecond
select
date_format(@a,'%Y-%m-%d
%H-%i-%s'),date_format(@a,'%f')
Query
OK,
1
row
affected
(0.00
sec)
Records:
1
Duplicates:
0
Warnings:
0
mysql>
select
*
from
mysql_microsecond
+---------------------+-----------------+
|
log_time_prefix
|
log_time_suffix
|
+---------------------+-----------------+
|
2009-08-11
17:47:02
|
222009
|
+---------------------+-----------------+
1
row
in
set
(0.00
sec)
或者是用VARCHAR来存储所有的时间字段,
又或者是存储一个HASH来保证性能!
方法很多,就看你的应用怎么用合理了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)