美文网首页哲思想法城市故事
MySQL数据库(十一)——数据类型(1)整数小数

MySQL数据库(十一)——数据类型(1)整数小数

作者: 黑白色的天空 | 来源:发表于2019-11-26 09:21 被阅读0次

在 MySQL 中常见的数据类型如下:

1) 整数类型

包括 TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT,浮点数类型 FLOAT 和 DOUBLE,定点数类型 DECIMAL。

2) 日期/时间类型

包括 YEAR、TIME、DATE、DATETIME 和 TIMESTAMP。

3) 字符串类型

包括 CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM 和 SET 等。

4) 二进制类型

包括 BIT、BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。



MySQL INT、TINYINT、SMALLINT、MEDIUMINT、BIGINT(整数类型)

整数类型又称数值型数据,数值型数据类型主要用来存储数字。

MySQL 提供了多种数值型数据类型,不同的数据类型提供不同的取值范围,可以存储的值范围越大,所需的存储空间也会越大。

MySQL 主要提供的整数类型有 TINYINTSMALLINTMEDIUMINTINTBIGINT,其属性字段可以添加 AUTO_INCREMENT 自增约束条件。下表中列出了 MySQL 中的数值类型。

类型名称说明存储需求

TINYINT很小的整数1个字节

SMALLINT小的整数2个宇节

MEDIUMINT中等大小的整数3个字节

INT (INTEGHR)普通大小的整数4个字节

BIGINT大整数8个字节

从上表中可以看到,不同类型的整数存储所需的字节数不相同,占用字节数最小的是 TINYINT 类型,占用字节最大的是 BIGINT 类型,占用的字节越多的类型所能表示的数值范围越大。

根据占用字节数可以求出每一种数据类型的取值范围。例如,TINYINT 需要 1 个字节(8bit)来存储,那么 TINYINT 无符号数的最大值为 28-1,即 255;TINYINT 有符号数的最大值为 27-1,即 127。其他类型的整数的取值范围计算方法相同,如下表所示。

数据类型取值范围

提示:显示宽度和数据类型的取值范围是无关的。显示宽度只是指明 MySQL 最大可能显示的数字个数,数值的位数小于指定的宽度时会由空格填充。如果插入了大于显示宽度的值,只要该值不超过该类型整数的取值范围,数值依然可以插入,而且能够显示出来。例如,year 字段插入 19999,当使用 SELECT 查询该列值的时候,MySQL 显示的将是完整的带有 5 位数字的 19999,而不是 4 位数字的值。

其他整型数据类型也可以在定义表结构时指定所需的显示宽度,如果不指定,则系统为每一种类型指定默认的宽度值。

不同的整数类型有不同的取值范围,并且需要不同的存储空间,因此应根据实际需要选择最合适的类型,这样有利于提高查询的效率和节省存储空间。

MySQL FLOAT、DOUBLE、DECIMAL(小数类型)

MySQL中使用浮点数和定点数来表示小数。

浮点类型有两种,分别是单精度浮点数(FLOAT)和双精度浮点数(DOUBLE);定点类型只有一种,就是 DECIMAL

浮点类型和定点类型都可以用(M, D)来表示,其中M称为精度,表示总共的位数;D称为标度,表示小数的位数。

浮点数类型的取值范围为 M(1~255)和 D(1~30,且不能大于 M-2),分别表示显示宽度和小数位数。M 和 D 在 FLOAT 和DOUBLE 中是可选的,FLOAT 和 DOUBLE 类型将被保存为硬件所支持的最大精度。DECIMAL 的默认 D 值为 0、M 值为 10。

下表中列出了 MySQL 中的小数类型和存储需求。

小数类型和存储需求

DECIMAL 类型不同于 FLOAT 和 DOUBLE。DOUBLE 实际上是以字符串的形式存放的,DECIMAL 可能的最大取值范围与 DOUBLE 相同,但是有效的取值范围由 M 和 D 决定。如果改变 M 而固定 D,则取值范围将随 M 的变大而变大。

从上表中可以看到,DECIMAL 的存储空间并不是固定的,而由精度值 M 决定,占用 M+2 个字节。

FLOAT 类型的取值范围如下:

有符号的取值范围:-3.402823466E+38~-1.175494351E-38。

无符号的取值范围:0 和 -1.175494351E-38~-3.402823466E+38。

DOUBLE 类型的取值范围如下:

有符号的取值范围:-1.7976931348623157E+308~-2.2250738585072014E-308。

无符号的取值范围:0 和 -2.2250738585072014E-308~-1.7976931348623157E+308。

提示:不论是定点还是浮点类型,如果用户指定的精度超出精度范围,则会四舍五入进行处理。

FLOAT 和 DOUBLE 在不指定精度时,默认会按照实际的精度(由计算机硬件和操作系统决定),DECIMAL 如果不指定精度,默认为(10,0)。

浮点数相对于定点数的优点是在长度一定的情况下,浮点数能够表示更大的范围;缺点是会引起精度问题。

最后再强调一下:在 MySQL 中,定点数以字符串形式存储,在对精度要求比较高的时候(如货币、科学数据),使用 DECIMAL 的类型比较好,另外两个浮点数进行减法和比较运算时也容易出问题,所以在使用浮点数时需要注意,并尽量避免做浮点数比较。

MySQL FLOAT、DOUBLE、DECIMAL(小数类型)

MySQL FLOAT、DOUBLE、DECIMAL(小数类型)

相关文章

  • MySQL数据库(十一)——数据类型(1)整数小数

    在 MySQL 中常见的数据类型如下: 1) 整数类型 包括 TINYINT、SMALLINT、MEDIUMINT...

  • PHP面试之数据库基础

    [TOC] 1. MySQL数据库基础 MySQL数据类型 整数类型 tinyint smallint mediu...

  • mysql中的数据类型

    MySQL的数据类型分为 一 : 数值型 数值型都是数字 分为 整数型 和小数型 整数型 tinytint u...

  • MySQL数据类型

    MySQL数据库中常用字段类型 整数型:TINYINT,SMALLINT,INT,BIGINT小数型:FLOAT,...

  • 1.4 Java 数据

    1.数据类型 a.基本数据类型:整数,小数,字符,布尔 b.引用数据类型:数组,类,接口 2.常量 a.整数类型 ...

  • MYSQL数据库数据类型

    MYSQL数据库数据类型 一.整数类型和浮点数典型 1.有符号/没符号 对于整数和负整数来说,默认情况下是有符号范...

  • 2018-07-02

    数据类型 与 类型转换 javascript语言的数据类型 数值(number):整数和小数(比如1和3.14) ...

  • python的基础

    1.数据类型 整数int: python可以任意大小的整数,包括负整数。 浮点数float: 小数 字符串stri...

  • Java 知识点

    1. 基础 1.1 数据类型 基本类型 : 整数 ,小数 ,char ,boolean 枚举类型 :enum ...

  • 2018-07-06-python学习语法篇

    一、基础知识 1.数据类型 数据类型主要有整数型(整数连除法都是整数的,用地板除//,浮点数(其实就是小数,这么说...

网友评论

    本文标题:MySQL数据库(十一)——数据类型(1)整数小数

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