设置mysql整形_mysql 整型字段设计

本文介绍了MySQL中不同整型类型的数据范围,并通过实例展示了整型字段的设置与使用,强调了字段类型选择的重要性,如tinyint(10)在有符号情况下最大值仍为127,即使设置了更大的长度。此外,还探讨了超出字段限制时的数据处理情况。
摘要由CSDN通过智能技术生成

只要做开发的,肯定创建过表,表字段用什么类型,长度是多少等。感觉没什么要说的,可是归纳总结一下,还有东西可说的。

1,整型类型

数据类型

有符号

无符号

存储

bigint

-2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807)

0 到 2^64-1 (18446744073709551615)

8 字节

int

-2^31 (-2147483648) 到 2^31-1 (2147483647)

0 到 2^32-1 (4294967295)

4 字节

mediumint

-2^31 (-8388608) 到 2^23-1 (8388607)

0 到 2^24-1 (16777215)

3 字节

smallint

-2^15 (-32768) 到 2^15-1 (32767)

0 到 2^16-1 (65535)

2 字节

tinyint

-2^7 (-127) 到 2^7-1 (127)

0 到 2^8-1 (255)

1 字节

知道类型的范围值对我们有帮助的,例如,如果用tinyint,该字段的最大值不会超过255,把字段设置成tinyint(10),有符号的情况下,最大只能是127,表面上看好像是可以存入10位,而实际只能存入3位数。

根据要存数字大小,来选择不同的数据类型,例如,如果是标识位,一般情况设置为tinyint(1),最合适,存储小,又不会存不进去。

2,实例说明

MariaDB [test]> CREATE TABLE `test` (

-> `big_test` bigint(20) DEFAULT 0,

-> `int_test` int(11) DEFAULT 0,

-> `medium_test` mediumint(8) DEFAULT 0,

-> `small_test` smallint(6) DEFAULT 0,

-> `tiny_test` tinyint(4) DEFAULT 0

-> ) ENGINE=myisam DEFAULT CHARSET=utf8;

Query OK, 0 rows affected (0.09 sec)

MariaDB [test]> INSERT INTO test (big_test, int_test, medium_test, small_test, tiny_test) VALUES (9223372036854775807, 2147483647, 8388607, 32767, 127);

Query OK, 1 row affected (0.00 sec)

MariaDB [test]> select * from test;

+---------------------+------------+-------------+------------+-----------+

| big_test | int_test | medium_test | small_test | tiny_test |

+---------------------+------------+-------------+------------+-----------+

| 9223372036854775807 | 2147483647 | 8388607 | 32767 | 127 |

+---------------------+------------+-------------+------------+-----------+

1 row in set (0.00 sec)

MariaDB [test]> INSERT INTO test (big_test, int_test, medium_test, small_test, tiny_test) VALUES (9223372036854775807, 2147483647, 8388607, 32767, 128);

Query OK, 1 row affected, 1 warning (0.00 sec) //128超过了,有符号tinyint的最大值,报了warning出来,但是还是入库了。

MariaDB [test]> select * from test;

+---------------------+------------+-------------+------------+-----------+

| big_test | int_test | medium_test | small_test | tiny_test |

+---------------------+------------+-------------+------------+-----------+

| 9223372036854775807 | 2147483647 | 8388607 | 32767 | 127 |

| 9223372036854775807 | 2147483647 | 8388607 | 32767 | 127 |

+---------------------+------------+-------------+------------+-----------+

2 rows in set (0.00 sec)

MariaDB [test]> ALTER TABLE `test` CHANGE `tiny_test` `tiny_test` TINYINT( 10 ) NULL DEFAULT '0';

Query OK, 0 rows affected (0.00 sec)

Records: 0 Duplicates: 0 Warnings: 0 //将长度改为10,没报错

MariaDB [test]> INSERT INTO test (big_test, int_test, medium_test, small_test, tiny_test) VALUES (9223372036854775807, 2147483647, 8388607, 32767, 128);

Query OK, 1 row affected, 1 warning (0.00 sec) //在插入数据,一样报warning,但还是入库

MariaDB [test]> select * from test;

+---------------------+------------+-------------+------------+-----------+

| big_test | int_test | medium_test | small_test | tiny_test |

+---------------------+------------+-------------+------------+-----------+

| 9223372036854775807 | 2147483647 | 8388607 | 32767 | 127 |

| 9223372036854775807 | 2147483647 | 8388607 | 32767 | 127 |

| 9223372036854775807 | 2147483647 | 8388607 | 32767 | 127 |

+---------------------+------------+-------------+------------+-----------+

3 rows in set (0.00 sec)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值