• 数据库开发——MySQL——数据类型——数值类型


    MySQL中定义数据字段的类型对数据库的优化是非常重要的。

    MySQL支持多种类型,大致可以分为四类:数值、日期/时间、字符串(字符)类型、枚举类型与集合类型。

    一、数值类型

    MySQL支持所有标准SQL数值数据类型。

    类型 大小(字节) 范围(有符号) 范围(无符号) 用途
    TINYINT 1 (-128,127) (0,255) 小整数值
    SMALLINT 2 (-32 768,32 767) (0,65 535) 大整数值
    MEDIUMINT 3 (-8 388 608,8 388 607) (0,16 777 215) 大整数值
    INT或INTEGER 4 (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整数值
    BIGINT 8 (-9 233 372 036 854 775 808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 极大整数值
    FLOAT 4 (-3.402 823 466 E+38,1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) 0,(1.175 494 351 E-38,3.402 823 466 E+38) 单精度 浮点数值
    DOUBLE 8 (1.797 693 134 862 315 7 E+308,2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 双精度 浮点数值
    DECIMAL 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 依赖于M和D的值 依赖于M和D的值 小数值

    1.整数类型

    tinyint[(m)] [unsigned] [zerofill]

    小整数,数据类型用于保存一些范围的整数数值范围:
    有符号(默认为有符号):
        -128 ~ 127
    无符号:
        0 ~ 255
    
    PS: MySQL中无布尔值,使用tinyint(1)构造。
    

    创建有符号tinyint表

    create table t1(x tinyint);
    desc t1;
    

    在这里插入图片描述
    尝试插入值

    insert into t1 values(-129);
    insert into t1 values(-128);
    insert into t1 values(127);
    insert into t1 values(128);
    

    在这里插入图片描述

    查看表中数据

    select * from t1;
    

    在这里插入图片描述
    创建无符号tinyint表

    create table t2(x tinyint unsigned);
    

    在这里插入图片描述
    尝试插入值

    insert into t2 values(-1);
    insert into t2 values(0);
    insert into t2 values(255);
    insert into t2 values(256);
    

    在这里插入图片描述
    查看表中数据

    select * from t2;
    

    在这里插入图片描述

    int[(m)][unsigned][zerofill]

    整数,数据类型用于保存一些范围的整数数值范围:
    有符号(默认为有符号):
          -2147483648 ~ 2147483647
    无符号:
          0 ~ 4294967295
    

    创建无符号int表

    create table t3(x int);
    

    在这里插入图片描述

    尝试插入值

    insert into t3 values(-2147483649);
    insert into t3 values(-2147483648);
    insert into t3 values(2147483647);
    insert into t3 values(2147483648);
    

    在这里插入图片描述

    查看表中数据

    select * from t3;
    

    在这里插入图片描述

    创建有符号int表

    create table t4(x int unsigned);
    

    在这里插入图片描述

    尝试插入值

    insert into t4 values(-1);
    insert into t4 values(0);
    insert into t4 values(4294967295);
    insert into t4 values(4294967296);
    

    在这里插入图片描述
    查看表中数据

    select * from t4;
    

    在这里插入图片描述

    bigint[(m)][unsigned][zerofill]

    大整数,数据类型用于保存一些范围的整数数值范围:
    有符号:
            -9223372036854775808 ~ 9223372036854775807
    无符号:
            0  ~  18446744073709551615
    

    创建无符号bigint表

    create table t5(x bigint);
    

    在这里插入图片描述

    尝试插入值

    insert into t5 values(-9223372036854775809);
    insert into t5 values(-9223372036854775808);
    insert into t5 values(9223372036854775807);
    insert into t5 values(9223372036854775808);
    

    在这里插入图片描述
    查看表中数据

    select * from t5;
    

    在这里插入图片描述
    创建有符号bigint表

    create table t6(x bigint unsigned);
    

    在这里插入图片描述
    尝试插入值

    insert into t6 values(-1);
    insert into t6 values(0);
    insert into t6 values(18446744073709551615);
    insert into t6 values(18446744073709551616);
    

    在这里插入图片描述
    查看表中数据

    select * from t6;
    

    在这里插入图片描述

    2.浮点型

    FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]

    定义:
            单精度浮点数(非准确小数值),m是数字总个数,d是小数点后个数。m最大值为255,d最大值为30
    
    有符号:
               -3.402823466E+38 to -1.175494351E-38,
               1.175494351E-38 to 3.402823466E+38
    无符号:
               1.175494351E-38 to 3.402823466E+38
    
    
    精确度: 
               **** 随着小数的增多,精度变得不准确 ****
               .
    

    创建有符号float表

    create table t7(x float(255,30));
    

    尝试插入π小数点后70位

    insert into t7 values(3.1415926535897932384626433832795028841971693993751058209749445923078164);
    

    查看表中数据

    select * from t7;
    

    在这里插入图片描述
    随着小数的增多,精度开始不准确

    DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]

    定义:
               双精度浮点数(非准确小数值),m是数字总个数,d是小数点后个数。m最大值为255,d最大值为30
    
    有符号:
               -1.7976931348623157E+308 to -2.2250738585072014E-308
               2.2250738585072014E-308 to 1.7976931348623157E+308
    
    无符号:
               2.2250738585072014E-308 to 1.7976931348623157E+308
    
    精确度:
               ****随着小数的增多,精度比float要高,但也会变得不准确 ****
    

    创建有符号double表

    create table t8(x double(255,30));
    

    尝试插入π小数点后70位

    insert into t8 values(3.1415926535897932384626433832795028841971693993751058209749445923078164);
    

    查看表中数据

    select * from t8;
    

    在这里插入图片描述
    精度比float要准确点,但随着小数的增多,同样变得不准确

    decimal[(m[,d])] [unsigned] [zerofill]

    定义:
              准确的小数值,m是数字总个数(负号不算),d是小数点后个数。 m最大值为65,d最大值为30。
    
    
    精确度:
               **** 随着小数的增多,精度始终准确 ****
               对于精确数值计算时需要用此类型
               decaimal能够存储精确值的原因在于其内部按照字符串存储。
    

    创建有符号decimal表

    create table t9(x decimal(65,30));
    

    尝试插入π小数点后70位

    insert into t9 values(3.1415926535897932384626433832795028841971693993751058209749445923078164);
    

    查看表中数据

    select * from t9;
    

    在这里插入图片描述
    精度始终准确,d为30,于是只留了30位小数

    用zerofill测试整数类型的显示宽度

    注意:为该类型指定宽度时,仅仅只是指定查询结果的显示宽度,与存储范围无关。

    完全没必要为整数类型指定显示宽度,使用默认的就可以了。

    默认的显示宽度,都是在最大值的基础上加1。

    创建指定zerofill的有符号int表

    create table t10(x int(5) zerofill);
    

    尝试插入不同长度的数值

    insert into t10 values
        (1),
        (11),
        (111),
        (1111),
        (11111),
        (111111),
        (1111111),
        (11111111);
    

    查看表中数据

    select * from t10;
    

    在这里插入图片描述

  • 相关阅读:
    3813: 奇数国|树状数组|欧拉函数
    利用Perlin nosie 完毕(PS 滤镜—— 分成云彩)
    Qt QImageReader 相似乎有bug
    android studio 更新Gradle版本号方法
    Junit测试
    POI导出
    Properties文件读取
    md5加密
    递归找出文件夹里面所有文件
    java FileReader/FileWriter读写文件
  • 原文地址:https://www.cnblogs.com/AlexKing007/p/12337990.html
Copyright © 2020-2023  润新知