- 数值类型:
int 和int unsigned
|
类型 |
有无符号 |
变量取值范围 |
占用空间 |
int |
整数 |
有符号数 |
-2^31~+2^31 |
4字节 |
int unsigned |
整数 |
无符号数 |
0~+2^32 |
4字节 |
使用unsigned这个选项,表示该列的数值都是正数或0,因为它只存储正数,所以它的取之范围相应的也大了一倍。
mysql还支持选择在该类型关键子后面的括号内指定整数值的显示宽度(例如,int(4))。该可选显示宽度规定用于显示宽度小于指定的列宽度的值是从左边填满宽度。显示宽度并不限制可以在列内保存的值得范围,也不限制超过列的指定宽度的值的显示。例如:
int能存储的最大值是2147483647(一个10位数),任何大于该值的数,都会用这个值代替存储(取决于sql mode)。
- 字符串类型:
char 和varchar (假设字符集为latin1)
|
类型 |
字符串长度 |
n取值范围 |
占用空间 |
char(n) |
字符串 |
固定 |
0~255 |
n字节 |
varchar(n) |
字符串 |
不固定 |
0~65535 |
length() + 1字节 |
两者的主要区别在于存储方式的不同:char列的长度固定为创建时声明的长度,长度可以为从0~255的任何值;而varchar列中的值为可变长字符串,长度可以指定为0~65535之间的值。
此外,char在存储时会去掉字符串末尾的空格,而varchar则会保留空格存储。但我发现在比较的时候却认为两者相同。
char和varchar可以指定字符的长度,如:char(n),varchar(n)。如果字符数超过设定的n值,则会截取字符串的前n个字符作为存储值(取决于sql mode)。
- 日期类型:
date:
|
类型 |
最小值 |
最大值 |
占用空间 |
date |
日期 |
1000-01-01 |
9999-12-31 |
3字节 |
date是一个记录年月日的日期类型,其格式为: XXXX-XX-XX 。