美文网首页
MySQL - 数据类型

MySQL - 数据类型

作者: 任未然 | 来源:发表于2019-10-15 00:01 被阅读0次

一、数据类型是什么?

数据类型是指列的数据特征,它决定了数据的存储格式,代表了不同的信息类型。

有一些数据是要存储为数字的,数字当中有些是要存储为整数、小数、日期型等...

二、MYSQL常见数据类型

MySQL支持多种类型,大致可以分为四类:数值型、浮点型、日期/时间和字符串(字符)类型

三、整型

  1. 常用
    数据类型 字节数 最小值 最大值
    TINYINT 1 -128 127
    INT 4 -2147483648 2147483647
    BIGINT 8 -9223372036854775808 9223372036854775807
  2. 语法格式
    整型
  3. 说明
    • 无论N等于多少,int永远占4个字节
    • N表示的是显示宽度,
    • N可以省略不写,默认是11位
  4. 示例代码
    create table test1 (
        a int,
        b int(11) ,
        c int(10) ,
        d int(255)
    )
    insert into test_int_width values(1, 1, 1, 1111111111);
    select * from test1;
    

四、浮点型

  1. 说明
    MySQL中浮点型常用的有三种,分别为float、double、Decimal,可以指定浮点数和定点数的精度
  2. 常用
    数据类型 字节数 备注 范围
    float 4 单精度浮点型 最小非零值:±1.175494351E – 38
    double 8 双精度浮点型 最小非零值:±2.2250738585072014E – 308
    Decimal 8 定点数的精度 可变;其值的范围依赖于M 和D
  3. 语法格式
    浮点类型[(M,D)]
    
  4. 参数说明
    • M表示总长度,
    • D表示小数部分长度,
    • 所以整数部分长度为M-D
    • 当我们不指定M、D的时候,会按照实际的精度来处理。
  5. 区别
    • 当不指定精度时,Float、Double默认会保存实际精度,而Decimal默认是整数;
    • 当标度不够时,都会四舍五入,但Decimal会警告信息。
  6. 总结
    1、浮点数存在误差问题(精度丢失问题);
    2、对货币等对精度敏感的数据,应该用定点数表示或存储;
    3、编程中,如果用到浮点数,要特别注意误差问题,并尽量避免做浮点数比较;
  7. 示例代码
    CREATE TABLE test(
        f FLOAT(5,2) DEFAULT NULL,
        d DOUBLE(5,2) DEFAULT NULL,
        de DECIMAL(5,2) DEFAULT NULL
    ) engine=innodb charset=utf8;
    INSERT INTO test(f,d,de) VALUES(1.23,1.23,1.23);
    

五、字符串

  1. 表格
    类型 大小 用途 说明
    CHAR 0-255字节 定长字符串 编码方式有关
    VARCHAR 0-65535 字节 变长字符串 编码方式有关
    TEXT 0-64kb 长文本数据 M>500,通常会使用文本字符串,varchar也会自动转为text
  2. 语法格式
    字符串类型(M)
    
  3. 参数说明
    • m表示字符串长度,必填
    • text 不能指定长度
  4. 示例代码
    CREATE TABLE articles (
        title VARCHAR(255),
        desc TEXT
    );
    
  5. char和varchar:
    • char(n) 若存入字符数小于n,则以空格补于其后,查询之时再将空格去掉。所以char类型存储的字符串末尾不能有空格,varchar不限于此。
    • char(n) 固定长度,char(4)不管是存入几个字符,都将占用4个字节,varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),所以varchar(4),存入3个字符将占用4个字节。
    • char类型的字符串检索速度要比varchar类型的快。
  6. varchar和text:
    • varchar可指定n,text不能指定,内部存储varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),text是实际字符数+2个字节。
    • text类型不能有默认值。
    • varchar可直接创建索引,text创建索引要指定前多少个字符。varchar查询速度快于text,在都创建索引的情况下,text的索引似乎不起作用。

六、日期时间

  1. 常用
    数据类型 字节数 格式 备注
    date 3 yyyy-MM-dd 存储日期值
    time 3 HH:mm:ss 存储时分秒
    year 1 yyyy 存储年
    datetime 8 yyyy-MM-dd HH:mm:ss 存储日期+时间
    timestamp 4 yyyy-MM-dd HH:mm:ss 存储日期+时间,可作时间戳
  2. 语法格式
    日期时间
  3. 示例代码
    create table test_time (
        date_value date,
        time_value time,
        year_value year,
        datetime_value datetime,
        timestamp_value timestamp
    ) engine=innodb charset=utf8;
    insert into test_time values(now(), now(), now(), now(), now());
    

相关文章

网友评论

      本文标题:MySQL - 数据类型

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