MySQL 支持所有标准SQL 中的数值类型,其中包括严格数值类型(INTEGER、SMALLINT、DECIMAL 和NUMERIC),以及近似数值数据类型(FLOAT、REAL 和DOUBLE PRECISION)
对于整型数据,MySQL 还支持在类型名称后面的小括号内指定显示宽度,例如int(5)表
示当数值宽度小于5 位的时候在数字前面填满宽度,如果不显示指定宽度则默认为int(11)。
一般配合zerofill 使用,顾名思义zerofill 就是用“0”填充的意思,也就是在数字位数不够的空间用字符“0”填满,
mysql> alter table tablename modify id int zerofill;
设置了宽度限制后,如果插入大于宽度限制的值,按照类型的实际精度进行保存,这是,宽度格式(int(5))实际已经没有意义.
所有的整数类型都有一个可选属性UNSIGNED(无符号).
对于任何想要使用AUTO_INCREMENT 的列,应该定义为NOT NULL,并定义为PRIMARY KEY 或定义为UNIQUE 键。例如,可按下列
任何一种方式定义AUTO_INCREMENT 列:
CREATE TABLE AI (ID INT AUTO_INCREMENT NOT NULL PRIMARY KEY);
CREATE TABLE AI(ID INT AUTO_INCREMENT NOT NULL ,PRIMARY KEY(ID));
CREATE TABLE AI (ID INT AUTO_INCREMENT NOT NULL ,UNIQUE(ID));
对于小数的表示,MySQL 分为两种方式:浮点数和定点数。浮点数包括float(单精度)
和double(双精度),而定点数则只有decimal 一种表示。定点数在MySQL 内部以字符串形
式存放,比浮点数更精确,适合用来表示货币等精度高的数据。
如果不写精度和标度,则会按照实际精度值显示,如果有精度和标度,则会自动将四舍五入后的结果插入,系统不会报错;定点数如果不写精度和标度,则按照默认值decimal(10,0)来进行操作,并且如果数据超越了精度和标度值,系统则会报错。
CHAR 和VARCHAR 类型
在检索的时候,CHAR 列删除了尾部的空格,而VARCHAR 则保留这些空格。