zoukankan      html  css  js  c++  java
  • MySQL数据类型及后面小括号的意义

    参考from:

    MySQL数据类型及后面小括号的意义

    1,数值类型

      1.1数值类型的种类

      标准 SQL 中的数值类型,包括严格数值类型(INTEGER、SMALLINT、DECIMAL、NUMERIC),以及近似数值数据类型(FLOAT、REAL、DOUBLE PRECISION)。

      MySQL在此基础上又扩展了TINYINT、MEDIUMINT 和 BIGINT 这 3 种长度不同的整型,并增加了 BIT 类型,用来存放位数据。

      对于小数的表示,MySQL 分为两种方式:浮点数和定点数。浮点数包括 float(单精度)和 double(双精度),而定点数则只有 decimal 一种表示。定点数在 MySQL 内部以字符串形式存放,比浮点数更精确,适合用来表示货币等精度高的数据。 

      浮点数和定点数都可以用类型名称后加“(M,D)”的方式来进行表示,“(M,D)”表示该值一共显示 M 位数字(整数位+小数位),其中 D 位位于小数点后面,M 和 D 又称为精度和标度。例如,定义为 float(7,4)的一个列可以显示为-999.9999。MySQL 保存值时进行四舍五入,因此如果在float(7,4)列内插入 999.00009,近似结果是 999.0001。 



        1.2数值类型的显示宽度

      对于5种整数类型(tinyint、smallint、mediumint、int、bigint),MySQL 还支持在类型名称后面的小括号内指定显示宽度(并不是该类型占用字节数)。

      例如 int(5)表示当数值宽度小于 5 位的时候在数字前面填满宽度,如果不显示指定宽度则默认为 int(11)。一般配合 zerofill 使用,顾名思义,zerofill 就是用“0”填充的意思,也就是在数字位数不够的空间用字符“0”填满。以下几个例子分别描述了填充前后的区别。

     (1)创建表 t1,有 id1 和 id2 两个字段,指定其数值宽度分别为 int 和 int(5)。
            

    (2)在 id1 和 id2 中都插入数值 1,可以发现格式没有异常。
            

    (3)分别修改 id1 和 id2 的字段类型,加入 zerofill 参数:
            

      设置了宽度限制后,如果插入大于宽度限制的值,会不会截断或者插不进去报错?答案是肯定的:不会对插入的数据有任何影响,还是按照类型的实际精度进行保存,这是,宽度格式实际已经没有意义 。

            

        1.3数值类型的属性

        (1)UNSIGNED(无符号) ,如果需要在字段里面保存非负数或者需要较大的上限值时,可以用此选项,它的取值范围是正常值的下限取 0,上限取原值的 2 倍,例如,tinyint 有符号范围是-128~+127,而无符号范围是 0~255。如果一个列指定为 zerofill,则 MySQL 自动为该列添加 UNSIGNED 属性。 

        (2)AUTO_INCREMENT ,在需要产生唯一标识符或顺序值时,可利用此属性,这个属性只用于整数类型。AUTO_INCREMENT 值一般从 1 开始,每行增加 1。 一个表中最多只能有一个 AUTO_INCREMENT列 。对于任何想要使用 AUTO_INCREMENT 的列,应该定义为 NOT NULL,并定义为 PRIMARY KEY 或定义为 UNIQUE 键。 例如,可按下列任何一种方式定义 AUTO_INCREMENT 列: 

        

    2,日期时间类型

      MySQL 5.0 中所支持的日期和时间类型

    • 如果要用来表示年月日,通常用 DATE 来表示。 
    • 如果要用来表示年月日时分秒,通常用 DATETIME 表示 。
    • 如果只用来表示时分秒,通常用 TIME 来表示 。
    • 如果需要经常插入或者更新日期为当前系统时间,则通常使用 TIMESTAMP 来表示。TIMESTAMP 值返回后显示为“YYYY-MM-DD HH:MM:SS”格式的字符串,显示宽度固定为 19 个字符。如果想要获得数字值,应在 TIMESTAMP 列添加+0。 
    • 如果只是表示年份,可以用 YEAR 来表示,它比 DATE 占用更少的空间。YEAR 有 2 位或4 位格式的年。默认是 4 位格式。 

     3,字符串类型   

        

      CHAR 和 VARCHAR 很类似,都用来保存 MySQL 中较短的字符串。二者的主要区别在于存储方式的不同:CHAR 列的长度固定为创建表时声明的长度,长度可以为从 0~255 的任何值(即指定长度是4的话,存的字符串长度必须是4);而 VARCHAR 列中的值为可变长字符串,长度可以指定为 0~255 (5.0.3 以前)或者 65535 (5.0.3以后)之间的值(即指定长度是4的话,存的字符串长度最大是4,1、2、3、4都可以)。

  • 相关阅读:
    PAT (Advanced Level) Practice 1055 The World's Richest (25 分) (结构体排序)
    PAT (Advanced Level) Practice 1036 Boys vs Girls (25 分)
    PAT (Advanced Level) Practice 1028 List Sorting (25 分) (自定义排序)
    PAT (Advanced Level) Practice 1035 Password (20 分)
    PAT (Advanced Level) Practice 1019 General Palindromic Number (20 分) (进制转换,回文数)
    PAT (Advanced Level) Practice 1120 Friend Numbers (20 分) (set)
    从零开始吧
    Python GUI编程(TKinter)(简易计算器)
    PAT 基础编程题目集 6-7 统计某类完全平方数 (20 分)
    PAT (Advanced Level) Practice 1152 Google Recruitment (20 分)
  • 原文地址:https://www.cnblogs.com/gengyufei/p/15437377.html
Copyright © 2011-2022 走看看