关于mysql的数据类型,还是有很多和java不一样的地方的。
整数:
| 类型 | 字节 | 最小值 | 最大值 |
|---|---|---|---|
| (带符号的/无符号的) | (带符号的/无符号的) | ||
| 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 |
小数:
| 类型 | 大小 |
|---|---|
FLOAT(p) | 如果0 <= p <= 24为4个字节, 如果25 <= p <= 53为8个字节 |
| FLOAT | 4个字节 |
| DOUBLE [PRECISION], item REAL | 8个字节 |
| DECIMAL(M,D), NUMERIC(M,D) | 变长;参见下面的讨论 |
Decimal(num1,num2) num1表示这个小数总共有多少位 num2表示小数点后面有多少位
Float和double使用方法类似
字符串:
| 列类型 | 存储需求 |
|---|---|
| CHAR(M) | M个字节,0 <= M <= 255 |
| VARCHAR(M) | L+1个字节,其中L <= M 且0 <= M <= 65535(参见下面的注释) |
| BINARY(M) | M个字节,0 <= M <= 255 |
| VARBINARY(M) | L+1个字节,其中L <= M 且0 <= M <= 255 |
| TINYBLOB, TINYTEXT | L+1个字节,其中L < 2^8 |
| BLOB, TEXT | L+2个字节,其中L < 2^16 |
| MEDIUMBLOB, MEDIUMTEXT | L+3个字节,其中L < 2^24 |
| LONGBLOB, LONGTEXT | L+4个字节,其中L < 2^32 |
| ENUM(‘value1’,‘value2’,…) | 1或2个字节,取决于枚举值的个数(最多65,535个值) |
| SET(‘value1’,‘value2’,…) | 1、2、3、4或者8个字节,取决于set成员的数目(最多64个成员) |
这里特意要介绍两个类型
Char 定长
在使用的时候,空间利用率 可以达到百分之百。如果存入的数据没有放满,那么会自动的补充空格进行填满
Varchar 变长
在使用的时候,空间利用率达不到百分之百。存入的数据会直接存放进去,但是有有1到2B的空间用来存储数据长度。
对于char和varchar可以看下图:

而后关于这里还有个类型:Text 文本
接着是日期类型:
日期类型
Date 年月日
Time 时分秒
Datetime 年月日时分秒
Timestamps 时间戳 (格林威治时间1970年1月1日0点0分0秒到现在这个时间的毫秒数)

2905

被折叠的 条评论
为什么被折叠?



