mysql随笔-数据类型

①:  数据库中的int(11)   int类型占用4个字节,无符号位的范围为  -2147483648~2147483647 ,其中的11表示该数据类型指定的显示宽度,指定能够显示的数值中数字的个数.(注意:显示宽度和数据类型的取值范围是无关的.显示宽度只是指明mysql最大可能显示的数字个数,数值的位数小于指定的的宽度时会由空格填充;如果插入了大于显示宽度的值,只要该值不超过该类型整数的取值范围,数值依然可以插入,而且能够显示出来.)

举例:创建新表,设置int(1),并且插入值为9999999,没有问题,查询也可以显示

注意在Navicat等软件中展示会受影响的

参考文档:MySQL中int(M)和tinyint(M)数值类型中M值的意义 - Duotian - 博客园


②: char类型的长度是固定的,varchar的长度是可变的。varchar比char节省空间,但是在效率上比char稍差些。既要获得效率即必须牺牲一点空间,这就是设计上的"以空间换时间".       

     

     char会自动删除插入数据的尾部空格,varchar不会删除尾部空格.

   

     存储引擎对于选择char和varchar的影响:

          对于MyISAM存储引擎:最好使用固定长度的数据列代替可变长度的数据列.这样可以使整个表静态化,从而使检索数据更快,用空间换时间.

          对于InnoDB存储引擎:使用可变长度的数据列,因为InnoDB数据表的存储格式不分固定长度和可变长度,因此使用char不一定比使用varchar更好,但由于varchar是按照实际的长度存储,比较节省空间,所以对磁盘I/O和数据存储总量比较好.


③:浮点数float,double相对于定点数decimal的优势是:在长度一定的情况下,浮点数能表示更大的数据范围.但是由于浮点数容易产生误差,因此对精确度要求较高时,建议使用decimal来存储.decimal在mysql中是以字符串存储的,用于定义货币等对精确度要求较高的数据.


④:datetime的取值范围大于timestamp,因此存储范围较大的日期最好用datetime;               

    使用timestamp的时候当未指定列值时,mysql会把timestamp列设为当前的时间;       

   timestamp在空间上比datetime更有效;             

  datatime存储时间的时候不做任何改变直接存储,而timestamp存储的时候会先转换为世界时间然后存储,同样的取出来的时候做反向转换。


⑤:BLOB是二进制字符串,TEXT是非二进制字符串,两者均可存放大容量的信息.BLOB主要存储图片,音频信息等,而TEXT只能存储文本文件.


⑥:mysql中tinyint、smallint、int、bigint的区别

tinyint

从 -2^7 (-128) 到 2^7 - 1 (127) 的整型数据。存储大小为 1 个字节。

unsigned 是从 0 到 255 的整型数据。

所以建表的时候 只能是tinyint(3),哪怕你建tinyint(100),他最大还是3位这么多 

smallint

从 -2^15 (-32,768) 到 2^15 - 1 (32,767) 的整型数据。存储大小为 2 个字节。

unsigned 是从 0 到 65535 的整型数据。

所以建表的时候 只能是smallint(5),哪怕你建smallint(100),他最大还是5位这么多。

int

从 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型数据(所有数字).存储大小为 4 个字节。

unsigned 是从 0 到 4294967296 的整型数据。

所以建表的时候 只能是int(10),哪怕你建int(100),他最大还是10位这么多。

bigint

从 -2^63 (-9,223,372,036,854,775,808) 到 2^63-1 (9,223,372,036,854,775,807) 的整型数据(所有数字)。存储大小为 8 个字节。

unsigned 是(自己算吧)

所以建表的时候 只能是bigint(20),哪怕你建bigint(100),他最大还是20位这么多.

注意:

        mysql提供了五种整型: tinyint、smallint、mediumint、int和bigint。int为integer的缩写。这些类型在可表示的取值范围上是不同的。 整数列可定义为unsigned从而禁用负值;这使列的取值范围为0以上。各种类型的存储量需求也是不同的。取值范围较大的类型所需的存储量较大。

mysql 提供三种浮点类型: float、double和decimal。与整型不同,浮点类型不能是unsigned的,其取值范围也与整型不同,这种不同不仅在于这些类型有最大 值,而且还有最小非零值。最小值提供了相应类型精度的一种度量,这对于记录科学数据来说是非常重要的(当然,也有负的最大和最小值)。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值