MySQL 数据(字段)类型
在创建表的时候,要明确定义字段对应的数据类型。MySQL 主要的数据类型分为数值类型、字符串(文本)类型、时间日期类型和其他类型几类。
数值类型
数值类型说明:
类型 |
说明 |
例子 |
tinyint |
存储范围:-128至127或0至255 |
tinyint(1) |
smallint |
存储范围:-32768至32767或0至65535 |
smallint(3) |
mediumint |
存储范围:- 8388608至8388607或0至16777215 |
mediumint(5) |
int |
存储范围:- 2147483648至2147483647或0至4294967295 |
int(10) |
bigint |
存储范围:- 9223372036854775808至9223372036854775807或0至18446744073709551615 |
bigint(10) |
float |
最小非零值:±1.175494351E – 38,同double一样适用于精度要求高的场合 |
float(3,1) |
double |
最小非零值:±2.2250738585072014E - 308 |
double(10,5) |
decimal |
取值范围可变,以来括号内的显示尺寸和小数点位数而定,适用于对精度要求不高但准确度要求非常高的场合 |
decimal(10,2) |
补充说明
-
在 int(integer) 系列中,只能存储整型值,且可以在后面用括号指定显示的尺寸(M),如果不指定则会默认分配。如果实际值的显示宽度大于设定值,将会显示实际值而不会截断以适应显示尺寸。如 smallint(3) 中的 3 即为显示尺寸,即显示三位的数值(不包括 - 号)
-
int 类型可以指定 UNSIGNED 属性,即无符号(非负),所以存储范围有两种
-
在 float、double 及 decimal 类型中,不能指定 UNSIGNED 属性,其显示尺寸包含了小数点精度(D),即 float(3,1) 保存范围为 -99.9 至 99.9
-
decimal 必须指定显示尺寸(M)和小数点精度(D),float 和 double 都是可选的
-
在可能涵盖取值范围的基础上,尽可能选择较小的类型以提高效率和节约存储空间,如年龄,就选择 tinyint(3) 。该原则对于字符类型同样适用
字符串(文本)类型
字符串(文本)类型说明:
类型 |
说明 |
例子 |
char |
支持固定长度的字符串, 最大长度是 255 个字符 |
char(100) |
varchar |
支持可变长度的字符串, 最大长度是 65535 个字符 |
varchar(1000) |
tinytext |
支持可变长度的字符串,最大长度是 255 个字符 |
tinytext |
text
blob |
支持可变长度的字符串,最大长度是 65535 个字符 |
text |
mediumtext
mediumblob |
支持可变长度的字符串,最大长度是 16777215 个字符 |
mediumtext |
longtext
longblob |
支持可变长度的字符串,最大长度是 4294967295 个字符 |
longtext |
enum |
枚举类型,可存储最多65535 个成员,常用于取值是有限而且固定的场合 |
enmu("男","女") |
set |
集合类型,可存储最多64个成员 |
set("value1","value2", ...) |
补充说明
char 和 varcha 需要指定长度,不同的是,char 存储时总是按照指定的长度储存,而 varchar 则根据实际字符串长度再加上一个字节分配空间。
时间日期类型
时间日期类型说明:
类型 |
说明 |
例子 |
date |
YYYY-MM-DD 格式表示的日期值 |
date |
time |
hh:mm:ss 格式表示的时间值 |
time |
datetime |
YYYY-MM-DD hh:mm:ss 格式表示的日期和时间值 |
datetime |
timestamp |
YYYYMMDDhhmmss 格式表示的时间戳值 |
timestamp |
year |
YYYY 格式表示的年份值 |
year |
提示
在 PHP 中,一般情况下对于时间都是按照 UNIX 时间戳以 int 类型存储于表中,再根据实际需要用 PHP 的时间函数进行处理,但不完全都是这样。
(责任编辑:IT) |