mysql 的数据类型
Posted prozhu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 的数据类型相关的知识,希望对你有一定的参考价值。
分类 | 类型 | M? | UNSIGNED? | ZEROFILL? | 范围 | 说明 |
? ? ? ? ? 整 型 | bit? | yes? | no? | no? | 1~64b? | bit(2)表示2个二进制位,取值范围0~3 |
tinyint? | yes? | yes? | yes? | 1B? | 标记UNSIGNED时,范围为0~255。当标记ZEROFILL时,同时表示标记了UNSIGNED。当位数不足M时,添加前导0。例如tinyint(5),当值为123时,那么会添加2个前导零,即00123。 | |
smallint? | yes? | yes? | yes? | 2B? | 同上 | |
mediumint? | yes | yes? | yes? | 3B? | 同上 | |
int? | yes? | yes? | yes? | 4B? | 同上 | |
integer? | yes? | yes? | yes? | 4B? | 与int完全相同 | |
bigint? | yes? | yes? | yes? | 8B? | 同上 | |
? ? ? ? ? 字 符 串 | char? | yes? | no? | no? | 255B? | 固定长度字符串类型。char(4),当数据长度为2时,会在后面添加2个空格补位。 |
varchar? | yes? | no? | no? | 65535B? | 可变长度字符串。varchar(4),当数据长度为2时,不会添加空格补位。占3个字节,其中一个字节用来记录长度。当数据长度大于255时,记录长度就需要2个字节了。 | |
tinytext? | yes? | no? | no? | 28--1B | 可变长度字符串。 | |
text? | no? | no? | no? | 216-1B | 同上。 | |
mediumtext? | no? | no? | no? | 224-1B | 同上。 | |
longtext? | no? | no? | no? | 232-1B | 同上。 | |
? ? ? ? 二 进 制 | binary? | yes? | no? | no? | 255B? | 固定长度二进制类型。binary(10),当数据为5B时,会添加5B来补位。即长度为10B。 |
varbinary? | yes ? | no? | no? | 255B? | 可变长度二进制类型。varbinary(10),当数据为5B时,不会补位,长度为6B,其中1B用来记录长度。 | |
tinyblob? | no? | no? | no? | 28--1B(256B) | 可变长度二进制类型。 | |
blob? | no? | no? | no? | 216-1B(64K) | 同上 | |
mediumblob? | no? | no? | no? | 224-1B(16M) | 同上 | |
longblob? | no? | no? | no? | 232-1B(4G) | 同上 | |
? ? ? ? 浮 点 数 | float? | yes? | yes? | yes? | ±3.4E38 | float(5,2)表示长度为5,其中2位小数。与Java中float精度相同! |
double? | yes? | yes? | yes? | ±1.79E308 | 同上。 | |
numeric? | yes ? | yes ? | yes? | 小数点前后有效位之和不大于65位。 | 使用与float、double相同,但存储方式不同,把9位十进制数压缩成4个字节来存储。相当与把浮点数当成字符来保存,但进行了压缩。比float、double更安全可靠。不会出现精度缺失的问题。 | |
decimal? | yes? | yes? | yes? | 65位 | 在MySQL中decimal与numeric是完全相同的。二者在表示钱时,很有用。 | |
布 尔 类 型 | bool? | no? | no? | no? | no? | 表示布尔值,但真实上是使用tinyint(1)表示的。当值为0时表示假,当值为非0时表示真。-128也是真。 |
boolean? | no? | no? | no? | no? | 与bool完全相同。 | |
? 日 期 间 | date? | no? | no? | no? | no? | yyyy-mm-dd? |
datetime? | no? | no? | no? | no? | yyyy-mm-dd hh:mm:ss? | |
timestamp? | yes? | no? | no? | no? | 时间戳,用在记录插入与更新自动记录时间。 | |
year? | yes? | no? | no? | no? | year(2),表示两位的年 | |
time? | no? | no? | no? | no? | 只表示时间 |
?
以上是关于mysql 的数据类型的主要内容,如果未能解决你的问题,请参考以下文章