MySQL 数据(字段)类型

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)

补充说明

  1. 在 int(integer) 系列中,只能存储整型值,且可以在后面用括号指定显示的尺寸(M),如果不指定则会默认分配。如果实际值的显示宽度大于设定值,将会显示实际值而不会截断以适应显示尺寸。如 smallint(3) 中的 3 即为显示尺寸,即显示三位的数值(不包括 - 号)
  2. int 类型可以指定 UNSIGNED 属性,即无符号(非负),所以存储范围有两种
  3. 在 float、double 及 decimal 类型中,不能指定 UNSIGNED 属性,其显示尺寸包含了小数点精度(D),即 float(3,1) 保存范围为 -99.9 至 99.9
  4. decimal 必须指定显示尺寸(M)和小数点精度(D),float 和 double 都是可选的
  5. 在可能涵盖取值范围的基础上,尽可能选择较小的类型以提高效率和节约存储空间,如年龄,就选择 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 的时间函数进行处理,但不完全都是这样。

参考阅读

PHP 数据类型

zgguan.com(it学习网) — 提供最好的 XHTML教程DIV+CSS教程JavaScript教程PHP教程ThinkPHP教程