zoukankan      html  css  js  c++  java
  • MySQL数据类型之数值类型,对理解类型定义中的“位”有莫大的帮助

    整数类型:TINYINTSAMLLINTMEDIUMINTINTBIGINT--1字节、23.48

    浮点数类型:FLOAT(m,d)DOUBLE(m,d)==REAL-4字节、8

    定点数类型:DECIMAL(m,d)NUMERIC-m+2字节、8

    位类型:BIT(m)-1-8字节

    各个类型的详细范围可以参考mysql文档

     

     

    数据类型小例:

    1.整数类型

    create table t1

    (

      id int,

      id2 int(4)

    );

    insert t1 select 1,2;

    select * from t1;

    +------+------+

    | id   | id2  |

    +------+------+

    |    1 |    2 |

    +------+------+

    alter table t1 modify id int zerofill;

    alter table t1 modify id2(4) int zerofill;

    select * from t1;

    +------------+------------+

    | id         | id2        |

    +------------+------------+

    | 0000000001 | 0002      |

    +------------+------------+

    insert t1 select 1,11111;

    Select * from t1;

    +------------+------------+

    | id         | id2        |

    +------------+------------+

    | 0000000001 | 0002 |

    | 0000000001 | 11111 |

    +------------+------------+

    insert t1 select -1,-2;

    +-------+------+---------------------------------------------+

    | Level | Code | Message                                     |

    +-------+------+---------------------------------------------+

    | Error | 1264 | Out of range value for column 'id' at row 1 |

    +-------+------+---------------------------------------------+

     

    结论:

           1. INT类型默认宽度11

          2上面的zerofill属性可以在int指定宽度不足时候在前面补上

          3.在插入的数值实际长度超过INT类型指定宽度时,忽略宽度,插入正确数值;

          4.在拥有zerofill属性后的int字段自动加上属性UNSIGNED,范围从0开始

     

     

    2.小数类型

      小数分成浮点数和定点数。浮点数包括单精度的FLOAT和双精度的DOUBLE;定点数则在内部以字符串形式存放,比较是和货币等高精度数据。

      小数类型后面的(md)前者表示数字共有m个数字(整数+小数位),小数点后面有d个数字位。

    create table t2

    (

     col1 float(5,2),

     col2 decimal(5,2)

    );

    insert t2 select 1.11,1.11;

    select * from t2;

    +------+------+

    | col1 | col2 |

    +------+------+

    | 1.11 | 1.11 |

    +------+------+

    insert t2 select 1.225,1.225;

    select * from t2;

    +------+------+

    | col1 | col2 |

    +------+------+

    | 1.11 | 1.11 |

    | 1.23 | 1.23 |

    +------+------+

    alter table t2 modify col1 float;

    alter table t2 modify col2 decimal;

    select * from t2;

    +------+------+

    | col1 | col2 |

    +------+------+

    | 1.11 |    1 |

    | 1.23 |    1 |

    | 1.11 |    1 |

    +------+------+

    insert t2 select 1.611111,1.6111111;

    select * from t2;

    +---------+------+

    | col1    | col2 |

    +---------+------+

    |    1.11 |    1 |

    |    1.23 |    1 |

    |    1.11 |    1 |

    | 1.61111 |    2 |

    +---------+------+

     

    结论:

    1.指定了小数位数后,如果插入的数的小数位数超过,会自动截断,并且四舍五入;

    2.修改小数位数后,decima会对现有数据进行自动截断,以符合现在的数据类型;

    3.默认的decimalmd分别为10也就是默认整形;

     

     

    3.bit数值类型

      Bit(m)m的范围从1-64 默认为1

    create table t3

    (

      col bit(1)

    );

    insert t3 select 2;

    +-------+------+-----------------------------------------+

    | Level | Code | Message                                 |

    +-------+------+-----------------------------------------+

    | Error | 1406 | Data too long for column 'col' at row 1 |

    +-------+------+-----------------------------------------+

    alter table t3 modify col bit(6);

    insert t3 select 2;

    select * from t3;

    +------+

    | col  |

    +------+

    |      |

    +------+

    select BIN(col),hex(col) from t3 ;

    +----------+----------+

    | BIN(col) | hex(col) |

    +----------+----------+

    | 10       | 2        |

    +----------+----------+

     

    结论:

    1.插入bit字段数值时,首先会把值转成2进制;如果位数比自定的长度大,插入失败;

        2.直接显示bit类型数据,结果为null;需要使用 bin()或者hex()等函数转化后显示;

  • 相关阅读:
    hdu6325 /// 上凸包
    hdu6315 /// 线段树区间更新
    hdu6311 /// 欧拉路径 无向图最小路径覆盖 输出正反路径
    Codeforces Round #535 F-MST Unification
    HDU4405 Aeroplane chess (概率DP,转移)
    ZOJ 3329 One Person Game(概率DP,求期望)
    poj3744 (概率DP+矩阵快速幂)
    “美登杯”上海市高校大学生程序设计 E. 小花梨的数组 (线段树)
    关于标记的一些事~~
    关于C(n,m) 的奇偶 ,与C(n,0),C(n,1),C(n,2)…C(n,n).当中有多少个奇数
  • 原文地址:https://www.cnblogs.com/acpp/p/2076464.html
Copyright © 2011-2022 走看看