Heim >Datenbank >MySQL-Tutorial >mysql int范围与最大值分析

mysql int范围与最大值分析

WBOY
WBOYOriginal
2016-06-07 17:51:452122Durchsuche

在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>

下面为官网的说明

 代码如下 复制代码

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;


+---------+------+------------------------------------------+| Level   | Code | Message                                  |+---------+------+------------------------------------------+| Warning | 1265 | Data truncated for column 'val' at row 1 |+---------+------+------------------------------------------+1 row in set (0.00 sec)

mysql> SELECT COUNT(DISTINCT val) FROM bits;

+---------------------+| COUNT(DISTINCT val) |+---------------------+|                   3 |+---------------------+1 row in set (0.00 sec)

Well, shouldn't a binary type have only two distinct values?
(Note that it isn't NULL.)

Explanation from manual (10.4.4. The ENUM Type):
-----
If you insert an invalid value into an ENUM (that is, a string not present in the list of permitted values), the empty string is inserted instead as a special error value. This string can be distinguished from a “normal” empty string by the fact that this string has the numeric value 0. More about this later

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn