当前位置: 首页 > news >正文

Mysql 数据类型

1、数值数据类型

1.1 整数类型(精确值)

INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT

MySQL支持SQL标准的整数类型INTEGER (或INT)和SMALLINT。作为标准的扩展,MySQL还支持整数类型TINYINTMEDIUMINTBIGINT。下表显示了每种整数类型所需的存储和范围。

在这里插入图片描述

1.2 定点类型(精确值)

DECIMAL, NUMERIC

DECIMALNUMERIC类型存储精确的数值数据值。当需要保持精确的精确度(exact precision)时,例如货币数据,就会使用这些类型。在MySQL中,NUMERIC被实现为DECIMAL,因此下面关于DECIMAL的说明同样适用于NUMERIC

DECIMAL列声明中,可以(通常是)指定精度和比例。例如:

salary DECIMAL(5,2)

在本例中,5是精度(precision),2是刻度(scale)。精度表示为值存储的有效位数(significant digits),刻度表示可以在小数点后存储的位数。

标准SQL要求DECIMAL(5,2)能够存储5位数字和2位小数的任何值,因此可以存储在salary列中的值范围为-999.99到999.99。

在标准SQL中,DECIMAL(M)语法等价于DECIMAL(M,0)。类似地,DECIMAL语法等价于DECIMAL(M,0),其中允许实现决定M的值。MySQL支持这两种不同形式的DECIMAL语法。M的缺省值为10。

如果刻度为0,则DECIMAL值不包含小数点或小数部分。

DECIMAL的最大位数是65,但是给定DECIMAL列的实际范围可以受到给定列的精度或scale 的限制。如果为此类列分配的值的小数点后的数字多于指定刻度所允许的数字,则该值将转换为该刻度。(精确的行为是特定于操作系统的,但通常效果是截断到允许的位数。)

1.3 浮点类型(近似值)

FLOAT, DOUBLE

FLOATDOUBLE类型表示近似的数值数据值。MySQL使用4个字节作为单精度值,8个字节用于双精度值。

对于FLOAT, SQL标准允许精度(precision )的可选规范(但不允许指数(exponent)的范围)在关键字FLOAT后面的括号中,即FLOAT(p)。MySQL也支持这个可选的精度规范,但FLOAT§中的精度值仅用于确定存储大小。精度从0到23会产生一个4字节的单精度FLOAT列。精度从24到53会产生一个8字节的双精度DOUBLE列。

MySQL允许使用非标准语法:FLOAT(M,D)REAL(M,D)DOUBLE PRECISION(M,D)。这里,(M,D)表示这些值总共可以存储M位,其中可以在小数点后D位。例如,定义为FLOAT(7,4)的列显示为-999.9999。MySQL在存储值时执行舍入,因此如果将999.00009插入FLOAT(7,4)列,近似结果为999.0001。

从MySQL 8.0.17开始,非标准的FLOAT(M,D)和DOUBLE(M,D)语法已经弃用,你应该可以期待在MySQL的未来版本中对它的支持被移除。

由于浮点值是近似值,而不是存储为精确值,因此在比较中试图将它们视为精确值可能会导致问题。它们还受平台或实现依赖关系的制约。有关更多信息,请参见B.3.4.8节“浮点值的问题”。

为了获得最大的可移植性,需要存储近似数值数据值的代码应该使用FLOATDOUBLE PRECISION,而不需要指定精度或位数。

http://www.lryc.cn/news/178.html

相关文章:

  • 运行Whisper笔记(1)
  • 2023年最强大的12款数据可视化工具,值得收藏
  • LeetCode刷题系列 -- 523. 连续的子数组和
  • LeetCode刷题系列 -- 525. 连续数组
  • JavaEE15-Spring Boot统一功能处理
  • centos7.6 设置防火墙
  • 在线支付系列【22】微信支付实战篇之集成服务商API
  • 3.2 埃尔米特转置
  • Python爬虫之Scrapy框架系列(13)——实战ZH小说爬取数据入MySql数据库
  • MySQL篇02-三大范式,多表查询
  • vue-cli3创建Vue项目
  • Linux perf probe 的使用(三)
  • python GUI编程 多窗口跳转
  • nuxt 学习笔记
  • Python编程自动化办公案例(1)
  • 一站式 Elasticsearch 集群指标监控与运维管控平台
  • C# 调用Python
  • 51单片机最强模块化封装(3)
  • 【CSS 布局】水平垂直居中
  • 【C++】类和对象--类的6个默认成员函数
  • 常见面试题---------如何处理MQ消息丢失的问题?
  • 十四、Linux网络:高级IO
  • 带你走进API安全的知识海洋
  • 【Java】TCP的三次握手和四次挥手
  • JUC并发编程
  • 概率统计·假设检验【正态总体均值的假设检验、正态总体方差的假设检验】
  • 如何预测机组设备健康状态?你可能需要这套解决方案
  • C++类和对象:面向对象编程的核心。| 面向对象还编什么程啊,活该你是单身狗。
  • CUDA虚拟内存管理
  • 线程池小结