首页  >  文章  >  数据库  >  mysql int范围与最大值分析

mysql int范围与最大值分析

WBOY
WBOY原创
2016-06-07 17:51:452097浏览

在SQL语句中int代表你要创建字段的类型,int代表整型,11代表字段的长度。

    这个代表显示宽度
整数列的显示宽度与需要用多少个字符来显示该列数值,与该整数需要的存储空间的大小都没有关系,比如,不管设定了显示宽度是多少个字符,bigint都要占用8个字节。


    int是整型,(11)是指显示字符的长度,但要加参数的,最大为255,比如它是记录行数的id,插入10笔资料,它就显示00000000001 ~~~00000000010,当字符的位数超过11,它也只显示11位,如果你没有加那个让它未满11位就前面加0的参数,它不会在前面加0


声明整型数据列时,我们可以为它指定个显示宽度M(1~255),如INT(5),指定显示宽度为5个字符,如果没有给它指定显示宽度,MySQL会为它指定一个默认值。显示宽度只用于显示,并不能限制取值范围和占用空间,如:INT(3)会占用4个字节的存储空间,并且允许的最大值也不会是999,而是INT整型所允许的最大值。

MySQL有五种整型数据列类型,即TINYINT,SMALLINT,MEDIUMINT,INT和BIGINT。它们之间的区别是取值范围不同,存储空间也各不相同。
在整型数据列后加上UNSIGNED属性可以禁止负数,取值从0开始。

int范围

Type Bytes Minimum Value Maximum Value
    (Signed/Unsigned) (Signed/Unsigned)
<font face="NSimsun">TINYINT</font> 1 <font face="NSimsun">-128</font> <font face="NSimsun">127</font>
    <font face="NSimsun">0</font> <font face="NSimsun">255</font>
<font face="NSimsun">SMALLINT</font> 2 <font face="NSimsun">-32768</font> <font face="NSimsun">32767</font>
    <font face="NSimsun">0</font> <font face="NSimsun">65535</font>
<font face="NSimsun">MEDIUMINT</font> 3 <font face="NSimsun">-8388608</font> <font face="NSimsun">8388607</font>
    <font face="NSimsun">0</font> <font face="NSimsun">16777215</font>
<font face="NSimsun">INT</font> 4 <font face="NSimsun">-2147483648</font> <font face="NSimsun">2147483647</font>
    <font face="NSimsun">0</font> <font face="NSimsun">4294967295</font>
<font face="NSimsun">BIGINT</font> 8 <font face="NSimsun">-9223372036854775808</font> <font face="NSimsun">9223372036854775807</font>
    <font face="NSimsun">0</font> <font face="NSimsun">18446744073709551615</font>
Type
Bytes Minimum Value Maximum Value
    (Signed/Unsigned) (Signed/Unsigned)
<font face="NSimsun">TINYINT</font> 1 <font face="NSimsun">-128</font> <font face="NSimsun">127</font>
    <font face="NSimsun">0</font> <font face="NSimsun">255</font>
<font face="NSimsun">SMALLINT</font> 2 <font face="NSimsun">-32768</font> <font face="NSimsun">32767</font>
    <font face="NSimsun">0</font> <font face="NSimsun">65535</font>
<font face="NSimsun">MEDIUMINT</font> 3 <font face="NSimsun">-8388608</font> <font face="NSimsun">8388607</font>
    <font face="NSimsun">0</font> <font face="NSimsun">16777215</font>
<font face="NSimsun">INT</font> 4 <font face="NSimsun">-2147483648</font> <font face="NSimsun">2147483647</font>
    <font face="NSimsun">0</font> <font face="NSimsun">4294967295</font>
<font face="NSimsun">BIGINT</font> 8 <font face="NSimsun">-9223372036854775808</font> <font face="NSimsun">9223372036854775807</font>
    <font face="NSimsun">0</font> <font face="NSimsun">18446744073709551615</font>

下面为官网的说明

 代码如下 复制代码
 代码如下 复制代码

Be careful when considering ENUM('T','F') as "true binary".

Example:
CREATE TABLE `bits` (
`val` ENUM('T','F') NOT NULL
);

mysql> INSERT INTO `bits` (`val`) VALUES ('W'), ('T'), ('F');
Query OK, 3 rows affected, 1 warning (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 1

mysql> SHOW WARNINGS;

将 ENUM('T','F') 视为“真正的二进制”时要小心。


示例:

创建表“位”(

`val` ENUM('T','F') NOT NULL

);

mysql>插入 `bits` (`val`) 值 ('W'), ('T'), ('F');

查询正常,3 行受影响,1 条警告(0.00 秒)
记录:3 重复:0 警告:1

mysql>显示警告;

表>
--------- ------ -------------------------------------------------- -------- |级别 |代码|留言                                  | --------- ------ -------------------------------------------------- -------- |警告| 1265 | 1265第 1 行“val”列的数据被截断 | --------- ------ -------------------------------------------------- ------- 一组 1 行(0.00 秒) mysql>从位中选择计数(DISTINCT val); --------------------- |计数(不同的值)| -------------------- |                   3 | --------------------- 一组 1 行(0.00 秒) 那么,二进制类型不应该只有两个不同的值吗? (请注意,它不为 NULL。) 手册说明(10.4.4. ENUM 类型): ----- 如果将无效值插入 ENUM(即允许值列表中不存在的字符串),则会插入空字符串作为特殊错误值。该字符串与“正常”空字符串的区别在于该字符串的数值为 0。稍后将详细介绍
声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn