数据类型:定义列中可以存储什么数据以及数据实际怎样存储的基本规则。
数据类型用于以下目的:
1、允许限制可存储在列中数据。列如,数值类型的列只能接受数值
2、允许在内部更有效地存储数据。可以用一种比文本串更简洁的格式存储数值和日期时间值。
3、允许变换排序顺序。如果所有数据都作为串处理,则1位于10之前,而10 又位于2之前(串以字典的顺序排序,从左边开始比较,一次一个字符)作为数值数据类型,数值才能正确的排序。
在设计表时,应该重视所用的数据类型,使用错误的数据类型可能会严重地影响应用程序的功能和性能。更改包含数据的列不是一件小事(而且这样做可能会导致数据丢失)
one、串数据类型
最常用的数据类型就是串数据类型,他们存储串,如名字、地址、电话号码邮政编码等
主要分为定长串和变长串:
定长串接受长度固定的字符串,其长度是在创建表时指定的。定长列不允许多余指定的字符数目。它们分配的存储空间与指定的一样多
变长串存储可变长度的文本,有些变长数据类型具有最大的定长,而有些则是完全变长的。不管哪种只有指定的数据得到保存text属于变长串类型
虽然变长串比定长串要灵活好用,但是MySQL处理定长列远比处理变长列要快的多,而且MySQL不允许对变长列进行索引,使用的话也会极大的影响性能
注意;
1、不管使用何种形式的串类型数据,串值都必须括在引号内
2、虽然电话号码和邮政编码应该存储在数值字段中,但是要考虑实际情况如果数值中存储邮政编码为01234,保存的将是1234,这是不对的,
需要遵守的基本规则是:如果数值是计算(求和、平均等)中使用的数值,则应该存储在数据数据类型中。如果作为字符串使用(可能都是数字),则应该保存在串数据类型列中。
two、数值数据类型
数值数据类型存储数值,MySQL支持多种数值数据类型,每种存储的数值具有不同的取值范围。显然支持的取值范围越大,所需存储空间越多。此外,有的数值数据类型支持使用十进制小数点(和小数)。而有的只支持使用整数
注意:
1、所有数值数据类型(除bit 和 boolean外)都可以有符号或无符号,有的符号数值列可以存储正或负的数值,无符号的数值列只能存储正数。默认情况为有符号,但如果你知道自己不需要存储数值,可以使用 UNSIGNED 关键字,这样做将允许存储两倍大小的值。
2、与串不一样,数值不应该括在引号内
3、MySQL没有专门存储货币的数据类型,一般情况使用 decimal(8,2)
three、日期和时间数据类型
MySQL使用专门的数据类型来存储日期和时间值
four、二进制数据类型
二进制数据类型可以存储任何数据(甚至二进制信息),如图像、多媒体、字处理文档等