mysql中数据类型:
1.整形
整形 | 大小(字节) | 数值(有符号) |
tinyint | 1 | -128--127 |
smallint | 2 | -2^15--2^15-1 |
mediumint | 3 | -2^23--2^23-1 |
int | 4 | -2^32--2^32-1 |
bigint | 8 | -2^63--2^63-1 |
tinyint(M) unsigned zerofill not null default 0
M:代表显示宽度(在zerofill是才有意义)unsigned:无符号,影响存储范围
zerofill:零填充 (无符号)
not null default 0 :自动填充0 列可声明默认知,且最好声明
2.浮点型
类型 |
典型声明方式 |
范围 |
Float(M,D) |
Score float(5,2) |
M:精度(总位数)D:标度(小数点)
|
Decimal(M,D) |
Score decimal(5,2) |
同上 |
例:
float(6,2) range -9999.99—9999.99
float(6,2)unsigned range 0—9999.99
3.字符型
类型 |
说明 |
典型声明方式 |
范围 |
Char(M) |
定长字符串 M表示可容纳的字符数(不是字节数) |
Name char(10) |
0-255 |
Varchar(M) |
变长字符串 M表示可容纳的字符数(不是字节数) |
Name varchar(10) |
0-65535(以ascii字符为例,utf8 22000左右) utf8占3字节 |
text |
文本串 |
Resume text |
2w-6w |
char定长 设定M 长度就为M 如果没有M个后面用 空格 补齐,取出时再去掉后面的 空格(中间的 空格 不管),所以char类型数据后面不能保存 空格
varchar 变长 存的小于M个字符,设为N,N<=M,实际占N个字符+(1-2)个字节 (后面1-2个字符时保存varchar长度信息的) 取出时不会去掉后面的 空格
选用原则:考虑
1.速度
2.如何最省空间
4.日期时间类型
类型 |
典型格式 |
大小 |
范围 |
Year |
2012 如果输入两位 “00-69”表示2000-2069 “70-99”1970-1999 |
1字节 |
表示’1901’-‘2155’,0000,『表示错误时的选择』 |
Date |
1992-08-12 |
|
‘1000-01-01’ –> ’99991.12.31’ |
Time |
00:00:00 |
|
‘-838:59:59’à ’ 838:59:59’ |
Datetime |
1993-04-11 12:00:56 |
|
‘1000-1-1 00:00:00’à’9999-12-31 23:59:59‘ |
很少使用datetime类型来表示时间,一般不需要精确到秒
原因:虽然方便查看,而且能精确到秒不好定位
时间戳:是1970-01-01 00:00:00 到当前的秒数
一般存储注册时间,商品发布时间等,并不是用datetime,而是用时间戳
Datetime查看方便 但不直观
用int存储时间戳,方便计算,对于显示也更灵活