MySQL 数据类型


1、整数类型
        TINYINT                8位
        SMALLINT            16位
        MEDIUMINT            24位    -2的n-1次方到2的n-1次方减1(n是位数)
        INT                        32位
        BIGINT                64位
2、实数类型
        实数是带有小数部分的数字。
        FLOAT(m,d)类型             32位        表示单精度浮点数值,m总个数,d小数位
        DOUBL(m,d)E类型         64位        表示双精度浮点数值,m总个数,d小数位
        DECIMAL(m,d)类型            m是数字的最大值(精度),它的范围是1到65,d是小数点右边的位数(比例),它的范围是0到30,必须不大于M。
        DECIMAL类型一般用于精度要求非常高的计算(DECIMAL(7,3)规定了存储的值不会超过7位数字,并且小数点后不超过 3 位)
    
        注意:MySQL可以为整数、实数类型指定宽度,例如INT(11),对大多数应用这是没有意义的,
                    它不会限制值的合法范围,只是规定了Mysql的一些交互工具(例如MySQL的命令行的客户端)用来显示字符的个数。
                    对于存储的计算来说,INT(1)和INT(20)是相同的。
                    整数、实数类型有可选的Unsigned属性,表示不允许负值,可使正数上限提高一倍。
                    整数、实数类型有可选的Zero Fill属性,表示如果数值宽度小于设定的宽度,则自动填充0,注意这只是最后显示的结果,在MySQL中实际存储的不变。
3、字符串类型
        char            用于定长的字符串。会删除所有的末尾空格。                    
        varchar        用于存储可变长字符串。例外,如果MySQL表使用ROW_FORMAT=FIXED创建的话,每一行都是使用定长存储,浪费空间。
                            若MySQL引擎是InnoDB,它会把过长的VARCHAR存储为BLOB。
                            由于是可变长的,在UPDATE时,可能使行变的更长,这回导致额外的工作开销。
                            使用场景,当字符串列的最大长度比平均长度大很多。
        BINARY、VARBINARY存储的二进制字符串。
        TEXT 不能指定默认值,创建索引要指定前多少个字符。
        BLOB、TEXT分别采用二进制和字符方式存储。BLOB存储的是二进制数据,没有排序规则或字符集,TEXT类型有字符集和排序规则。
        
        ENUM是一个字符串对象,它的值在创建时就规定了比如
            create table enum_test(
                id int
                e enum('fish','apple','dog') not null,
            );
            insert into enum_test(e,id) value('fish',1);#成功
            insert into enum_test(e,id) value('dog',2);#成功
            insert into enum_test(e,id) value('apple',3);#成功
            insert into enum_test(e,id) value('fish1',4);#失败,因为fish1没在enum('fish','apple','dog') 里
4、日期和时间类型
        DATE                    2017-01-01
        TIME                    12:01:59
        DATETIME            2017-01-01 12:01:59
        TIMESTAMP            自动修改时间(显示值依赖于时区)
5、位数据类型
        BIT、SET慎用
6、数据类型的属性
        NULL                                 数据列可包含NULL值
        NOT NULL                         数据列不允许包含NULL值
        DEFAULT                         默认值(设置字段默认值)
        PRIMARY KEY                 主键
        AUTO_INCREMENT             自动递增,适用于整数类型
        UNSIGNED                         无符号(比如,int正负之分)
        CHARACTER SET name     指定一个字符集
7、MySQL区分大小写问题
        1、mysql默认情况下是否区分大小写,使用
                show Variables like '%table_names'; #查看lower_case_table_names的值,0代表区分,1代表不区分。
        2、mysql对于类型为varchar数据,字段名的命名,表名默认不区分大小写,
                但如果该字段以"*_bin"编码的话会使mysql对其区分大小写。
       

posted @ 2017-12-14 10:32  周小哥  阅读(189)  评论(0编辑  收藏  举报