数据类型( data_type )是指系统中所允许的数据的类型。 MySQL 数据类型定义了列中可以存储什么数据以及
该数据怎样存储的规则。
数据库中的每个列都应该有适当的数据类型,用于限制或允许该列中存储的数据。例如,列中存储的为数字,
则相应的数据类型应该为数值类型。
如果使用错误的数据类型可能会严重影响应用程序的功能和性能,所以在设计表时,应该特别重视数据列所用
的数据类型。更改包含数据的列不是一件小事,这样做可能会导致数据丢失。因此,在创建表时必须为每个列
设置正确的数据类型和长度。
MySQL 的数据类型有大概可以分为 3 种,分别是数值类型、日期和时间类型、字符串类型等
数值类型
在 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与varchar的区别
char (15) 长度固定, 如 'www.javazx.com' 存储需要空间 14 个字符
varchar(15) 可变长 如 'www.javazx.com' 需要存储空间 15 字符 ,
char(10) 如果你存 abc ,需要空间为 10 , 3 个存 abc , 7 个存空字符,因为 char 是固定长度
varchar(10) 如果你存 abc ,需要空间为 4 , 3 个存 abc , 1 个存长度, varchar 是可变长度,超过 10 的部分,都会被截断
从上面可以看得出来 char 长度是固定的,不管你存储的数据是多少他都会都固定的长度。而 varchar 则处 可变长度但他要在总长度上加1 字符,这个用来存储位置。所以实际应用中用户可根据自己的数据类型 来做。
由于某种原因 char 固定长度,所以在处理速度上要比 varchar 快速很多,但是对费存储空间,所以对存储不大,但在速度上有要求的可以使用char 类型,反之可以用 varchar 类型来实例。
个人建意:
myisam 存储引擎 建议使用固定长度,数据列代替可变长度的数据列。
memory 存储引擎 目前都使用固定数据行存储,因此无论使用 char varchar 列都没关系,
innodb 存储引擎 建意使用 varchar 类型
MySQL 5.0以上的版本:
1. 一个汉字占多少长度与编码有关: UTF - 8 :一个汉字= 3 个字节 GBK :一个汉字= 2 个字节
2.varchar(n) 表示 n 个字符,无论汉字和英文, Mysql 都能存入 n 个字符,仅是实际字节长度有所区别
3.MySQL检查长度,可用SQL语言: select length(字段名) from tablename 来查看
varchar类型的均按照字符数截断
时间日期类型
温馨提示:在 PHP 中,一般情况下对于时间都是按照 UNIX 时间戳以 int 类型存储于表中,再根 据实际需要用 PHP 的时间函数进行处理,但不完全都是这样