MYSQL 字段类型之TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT

1. tinyint: 只能存储-128到127大小的数字, 不在乎后面的定义,如tinyint(9). 需1字节存储空间。 当加有UNSIGNED后,数字可以从0增加到255大小。
dba@localhost : test 22:36:25> create table ti(id tinyint(9), no tinyint(1));
Query OK, 0 rows affected (0.03 sec)

dba@localhost : test 22:36:44> insert into ti values(129,130);
Query OK, 1 row affected, 2 warnings (0.00 sec)

dba@localhost : test 22:37:31> show warnings;
+---------+------+---------------------------------------------+
| Level   | Code | Message                                     |
+---------+------+---------------------------------------------+
| Warning | 1264 | Out of range value for column 'id' at row 1 |
| Warning | 1264 | Out of range value for column 'no' at row 1 |
+---------+------+---------------------------------------------+
2 rows in set (0.00 sec)
这里在插入数据时会报出警告,是因为SQL_MODE的关系。MYSQL这里默认设置为空, 允许超出范围的数据插入, 只给出一个警告。
可以查询下这个表:
dba@localhost : test 22:37:39> select * from ti;
+------+------+
| id   | no   |
+------+------+
|  127 |  127 |
+------+------+
1 row in set (0.00 sec)

这个时候是允许插入负数的。
dba@localhost : test 22:49:40> insert into ti values(-9,9);
Query OK, 1 row affected (0.00 sec)

dba@localhost : test 22:50:06> select * from ti;
+------+------+
| id   | no   |
+------+------+
|  127 |  127 |
|   -9 |    9 |
+------+------+
2 rows in set (0.00 sec)

为了不让数据库产生负数的值, 我们可以修改下这个字段的类型参数:
dba@localhost : test 22:46:25> alter table ti modify no tinyint unsigned;
Query OK, 1 row affected (0.01 sec)
Records: 1  Duplicates: 0  Warnings: 0

dba@localhost : test 22:50:18> insert into ti values(-9,-9);
Query OK, 1 row affected, 1 warning (0.00 sec)

dba@localhost : test 22:51:20> show warnings;
+---------+------+---------------------------------------------+
| Level   | Code | Message                                     |
+---------+------+---------------------------------------------+
| Warning | 1264 | Out of range value for column 'no' at row 1 |
+---------+------+---------------------------------------------+
1 row in set (0.00 sec)

dba@localhost : test 22:51:27> select * from ti;
+------+------+
| id   | no   |
+------+------+
|  127 |  127 |
|   -9 |    9 |
|   -9 |    0 |
+------+------+
3 rows in set (0.00 sec)

可以看到NO字段插入-9, 直接被截成0了。

在对TIINYINT增加了UNSIGNED后, 从-128 至 127 变成了 0 至 255.

dba@localhost : test 22:51:37> insert into ti values(1,258);
Query OK, 1 row affected, 1 warning (0.00 sec)

dba@localhost : test 22:54:08> select * from ti;
+------+------+
| id   | no   |
+------+------+
|  127 |  127 |
|   -9 |    9 |
|   -9 |    0 |
|    1 |  255 |
+------+------+
4 rows in set (0.00 sec)

此类型的字段应用场景:  如果有业务字段只存储性别、状态、类型等少量值的时候,就可以使用此类型的字段。

2. smallint: 只能存储-32768到32767大小的数字, 不在乎后面的定义,如smallint(9). 需2字节存储空间。对字段加上UNSIGNED后,数字大小就可以从0增加到65535大小。
dba@localhost : test 23:00:21> create table ts(id smallint(1), no smallint(10) unsigned);
Query OK, 0 rows affected (0.01 sec)


dba@localhost : test 23:01:51> insert into ts values(-32768,32768);
Query OK, 1 row affected (0.00 sec)

dba@localhost : test 23:02:30> select * from ts;
+--------+-------+
| id     | no    |
+--------+-------+
| -32768 | 32768 |
+--------+-------+
1 row in set (0.00 sec)
从以上可以看出, 我们存储了一个带符号的值,也就是负数,长度为1,这个也超出了我们的设置。 另外, 对字段加上UNSIGNED后,数字就可以存储超过32767的值。
应用场景: 当需要的值比TINYINT要多,而又不需要超过65535的时候就可以使用这个类型。


3. mediumint: 只能存储	-8388608 到 8388607大小的数字, 不在乎后面的定义,如mediumint(9). 需3字节存储空间。对字段加上UNSIGNED后,数字大小就可以从0增加到16777215大小.
dba@localhost : test 23:13:10> create table tm(id mediumint(1), no mediumint(10) unsigned);
Query OK, 0 rows affected (0.01 sec)

