MySQL支持大量的列类型,它可以被分为:数字类型、日期和时间类型以及字符串(字符)类型等。
1.数字类型
- 默认是有符号,如果需要使用无符号的数据类型要在后面加"UNSIGNED";有符号即数字可以为正,为零,也可以为负;无符号即数字只能为非负数。
举例说明int(1)和int(11)区别:mysql5.0以上
int(1) 这里的“1”不代表数字存储长度,也就是说在不填充零的情况下,int(1)和int(11)没有区别;只要不超过其取值范围【-2147483648到+2147483647】即可。
当勾选上“填充零”时int(1)和int(11)有区别,如果是int(11),你存数字1,数据库里其实存的00000000001,即非零的数字前会自动补0。
2.日期和时间类型
Date:日期,格式是YYYY-MM-DD ,表示的范围是从1000到9999年。
Datetime:时间日期,格式是YYYY-MM-DD HH:II:SS,表示的范围是从1000到9999年。
Timestamp:格式是YYYY-MM-DD HH:II:SS,表示的范围从1970-01-01 00:00:00到2038-01-19 03:14:07。
Time:时间段,格式是HH:II:SS, 指定的时间在某个区间之间,有正负。表示的范围 -838:59:59~838:59:59,这代表某个日期的前后时间范围。
Year:年份,表示的范围1901-2156。
3.字符串类型
- 存储文字,当字符长度大于255时,建议使用text;
- varchar和char区别:
1)char 表示定长,长度固定,varchar表示变长,即长度可变
2)对 char 来说,最多能存放的字符个数 255,和编码无关。 而 varchar 呢,最多能存放 65532 个字符。VARCHAR 的最大有效长度由最大行大小和使用的字符集确定。整体最大长度是 65,532字节;
3)字符类型若为gbk,每个字符最多占2个字节(一个中文占用两个字节),最大长度不能超过32766;
字符类型若为utf8,每个字符最多占3个字节(一个中文占用3个字节),最大长度不能超过21845
4)varchar(5)中的 "5" 只代表字符存储长度。