首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

mysql数字的数据类型

基础概念

MySQL中的数字数据类型主要包括整数类型(如TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT)和浮点数/小数类型(如FLOAT, DOUBLE, DECIMAL)。这些数据类型用于存储数值数据,每种类型都有其存储范围和精度。

相关优势

  • 存储效率:整数类型通常比字符串类型使用更少的存储空间。
  • 查询速度:数值类型的比较和计算通常比文本类型更快。
  • 精确性:DECIMAL类型提供了高精度的数值计算,适合金融等对精度要求高的应用。

类型

  • 整数类型
    • TINYINT:占用1字节,范围-128到127或0到255(无符号)。
    • SMALLINT:占用2字节,范围-32768到32767或0到65535(无符号)。
    • MEDIUMINT:占用3字节,范围-8388608到8388607或0到16777215(无符号)。
    • INT:占用4字节,范围-2147483648到2147483647或0到4294967295(无符号)。
    • BIGINT:占用8字节,范围-9223372036854775808到9223372036854775807或0到18446744073709551615(无符号)。
  • 浮点数/小数类型
    • FLOAT:单精度浮点数,占用4字节。
    • DOUBLE:双精度浮点数,占用8字节。
    • DECIMAL:固定精度的小数,存储大小依赖于指定的精度和小数位数。

应用场景

  • 整数类型:通常用于ID、数量、状态码等不需要小数部分的数值。
  • 浮点数/小数类型:用于需要小数计算的场景,如价格、体重、温度等。

可能遇到的问题及解决方法

问题:为什么使用DECIMAL而不是FLOAT或DOUBLE?

原因:FLOAT和DOUBLE类型虽然可以处理大范围的数值,但它们是基于二进制的近似值存储,不适合需要精确计算的场景,如金融计算。

解决方法:使用DECIMAL类型,它以字符串的形式存储数值,能够提供精确的小数计算。

问题:如何选择合适的整数类型?

原因:选择不当可能导致存储空间浪费或数值溢出。

解决方法

  • 根据实际需要的数值范围选择最小的合适类型。
  • 如果预计数值会非常大,考虑使用BIGINT。
  • 如果不需要负数,可以选择无符号类型以扩大正数的范围。

示例代码

代码语言:txt
复制
CREATE TABLE products (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    price DECIMAL(10, 2) NOT NULL
);

在这个例子中,id字段使用INT类型,适合存储产品ID;price字段使用DECIMAL(10, 2)类型,适合存储价格,并且保证了计算的精确性。

参考链接

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

MySqlMySql数据类型

反过来,我们如果已经有数据被插入到MySql中了,一定是插入时候是合法 所以MySql中一般而言,数据类型本身也是一种约束,约束程序员尽可能进行正确插入,约束使用者,如果你不是一个很好使用者,...bit数据类型表t3: mysql> create table if not exists t3( -> id int, -> online bit(1) -> ); Query...,这些值实际存储是“数字”,因为这些选项每个选项值依次对应如下数字:1,2,3,…最多65535个;当我们添加枚举值时,也可以添加对应数字编号。...“数字”,因为这些选项每个选项值依次对应如下数字:1,2,4,8,16,32,…最多64个。...说明:不建议在添加枚举值,集合值时候采用数字方式,因为不利于阅读。

