MySQL数据类型

对于数据优化,要选择最合适的数据类型,而不是最大的。

  • 整形
  1. TINYINT:有符号值 -128-127         (二百五)

                              无符号值  0-255

                              占 1 个字节;

 

        2.SMALLINT:有符号值 -32768-32767        (六万五)

                                无符号值  0-65535

                               占 2 个字节;

 

        3.MEDIUMINT:有符号值 -8388608-8388607        (一千六百万)

                                   无符号值  0-16777215

                                   占 3 个字节;

 

       4.INT:有符号值 -2147483648-2147483647        (四十二亿)

                   无符号值  0-4294967295

                   占 4 个字节;

           

       5.BIGINT:有符号值  -9223372036854775808-9223372036854775807        (千亿万亿(ps:有这个念法吗,哈哈))

                          无符号值  0-18446744073709551615

                          占 8 个字节;

例如:年龄,就应该用TINYINT就够了。想起自己原来全是用INT。

 

  • 浮点型

用来记录一些小数。

         1.FLOAT:能精确到小数点后7位,一般都用这个,至于具体有多大,这个:-3.402823466E+38-(-1.175494351E-38)。E+38=10^38

         2.DOUBLE:大概是FLOAT的十倍。

 

  • 日期时间型

传说用得不多,因为要考虑跨时区的问题,一般情况都是用数字来储存的。但是,还是礼貌的列一下:

         1.YEAR(1970-2069); 2.TIME(-8385959到8385959); 3.DATE(活不到); 4.DATETIME(也活不到,精确到秒); 5.TIMESTAMP(1970.01.01.00:00:00-2037.12.31.23:59:59)。

 

  • 字符型

        1.CHAR[M]:0<=M<=255 个字节,定长;

        2.VARCHAR[M]:L+1 个字节 L<=M 且 0<=M<=65535,变长;

        3.TINYTEXT:L+1 个字节,L<2^8;

        4.TEXT:L+2 个字节,L<2^16;

        5.MEDIUMTEXT:L+3 个字节,L<2^24;

        6.LONGTEXT:L+4 个字节,L<2^32;

        7.ENUM('value1','value2',...):1或2个字节,却决于枚举值的个数,最多65535个值;

        8.SET('value1','value2',...):1、2、3、4或8个字节,取决于SET成员的数目,最多64个成员;

性别什么的就可以用枚举了。枚举只能选一个,SET可以选其中的各种排列组合。

posted @ 2017-08-04 17:43  胖丑宽的Java日记  阅读(180)  评论(0编辑  收藏  举报