所谓建表,就是声明列的过程

数据是以文件的形式存储在硬盘中的,而不同的数据类型占据的空间不一样,所以我们列的选取原则为:既够用,又不浪费。

 

详解列类型:

整型(默认是有符号的)

tinyint,smallint,mediumint,int,bigint

0填充,则该列是不为负的,所以可以省略unsigned。

M:必须配合zerofill使用。如果没有 设置zerofill,则不起作用。

M代表0填充的位数,比如设置了M为5,则00001

填充之后只是显示效果而已,不会影响数据真是值

zerofill:启用零填充

default:一般配合no null使用 。 not null default 0,不为空,且默认值为0

 

浮点型

float(M,D)

decimal(M,D)

M:精度,即整数+小数的总位数(不算小数点)

D:标度,即小数位数

例:float(6,2)    -9999.99-->+9999.99

  float(4,2) unsigned 0.0->+99.99

占用字节数:不是M,D越大,则占据的字节越大。一般占用4个字节或8个字节

一般来讲数据库中的浮点数是不能够指定位数的,例如sqlserver,就不可以,mysql比较特殊,他可以指定位数

 

 浮点型的四舍五入:1234舍,6789进。如果为5,则需要看该位前面的数字为多少,如果为2468,如果为1379,则

 

 

 

字符型

  char:定长,char(M),其中M代表宽度,即可容纳的字符数。 (不是字节),比如我们定义为char(4),且设置编码为utf-8,则可以最多放4个汉字。而在utf8中一个汉字占3个字节。

  这也从侧面反映出M代表的是字符数,而不是字节数。

  varchar:不定长,varchar(M),M代表宽度,即可容纳的字符数。(不是字节)

  区别:

  char定长,M个字符,如果小于M个字符,实占M个字符。其余的用空格补齐,在取数据的时候mysql自动会把空格去掉。

  varchar:M个字符,存的小于M个字符,设为N,N<=M,实际占N个字符。但是他会多出1-2个字节用来存储实际数据到底是几个字符。这两个字符就是多余的开销

  可以看出来varchar的利用率由于多出的1-2个字节,所以他的利用率用于小于100%,而char则是<=100%

 

 

售票员是开销

posted on 2017-02-06 17:33  Mr.He多多指教  阅读(164)  评论(0编辑  收藏  举报