25130
  • MySQL | 不同数据类型

    数据定义语言:数据类型 数据类型数字 类型 大小 说明 TINYINT 1字节 ^1 小整数 SMALLINT 2字节 普通整数 MEDIUMINT 3字节 普通整数 INT 4字节 较大整数 BIGINT...8字节 大整数 FLOAT 4字节 单精度浮点数 DOUBLE 8字节 双精度浮点数 DECIMAL ——– DECIMAL(10, 2) 1^ : (-2^7 --- +2^7-1) 不精确浮点数...十进制浮点数无法在计算机中用二进制精确表达 CREATE TABLE temp( id INT UNSIGNED PRIMARY KEY, num FLOAT(20,10) ) 0.2 ---...temp CREATE TABLE temp( id INT UNSIGNED PRIMARY KEY, num DECIMAL(20,10) ) 0.2 ----> 0.2000000000 数据类型...不固定长度字符串 TEXT 1 - 65535 字符 不确定长度字符串 MEDIUMTEXT 1 - 1 千 6 百万字符 不确定长度字符串 LONGTEXT 1 - 42 亿字符 不确定长度字符串 数据类型

    1.6K20

    MySQL支持数据类型

    对于整型数据,MySQL还支持在类型后面的小括号内指定显示宽度,例如int(5)表示当数值宽度小于5位时候在数字前面填满宽度,如果不显示指定宽度则默认为int(11)。...一般配合zerofill使用,顾名思义,zerofill就是用”0”填充意思,也就是在数字位数不够空间用“0”填满。 ?...浮点型 对于小数表示,MySQL分为两种方式:浮点数和定点数。浮点数包括float(单精度)和double(双精度),而定点数(计算机表示数字一种方式,参与运算小数点位置固定不变。)...日期时间类型 MySQL中有多种数据类型可以用于日期和时间表示,不同版本可能有所差异。 这些数据类型主要区别如下。 如果要用来表示年月日,通常用DATE来表示。...字符串类型 MySQL中提供了多种对字符数据存储类型,不同版本可能有所差异。

    2.8K30

    MySQL(常见数据类型

    常见数据类型如下 数值型 整型 int 或 integer 小数 浮点数 单精度:float 双精度:double 定点数 numerice 字符型 短文本 定长 char 不定长 varchar...意思就是,char在定义长度时长度,在后面存储数据时是不可变。varchar反之。char是固定长度字符,varchar可变长度字符。...MySql中枚举类型数据插入都是以文本类型或数值插入,可以是具体对应值和对应数值文本或者对应数值。...其中需要注意数值插入时文本和数值(例:’1‘和1)插入结果是相同,另外一点就是 '0' 是可以插入,而0是不可以。...还有就是‘0’值是可以插入值,但是插入结果是一个空值,而且这个空值不是null。

    1K10

    mysql数据类型选择

    2、浮点数和定点数 浮点数FLOAT、DOUBLE相对于定点数DECIMAL优势是:在长度一定条件下,浮点数能表示更大数据范围。...由于TIMESTAMP列取值范围小于DATETIME取值范围,因此存储范围较大日期最好使用DATETIME 4、CHAR和CARCHAR CHAR是固定长度字符,VARCHAR是可变长度字符。...5、ENUM与SET ENUM只能取单个值,它数据列表是一个枚举集合。它合法列表最多有65535个成员。...它合法列表最多有64个成员。空字符串也是一个合法SET值。在需要取多个值时候,时合使用SET类型。比如,一个人兴趣爱好,最好使用SET类型。...ENUM和SET值是以字符串形式出现,但是在MYSQL内部以数值形式存储它们。 6、BLOB和TEXT BLOB是二进制字符串,TEXT是非二进制字符串,两者均可存放大容量信息。

    1K20

    Mysql bit 数据类型

    Mysql bit 数据类型 bit类型 bit 类型不是对应true和false,也不是只有一位 示例 新建数据表test CREATE TABLE `test` ( `id` int(...结论 数字被转换成二进制 字符将被转换成ascii码 boolean 类型被转换成0或1 多选应用 有以下选项:苹果(1),梨(2),西瓜(4),香蕉(8),可以选中其中任意几项,并使用一个字段保存...分别使用数字表示选项:苹果(1),梨(2),西瓜(4),香蕉(8) 转换成二进制为:苹果(0001),梨(0010),西瓜(0100),香蕉(1000) 将选中数字相加(或进行位或运算),并存成...bit字段即可 读取结果时,将保存字段与选项代码进行位与运算即可 `` (adsbygoogle = window.adsbygoogle || []).push({});

    3.1K30

    MySQL数据类型

    MySQL中定义数据字段类型对数据库优化是非常重要,它支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。 数值类型 ? 日期和时间类型 ? 字符串类型 ?...CHAR 和 VARCHAR 类型类似,但它们保存和检索方式不同,它们最大长度和是否尾部空格被保留等方面也不同,在存储或检索过程中不进行大小写转换。...BINARY 和 VARBINARY 类似于 CHAR 和 VARCHAR,不同是它们包含二进制字符串而不要非二进制字符串,也就是说,它们包含字节字符串而不是字符字符串,这说明它们没有字符集,并且排序和比较基于列值字节数值值...BLOB 是一个二进制大对象,可以容纳可变数量数据,上表所示中有共有4种类型,它们区别在于可容纳存储范围不同。...TEXT 用于存文本数据,对应BLOB4种类型,4种类型存储最大长度不同,可根据实际情况选择。

    2.8K20

    Python数据类型数字

    在Python中数字类型分为:整形、布尔型、浮点型以及复数型 创建int类型对象 int类型通常为数字,创建int类型方式有两种,在创建时候两边不需要加单引号或上引号。...构造方法每个数据类型中都会有,这是Python内部所定义,如下图所示: ? 我们来看看__init__方法具体情况: ?...数字类型在Python2.7里面是分整型和长整型,也就是说如果你数字大到一定范围,那么Python会把它转换为长整形,一个数字类型包含32位,可以存储从-2147483648到214483647整数...,布尔类型其实就是数字0和1变种而来,即真(True/0)或假(False/1),实际上就是内置数字类型子类而已。...到这里数据类型数字就都介绍完成了,左后说明一下整数比浮点数简单、浮点数比复数简单, 数字运算会在运算符知识点中统一介绍。

    1.3K20

    MySQL】详解MySQL数据类型

    一、数据类型 各类型数值范围: 在MySQL中,整型可以指定是有符号和无符号,默认是有符号。 可以通过UNSIGNED来说明某个字段是无符号。...insert into tt6 values(101, -99.991); #多这一点被拿掉了 float(4,2)表示范围是-99.99 ~ 99.99,MySQL在保存值时会进行四舍五入。...;而且出于效率考虑,这些值实际存储是“数字”,因为这些选项每个选项值依次对应如下数字:1,2,3,....最多65535个;当我们添加枚举值时,也可以添加对应数字编号。...“数字”,因为这些选项每个选项值依次对应如下数字:1,2,4,8,16,32,.......mysql> create table votes( -> username varchar(30), -> hobby set('登山','游泳','篮球','武术'), --注意:使用数字标识每个爱好时候

    11010

    MySQL数据类型

    MySQL不同存储引擎可能会有不同。下面的内容以InnoDB为主。 选择数据类型步骤 确定合适大类型:数字、字符串、时间、二进制 确定具体类型:有无符号、取值范围、变长定长等。...(列是定长MySQL没有存储写入字符串有多长,只好一刀切,末尾空格都忽略掉。) VARCHAR末尾空格不会被“干掉”,检索时候会用到。...实际上,MySQL会分配固定大小地内存块来保存内部值,因此VARCHAR(200)列尽管只存了和VARCHAR(5)一样字符串,但是分配内存可能会大得多。...而MySQL在检索BIT时候会将其当做字符串,而不是整数,这可能会导致一些奇怪行为。 不建议使用这三个类型:用整数代替。 一些原则 选择最小满足需求数据类型。...一般情况下,应该尽量使用可以正确存储数据最小数据类型。 简单就好。

    2.5K40

    mysql 数据类型

    一.数值类型 Mysql支持所有标准SQL中数值类型,其中包括严格数据类型(INTEGER,SMALLINT,DECIMAL,NUMBERIC),以及近似数值数据类型(FLOAT,REAL,DOUBLE...DECIMAL 数据类型用于精度要求非常高计算中,这种类型允许指定数值精度和计数方法作为选择参数。精度在这里指为这个值保存有效数字总个数, 而计数方法表示小数点后数字位数。...忽略 DECIMAL 数据类型精度和计数方法修饰符将会使 MySQL 数据库把所有标识为这个数据类型字段精度设置为 10,计算方法设置为 0。...MySQL 还对日期年份中两个数字值,或是 SQL 语句中为 TEAR 类型输入两个数字进行最大限度通译。因为所有 TEAR 类型值必须用 4 个数字存储。...如果 MySQL 自动转换后值并不符合我们需要,请输入 4 个数字表示年份。

    2.7K40

    MySQL常见数据类型

    大家好,又见面了,我是你们朋友全栈君。   不多说,直接上干货! MySQL常见数据类型 一、数据类型是什么?   ...数据类型是指列、存储过程参数、表达式和局部变量数据特征,它决定了数据存储格式,代表了不同信息类型。   ...有一些数据是要存储为数字数字当中有些是要存储为整数、小数、日期型等… 二、MYSQL常见数据类型   MySQL支持多种类型,大致可以分为四类:数值型、浮点型、日期/时间和字符串(字符)类型。  ...1、数值类型   MySQL支持所有标准SQL数值数据类型。...在生产里,日期时间型,往往用比较少,而是用数字类型来取代日期类型!

    1.3K20

    mysql 常用数据类型

    常用数据类型 int 数字范围-2**32 ~ 2**32-1 bigint 数字范围-2**63 ~ 2 ** 63-1 float float(m,d), 其中m表示是有效位, d表示小数位 有效位就是把当前小数...: 12345.12 转变成科学计数法: 1.234512 * 10**5 m最大值为7 double double(m, d), 其中m表示是有效位, d表示小数位 m最大值为15 decimal...涉及金额时候使用decimal. double(m, d), 其中m表示是有效位, d表示小数位 m最大值为65 不会产生精度问题, 因为decimal没有精度损失本质是因为它存是字符串....---- char 表示固定长度字符串, 长度为255个字节 中文字符占据3~4个字节 varchar 表示不定长字符串, 长度为0~65535个字节 TEXT 长文本类型, 最大长度占据64kb...算术运算 SUM 和 AVG 平均数 MAX和MIN 对字符串进行操作时, 类似python排序, 是根据ascii码来排序.

    61110

    Mysql数据类型

    数据不仅包括数字、字母、文字和其他特殊字符组成文本形式数据,而且还 包括图形、图像、动画、影像、声音等多媒体数据。但使用最多、最基本仍然是文本数据。 1....MySQL数据类型MySQL中有如下几种数据类型: (1)数值型 数值是诸如32 或153.4 这样值。...都是数字啊,怎么一 个要用数值型,一个要用字符型呢?...列名可最多包含64个字符,字符包括字母、数字、下划线及美元符号。列名可以名字中合法任何符号(包括数字)开头。但列名不能完全由数字组成,因 为那样可能使其与数据分不开。...列(字段)类型比数据类型更为细化,它精确地描述了给定表列(字段)可能包含种类,如是否带小数、是否文字很多。 MySQL有整数和浮点数值列类型,如表1所示。整数列类型可以有符号也可无符号。

    2.5K30

    MySQL数据类型

    MySQL数据类型 数据类型 指定值和范围 char String(0~255) varchar String(0~255) tinytext String(0~255) text String(0~65536...数字类型 描述 TINYINT 一个很小整数 SMALLINT 一个小整数 MEDIUMINT 一个中等大小整数 INT 一个标准整数 BIGINT 一个大整数 DECIMAL 定点数 FLOAT...单精度浮点数 DOUBLE 双精度浮点数 BIT 一个字节字段 字符串数据类型 字符串类型 描述 char 固定长度非二进制(字符)字符串 varchar 可变长度非二进制字符串 BINARY...YEAR YYYY或YY格式年 空间数据类型 字符串类型 描述 GEOMETRY 任何类型空间值 POINT 一个点(一对X-Y坐标) LINESTRING 曲线(一个或多个POINT值)...POLYGON值集合 JSON数据类型 MySQL 5.7.8版本支持原生JSON数据类型,可以更有效地存储和管理JSON文档。

    2.3K20
    领券