dba@localhost : test 23:13:21> insert into tm values(-8388608,16777216);
Query OK, 1 row affected, 1 warning (0.00 sec)

dba@localhost : test 23:14:44> select * from tm;
+----------+----------+
| id       | no       |
+----------+----------+
| -8388608 | 16777215 |
+----------+----------+
1 row in set (0.00 sec)
从以上可以看出, 字段长度为1, 而存储的值远远超过1位。字段加UNSIGNED,就可以存储0到16777215的数字。
应用场景:当需要的值比SMALLINT的值多些,而又不需要超过16777215大小的时候就可以利用这个类型。

4. int/integer: 只能存-2147483648 到 2147483647大小的数字, 不在乎后面的定义,如int(9). 需4字节存储空间。对字段加上UNSIGNED后,数字大小就可以从0增加到4294967295大小.
dba@localhost : test 23:14:52> create table tn(id int(1), no int(10) unsigned);
Query OK, 0 rows affected (0.01 sec)

dba@localhost : test 23:22:20> insert into tn values(-2147483648,4294967296);
Query OK, 1 row affected, 1 warning (0.00 sec)

dba@localhost : test 23:22:22> select * from tn;
+-------------+------------+
| id          | no         |
+-------------+------------+
| -2147483648 | 4294967295 |
+-------------+------------+
1 row in set (0.00 sec)
从以上可以看出, 字段长度为1, 而存储的值远远超过1位。字段加UNSIGNED,就可以存储0到4294967295的数字。
应用场景:当需要的值比mediumint的值多些,而又不需要超过4294967295大小的时候就可以利用这个类型。 通常主键字段会以INT类型自增的形式。

5. bigint: 只能存-9223372036854775808 到 9223372036854775807大小的数字, 不在乎后面的定义,如bigint(9). 需8字节存储空间。对字段加上UNSIGNED后,数字大小就可以从0增加到18446744073709551615大小.
dba@localhost : test 23:22:28> create table tb(id bigint(1), no bigint(10) unsigned);
Query OK, 0 rows affected (0.01 sec)

dba@localhost : test 23:27:40> insert into tb values(-9223372036854775808,18446744073709551616);
Query OK, 1 row affected, 1 warning (0.01 sec)

dba@localhost : test 23:28:41> select * from tb;
+----------------------+----------------------+
| id                   | no                   |
+----------------------+----------------------+
| -9223372036854775808 | 18446744073709551615 |
+----------------------+----------------------+
1 row in set (0.00 sec)
从以上可以看出, 字段长度为1, 而存储的值远远超过1位。字段加UNSIGNED,就可以存储0到18446744073709551615的数字。
应用场景:当需要的值比int的值多些,而又不需要超过18446744073709551615大小的时候就可以利用这个类型。此类型很少用,可以存到20位数字大小。

总结:
在MYSQL里,我们要求越精短越好,因为存储的容量小了,才能从根本上减少IO的扫描,如果在此字段上建主键索引或者建辅助索引,也能有效的减少存储空间,与IO的压力。

  

转载于:https://www.cnblogs.com/o-to-s/articles/3805204.html

使用HFSS仿真分支波导耦合器 本文介绍了分支波导耦合器的HFSS仿真设计过程。首先给出了器件关键参数(t=0.365mm,l=1.600mm等),详细说明了建模步骤:包括创建中心分支、设置变量参数、镜像复制两侧分支、矩形波导端口设计等操作。重点阐述了激励端口设置方法,包括四个端口的积分线绘制,以及求解频率设定。最后展示了S参数、幅度平衡度和相位差等关键性能指标的仿真结果提取方法。整个设计过程体现了HFSS在微波器件仿真中的参数化建模和结果分析能力。 阅读详情

相关推荐

Eclipse邂逅Deepseek:本地化部署全攻略

通过前面一系列的步骤,我们成功地在 Eclipse 中完成了 Deepseek 的本地化部署,并且对部署后的功能进行了测试和优化,还解决了可能遇到的一些常见问题。这一过程不仅让我们体验到了将强语言模型与高效的开发环境相结合的魅力,也为我们在软件开发过程中带来了诸便利。本地化部署 Deepseek 到 Eclipse,使得我们在代码编写过程中能够获得智能的代码补全和精准的问答支持,提高了开发效率。同时,本地化部署保障了数据的安全性和隐私性,避免了数据在传输过程中可能面临的风险。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 4411

数据库中字段设计为smalint或者tinyint后,程序中要求字段为枚举型,应该怎么设置...

