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 | 只表示时间 |