整数类型 | 字节 | 最小值 | 最大值 |
tinyint | 1 |
有符号-128 无符号0 |
有符号127 无符号255 |
smallint | 2 |
有符号-32768 无符号0 |
有符号32767 无符号65535 |
mediumint | 3 |
有符号-8388608 无符号0 |
有符号8388607 无符号1677215 |
int、integer | 4 |
有符号-2147483648 无符号0 |
有符号2147483647 无符号4294967295 |
bigint | 8 |
有符号-9223372036854775808 无符号0 |
有符号9223372036854775807 无符号18446744073709551615 |
浮点数类型 | 字节 | 最小值 | 最大值 |
float | 4 | ±1.175494351E-38 | ±3.402823466E+38 |
double | 8 | ±2.2250738585072014E-308 | ±1.7976931348623157E+308 |
定点数类型 | 字节 | 描述 |
dec(m,d) / decimal(m,d) | m+2 | 最大取值范围与double相同,给定decimal的有效取值范围由m和d决定 |
位类型 | 字节 | 最小值 | 最大值 |
bit(m) | 1-8 | bit(1) | bit(64) |
一、对于整数类型,Mysql支持在类型后面的小括号内指定显示宽度 例如:int(5) 表示当前数值宽度小于5位的时候在数字前面填满宽度。
1.如果不指定显示宽度,则默认为int(11)
2. 配合zerofill使用:在数字位数不够的空间用字符"0"填满。 eg:修改表字段为 id1 int zerofill;
//创建表 id1为int,不设置显示宽度 id2为int,设置显示宽度为6 id3为tinyint 不设置显示宽度 create table t1( id1 int zerofill, id2 int(6) zerofill, id3 tinyint zerofill );
//都插入相同数值1 insert into t1 values(1,1,1);
3.设置宽度限制后,如果插入大于宽度限制的值,会正常插入。此时宽度格式已经没有意义。
二、对于整数类型,都有可选属性unsigned(无符号)
1.用于保存保存非负数或者需要较大上限的值
2.取值范围:下限是0,上限是原值的2倍。 eg: tinyint 有符号范围是-128~127 无符号范围是0~255
3.如果一个列指定为zerofill,则MySQL自动为该列添加unsigned属性
二、对于整数类型,都有可选属性auto_increment
1.自增属性,一般从1开始,每插入一条数据该字段都会+1。用于产生唯一标识符或顺序值。
2.在插入null到一个auto_increment列时,MySQL会插入一个比该列中当前最大值大1的值。
3.对于任何想要使用auto_increment的列,应该定义为not null,并定义为primary key或定义为unique键。
小数
1.对于小数的表示,分为浮点数和定点数。浮点数包括float(单精度)和double(双精度),定点数只有decimal一种表示。
2.定点数在MySQL内部以字符串的形式存放,比浮点数更精确,适合用来表示货币等精度高的数据。
3.小数类型都可以在类型名称后加"(m,d)",表示该值一共显示m位数字(整数位加小数位),其中d位位于小数点后面,m和d又称为精度和标度。 eg:float(7,4) 插入999.00009,保存结果为999.0001。四舍五入
4.float和double在不指定精度时,默认会按照实际的精度来显示。若指定,则会自动将四舍五入的结果插入。
5.decimal在不指定精度时,默认为(10,0),如果数据超越了精度和标度,系统则会报错。
位
1.bit(m)用来存放多位二进制数,m的范围是1~64。
2.对于位字段,直接使用select命令将不能看到结果,可以用bin()(显示为二进制格式)、hex()(显示为十六进制格式)函数进行读取。