我们知道枚举默认和int类型是可以直接强转换的,并不会出现任何错误,但对于其它类型来说, 有可能会有问题,比如,一个enum类型, 如下声明会有错误 enum ProductColumns {   ProductId=1, . . . Status=4294967297, } OK,这样的话,程序会报错,因为它已经超过了int型的范围(int型其实就是Int32结构体...

weixin_34376562的博客 245

获取iOS设备唯一标识UUID(Swift版)

属性返回的UUID是与应用程序相关联的,也就是说,如果用户卸载并重新安装应用程序,该UUID可能会发生变化。如果您需要一个与设备相关的持久唯一标识符,您可以考虑使用Keychain或其他方法来存储和检索设备标识符。在iOS开发中,我们经常需要获取设备的唯一标识符来进行一些特定的操作,比如设备识别、数据追踪等。在本文中,我将向您展示如何使用Swift编程语言获取iOS设备的唯一标识UUID。通过上述代码,您可以在您的iOS应用程序中轻松获取设备的唯一标识符。属性来获取设备的唯一标识UUID。

BitNetO的博客 1894

MySQL - tinyint(1)int(1) 和 varchar(50)中数字的含义

设计/修改数据表结构时,需要考虑和合理选择字段类型和长度。

"代码"的日常搬运 1万+

mysqlbigintintmediumintsmallinttinyint的取值范围 int(10)的含义

1bytes = 8bit   (bytes字节)一个字节最可以代表的数据长度是2的8次方(11111111计算机中-128到127) 注意:以下的n代表的并不是存储在数据库中的具体的长度,以前总是会误以为int(4)只能存储4个长度的数字,int(11)就会存储11个长度的数字,这是错的。         实际上int(n)所占少存储空间并无任何关系。int(3)int(4)int(

cxy19928497的博客 8790

MySQLtinyint字段,读取出来为true或者false问题

前言 项目中遇到一个问题:我在mybatis中使用嵌套查询时代码如下 <association property="approvalLog" column="{applyId = id,applyType = apply_type}" javaType="xx.TCaseApprovalLog" select="xx.findByMap"></association> 其中给嵌套的查询方法传递了两个参数,这两个参数在实体类中都是integer类型的, 但是打印出的sql却告诉我app

KKALL1314的博客 1948

mysqlTINYINT的取值范围

TINYINT  -128 到127  TINYINT UNSIGNED  0到255

风无痕 8万+

mysql字段类型tinyintsmallintmediumintintbigint详解

mysql建模的过程中,对于优化来讲一个非常重要的点就是字段类型的设置,好的字段类型的设置可以帮助更快的查询数据同时能节约硬盘空间,这对于优化数据库来讲是非常重要的。 mysql字段类型体来讲分为int、text、varchar、char 一:

贝伦酱 3万+

mysql修改字段类型smallint_MYSQL 字段类型TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT

1. tinyint: 只能存储-128到127小的数字, 不在乎后面的定义,如tinyint(9). 需1字节存储空间。 当加有UNSIGNED后,数字可以从0增加到255小。dba@localhost : test 22:36:25> create table ti(id tinyint(9), no tinyint(1));Query OK, 0 rows affected (0....

weixin_29013129的博客 2648

mysql mediumint 长度_mysql字段类型tinyintsmallintmediumintintbigint详解

mysql建模的过程中,对于优化来讲一个非常重要的点就是字段类型的设置,好的字段类型的设置可以帮助更快的查询数据同时能节约硬盘空间,这对于优化数据库来讲是非常重要的。mysql字段类型体来讲分为int、text、varchar、char、blog等几种,而各自的类型中又划分了不同的字符数的类型,这里先来讨论几种整形的情况。先来看一下基本的概念:字节(byte),1个字节等于8个位(bit),一...

weixin_32065293的博客 1612

聊下mysql字段类型bit、tinyintsmallintmediumintintbigint

不少同学在mysq中建表时,都时采用varchar类型的​,你问为什么都是varchar类型,可能就是简单粗暴。如果考虑到性能,以及如果你想深入了解下的话,请持续看完以下废话。 话不说:以一个实际项目的表来看下,以下就是项目中的一个小伙子建的表。 ​​​​​​ 一眼望去,全是varchar类型,不过还是有个smallint,不过使用的也不能完全正确。 首选我们先聊下像tinyintsmallintmediumintintbigint都是分别占少个字节,我们都知道 常识:1 ..

细嗅 2410

mysql tinyint int mediumint 用哪个好_MYSQL 字段类型TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT...

1. tinyint: 只能存储-128到127小的数字, 不在乎后面的定义,如tinyint(9). 需1字节存储空间。 当加有UNSIGNED后,数字可以从0增加到255小。dba@localhost : test 22:36:25> create table ti(id tinyint(9), no tinyint(1));Query OK, 0 rows affected (0....

weixin_30597089的博客 531

mysqltinyintsmallintmediumintintbigint字段类型储存范围储存长度详解

tinyint:从0开始计算,无符号可以储存0~255,有符号则是-128 ~127;smallint:从0开始计算无符号存储0 ~65535, 有符号则是-32768 ~32767;mediumint:无符号可以存储0~ 16777215, 有符号可以存储-8388608~8388607;int:无符号可以存储0~ 4294967295, 有符号则是-2147483648~2147483647;bigint:无符号可以存储0 ~ ( 2^64 - 1 )

weixin_44480661的博客 5434

tinyint(1)tinyint(4)的区别和用法

1 bytes = 8 bit ,一个字节最可以代表的数据长度是2的8次方 11111111 在计算机中也就是 -128到127 1.BIT[M] 位字段类型,M表示每个值的位数,范围从1到64,如果M被忽略,默认为1 2.TINYINT[(M)] [UNSIGNED] [ZEROFILL]M默认为4 很小的整数。带符号的范围是-128到127。无符号的范围是0到255。 3.BOOL,BOOLEAN 是TINYINT(1)的同义词。zero值被视为假。非zero值视为真。 4....

chenkaibsw的专栏 3541

mysqlintbigintsmallinttinyint的区别详细介绍

MySqltinyintsmallintmediumintintbigint

zgscwxd的博客 9740

Mysql字段类型的解析

1. CHAR(n): 用于存储固定长度的字符串,其中 n 表示字符的个数。3. TEXT: 用于存储较的文本数据,可以存储更长的字符串。14. TIMESTAMP: 用于存储时间戳,格式与 DATETIME 类似,但精度更高,可以存储到微秒级别。13. DATETIME: 用于存储日期和时间,格式为 'YYYY-MM-DD HH:MM:SS'。5. SMALLINT: 用于存储较小的整数,取值范围从 -32768 到 32767。12. TIME: 用于存储时间,格式为 'HH:MM:SS'。

headmaster_shan的博客 599

mysql int的取值范围_mysqlbigintintmediumintsmallinttinyint的取值范围

【转:原文链接】mysql数据库设计,其中,对于数据性能优化,字段类型考虑很重要,搜集了些资料,整理分享出来,这篇为有关mysql整型bigintintmediumintsmallinttinyint的语法介绍,如下:1、bigint从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字),无符号...

weixin_36031812的博客 1013

字段些什么mysql_MySQL数据库字段类型介绍

MySQL数据库字段类型介绍:MySQL支持量的列类型,它可以被分为3类:数字类型、日期和时间类型以及字符串(字符)类型。下列代码字母用于描述中:M指出最的显示尺寸。最的合法的显示尺寸是255。D适用于浮点类型并且指出跟随在十进制小数点后的数码的数量。最可能的值是30,但是应该不于M-2。方括号(“[”和“]”)指出可选的类型修饰符的部分。注意,如果你指定一个了为ZEROFILL,M...

weixin_39945915的博客 130

int2 是mysql_INT类型知

前言:整型是MySQL中最常用的字段类型之一,通常用于存储整数,其中int是整型中最常用的,对于int类型你是否真正了解呢?本文会带你熟悉int类型相关知识,也会介绍其他整型字段的使用。1.整型分类及存储范围整数类型字节有符号范围无符号范围TINYINT1-128 ~ 1270 ~ 255SMALLINT2-32768 ~ 327670 ~ 65535MEDIUMINT3-8388608 ~ 83...

weixin_32093689的博客 3457

MySQL数据类型:TINYINT,SMALLINT,MEDIUMINT,INT,INTEGER,BIGINT;text,longtext,mediumtext,ENUM,SET等字段类型区别

MySQL支持量的列类型,它可以被分为3类:数字类型、日期和时间类型以及字符串(字符)类型。本节首先给出可用类型的一个概述,并且总结每个列类型的存储需求,然后提供每个类中的类型性质的更详细的描述。概述有意简化,更详细的说明应该考虑到有关特定列类型的附加信息,例如你能为其指定值的允许格式。 由MySQL支持的列类型列在下面。下列代码字母用于描述中: M 指出最的显示尺寸。最的合法的显示尺

tianlianchao1982的专栏 1127

mysql Integer Types (Exact Value) - INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT

使用mysql的时候,用到int类型的蛮,需要注意一下: 1. 值的范围 TypeStorageMinimum ValueMaximum Value (Bytes)(Signed/Unsigned)(Signed/Unsigned) TINYINT 1 -128 127 0 255 SMALLINT 2 -327...

187
上一篇: MYSQL 类型转换影起的灾难
下一篇: MYSQL OAK ONLINE DDL
ant98002
博客等级 码龄12年 0粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值