• mysql数据类型分析


    CHAR, VARCHAR, TEXT

    • CHAR 定长字符串,占用空间大,速度快
    • VARCHAR 变长字符串,占用空间小,速度慢
    • CHAR后面的空格会被去掉,VARCHAR不会去掉
    • TEXT 不能有默认值
    • 数据检索的效率   CHAR > VARCHAR > TEXT

    ENUM()

    • 枚举的每一个元素都有一个序号
    • 自动去掉元素后面的空格
    • 插入数据时value必须是枚举中的一个,除了NULL
    • 只能从列表中选取一个值

    SET()

    • 可以从列表中选取多个值,多个值之间用逗号分隔
    • 以二进制数值保存在表中

    YEAR:

    • 保存年份   1901-2155
    • 可以保存数值形式,也可以保存这符串形式
    • 当输入两位数字或两位字符串的时候会自动在前面加20或19
    • 当插入一个数字0时,保存为0000
    • 当插入一个字符串0时,保存为2000

    TIME:

    • 由天数:小时:分钟:秒组成
    • INSERT tablename VALUES(‘1 12:12:12’); 存成 36:12:12
    • INSERT tablename VALUES(‘11:11’);  存成11:11:00
    • INSERT tablename VALUES(‘1234’);   存成00:12:34
    • INSERT tablename VALUES(‘12’);  存成00:00:12
    • INSERT tablename VALUES(‘0’);     存成00:00:00

    DATE:

    • 1000-0101  ~ 9999-12-31
    • INSERT tablename VALUES(‘12-6-7’);    2012-06-07
    • INSERT tablename VALUES(‘12/6/7’);     2012-06-07
    • INSERT tablename VALUES(‘120607’);    2012-06-07
    • INSERT tablename VALUES(‘12@6/7’);    2012-06-07
    • 一般时间用整型保存时间戳

    浮点类型:

    • 当插入数据小数位太多时,float, double 会自动四舍五入; DECIMAL会产生一个warning.
    • DECIMAL内部以字符串形式保存
    • 当数值以字符串形式插入时,float, double保存结果可能不对, 但DECIMAL不会错
    • 精度要求高时,应当使用DECIMAL
  • 相关阅读:
    [2019.2.24]BZOJ4591 [Shoi2015]超能粒子炮·改
    [2019.2.13]BZOJ4318 OSU!
    [2019.1.17]BZOJ1066 [SCOI2007]蜥蜴
    [2019.1.15]BZOJ2152 聪聪可可
    [2019.1.17]BZOJ3993 [SDOI2015]星际战争
    [2019.1.14]BZOJ2005 [Noi2010]能量采集
    [2019.1.10]BZOJ1853 [Scoi2010]幸运数字
    [2019.1.9]BZOJ2299 [HAOI2011]向量
    yyb博客的几道神仙题
    CQOI2018异或序列 [莫队]
  • 原文地址:https://www.cnblogs.com/huangxm/p/5734060.html
Copyright © 2020-2023  润新知