四、列的字节与存储范围

详解列类型
 
数值型:
整型
tinyint
smallint
mediumint
int
bigint
 
类型
字节
Tinyint
1
8
-128------127
0------255
Smallint
2
16
-32768-------32767
0-------65535
Mediumint
3
24
-8388608-------8388607
0-------16777215
Int
4
32
-2147483648------2147483647
0-------4294967295
bigint
5
 
-9223372036854775808-----9223372036854775807
0-------18446744073709551615
 
 
tinyint为例:
默认是有符号的,存储-128>127
可选属性
Tinyint(M)  unsigned  zerofill
Unsigned:是无符号,影响存储范围,0-à255
M:代表宽度,(在zerofill时才有意义,其他时候没有意义)
Zerofill:零填充(如果某列是zerofill,那么它默认就是unsigned属性)0001,0002
 
列可以声明默认值,而且推荐声明默认值
Not null default 0
 
小数型:浮点型,定点型
Float(MD)M代表总位数,D代表小数位(6,2)为例:-9999.99---à9999.99
Decimal(M,D):M,D的意义同上
 
区别:decimalfloat精度更高,适合存储货币等要求精确的数字。
 
 
 
 
 
 
字符型:
Char:定长, char(M),M代表宽度,即:可容纳的字符数,0<=M<=255之间
Varchar:变长,varchar(M),M代表宽度,即:可容纳的字符0<=M<=65535(以ascii字符为例,utf822000左右)
 
区别在哪儿呢?
定长:M个字符,如果存的小于M个字符,实占M个字符;
变长:M个字符,如果存的小于M个字符,设为NN<=M,实占N个字符;
总结:1.宽度不同
      2.实占空间不同
      3.对空格的处理不同
速度上:定长速度快些
选择原则:
1. 空间利用效率,四字成语表,char4),
个人简介,微博 最大140个字,varchar(140)
2. 速度
微博注册用户名:char
 
Text:略,不太用
 
 
日期时间类型:
Date   日期
Time   时间
Datetime    日期时间类型
Year      年类型
 
 
Year类型:1个字节  表示1905-2155年,【0000,表示错误时选择】
如果输入2位,“00-69”表示2000-2069;“70-99”表示1970-1999
如果记的麻烦,输入的时候,输4位就行了。
 
Date类型:典型格式 1992-08-12
日期类型:1000-01-01----à9999-12-31
 
Time类型:典型格式  hh:mm:ss
时间类型:-838:59:59-----à838:59:59
 
Datetime类型:典型格式:1989-05-06  14:32:08
日期时间类型:范围:1000-01-01 00:00:00  ---à9999-12-31    23:59:59
 
注意:
在开发中,很少用日期时间类型来表示一个需要的精确到秒的列。
原因:虽然日期时间类型能精确到秒,而且方便查看,但是..........
所以通常是用时间戳来表示
 
时间戳:用int来存储
1970-01-01 00:00:00到当前的秒数。
一般存注册时间,商品发布时间等,并不是用datetime存储,而是用时间戳。
因为datetime虽然直观,但计算不便。
 
而用int型  存储时间戳,方便计算,对于显示来说,也可以方便的格式化。
posted @ 2019-08-12 13:34  Paco_Pig  阅读(323)  评论(0编辑  收藏  举报