MySQL数据类型

作者: BigfaceMonster | 来源:发表于2017-02-07 15:19 被阅读101次

    MySQL学习笔记(2)

    mysql支持的数据类型

    mysql数值类型

    数值类型 字节
    TINYINT 1
    SMALLINT 2
    MEDIUMINT 3
    INT、INTEGER 4
    BIGINT 8
    FLOAT 4
    DOUBLE 8
    DEC(M,D) M+2
    DECIMAL(M,D) M+2
    BIT(M) 1~8

    关于每个类型的详细信息可以通过 ? int命令自行查询

    • 整数类型后面括号中的数值,只是指定显示宽度作用,一般结合zerofill使用,指定zerofill后mysql自动为该列添加UNSIGNED属性。
    • 整数类型还有一个属性为AUTO_INCREMENT,对于使用该属性的列应定义为NOT NULL并定义为PRIMARY KEY或UNIQUE
    • mysql中小数分为浮点数(float和double)和定点数(decimal),定点数在mysql以字符串形式存放,比浮点数更精确。在实际使用中浮点数建议不使用精度和标度,定点数使用
    • bit用于存放字段值,BIT(M)可用来存放多位二进制,M范围为1~64,默认为1,select查询时需使用bin()或者hex()读取。

    日期时间类型

    数据类型 字节 零值表示 常用
    DATE 4 0000-00-00 1
    DATETIME 8 0000-00-00 00:00:00 1
    TIMESTAMP 4 00000000000000 0
    TIME 3 00:00:00 1
    YEAR 1 0000 0

    mysql会给表中的第一个timestamp类型自动创建默认值CURRENT_TIMESTAMP,如有第二个则默认值为0。timestamp还有一个重要特点是和时区相关,插入或取出日期时都会先转换为本地时区。并且timestamp不适合用来存放久远日期,最大值为2038年某一天。

    日期类型的插入格式

    • YYYY-MM-DD HH:MM:SS 或者YY-MM-DD HH:MM:SS格式的字符串,允许“不严格语法”,说白了就是只要能分辨,什么样的格式都可以。
    • YYYYMMDDHHMMSS或者YYMMDDHHMMSS格式的字符串只要是一个合法日期都可以。并且可以接受6、8、12、14位数字。
    • 还可以使用now()或CURRENT_DATE函数。

    字符串类型

    字符串类型 字节 描述及存储需求
    CHAR(M) M M为0~255之间的整数
    VARCHAR(M) M为0~65535之间整数,值的长度+1个字节
    TINYBLOB 允许长度0~255字节,值得长度+1个字节
    BLOB 0~65535字节,值得长度+2个字节
    MEDIUMBLOB 0~167772150字节,+3
    LONGBLOB 0~4294967295,+4
    TINYTEXT 0~255,+2
    TEXT 0~65535,+2
    MEDIUMTEXT 0~167772150,+3
    LONGTEXT 0~4294967295,+4
    VARBINARY(M) 0~M变长字节字符串,+1
    BINARY(M) 0~M定长
    • char和varchar都用来保存较短字符串,char长度固定为声明的长度,varchar为变长;在检索时,char列删除了尾部的空格,而varchar则保留。相对应的二进制字符串为binary和varbinary。

    ENUM类型

    枚举类型的值需要在创建表时通过枚举方式显示指定,1255用1字节存储,25565535用2个。最多65535个成员,一次只能选取一个成员。enum类型忽略大小写对于插入不在ENUM指定范围内的值时,插入了所指定范围的第一个值

    SET类型

    字符串对象,可包含0~64个成员,根据成员不同,存储上也有不同。

    • 1~8,1字节
    • 9~16,2字节
    • ……
    • 33~64,8字节

    set可一次性选取多个成员,对超出允许范围的值不允许注入,而对于包含重复成员的集合将只取一次。

    [Github传送门][1]
    [1]: https://github.com/Melody12ab/db_mysql_note

    相关文章

      网友评论

        本文标题:MySQL数据类型

        本文链接:https://www.haomeiwen.com/subject/tkfmittx.html