最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL INT類型全解析

 更新時(shí)間:2020年08月07日 10:16:31   作者:MySQL技術(shù)  
這篇文章主要介紹了MySQL INT類型的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)MySQL,感興趣的朋友可以了解下

前言:

整型是MySQL中最常用的字段類型之一,通常用于存儲整數(shù),其中int是整型中最常用的,對于int類型你是否真正了解呢?本文會帶你熟悉int類型相關(guān)知識,也會介紹其他整型字段的使用。

1.整型分類及存儲范圍

整數(shù)類型 字節(jié) 有符號范圍 無符號范圍
TINYINT 1 -128 ~ 127 0 ~ 255
SMALLINT 2 -32768 ~ 32767 0 ~ 65535
MEDIUMINT 3 -8388608 ~ 8388607 0 ~ 16777215
INT/INTEGER 4 -2147483648 ~ 2147483647 0 ~ 4294967295
BIGINT 8 -9223372036854775808 ~ 9223372036854775807 0 ~ 18446744073709551615

表格一共有四列分別表示:字段類型, 占用字節(jié)數(shù), 有符號范圍, 無符號范圍。
我們拿int類型為例:
int類型, 占用字節(jié)數(shù)為4byte, 學(xué)過計(jì)算機(jī)原理的同學(xué)應(yīng)該知道, 字節(jié)(byte)并非是計(jì)算機(jī)存儲的最小單位, 還有比字節(jié)(byte)更小的單位, 也就是位(bit),一個(gè)位就代表一個(gè)0或1; 8個(gè)位組成一個(gè)字節(jié); 一般字節(jié)用大寫B(tài)來表示byte, 位用小寫b來表示bit.

計(jì)算機(jī)存儲單位的換算: 1B=8b 1KB=1024B 1MB=1024KB

那么根據(jù)int類型允許存儲的字節(jié)數(shù)是4個(gè)字節(jié), 我們就能換算出int UNSIGNED(無符號)類型的能存儲的最小值為0, 最大值為4294967295(即4B=32b, 最大值即為32個(gè)1組成,即4294967295換算成二進(jìn)制則是32個(gè)1)。

2.存儲范圍測試

mysql> CREATE TABLE test_int (  -> col1 TINYINT,  -> col2 SMALLINT,  -> col3 MEDIUMINT,  -> col4 INT,  -> col5 BIGINT  -> ) ENGINE = INNODB DEFAULT CHARSET = utf8;Query OK, 0 rows affected (0.01 sec)
mysql> show create table test_int\G*************************** 1. row ***************************    Table: test_intCreate Table: CREATE TABLE `test_int` ( `col1` tinyint(4) DEFAULT NULL, `col2` smallint(6) DEFAULT NULL, `col3` mediumint(9) DEFAULT NULL, `col4` int(11) DEFAULT NULL, `col5` bigint(20) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf81 row in set (0.00 sec)
mysql> insert into test_int values (1234,123456,12345678,12345678901,12345678901234567890);Query OK, 1 row affected, 5 warnings (0.00 sec)
mysql> insert into test_int values (-1234,-123456,-12345678,-12345678901,-12345678901234567890);Query OK, 1 row affected, 5 warnings (0.01 sec)
mysql> show warnings;+---------+------+-----------------------------------------------+| Level  | Code | Message                    |+---------+------+-----------------------------------------------+| Warning | 1264 | Out of range value for column 'col1' at row 1 || Warning | 1264 | Out of range value for column 'col2' at row 1 || Warning | 1264 | Out of range value for column 'col3' at row 1 || Warning | 1264 | Out of range value for column 'col4' at row 1 || Warning | 1264 | Out of range value for column 'col5' at row 1 |+---------+------+-----------------------------------------------+5 rows in set (0.01 sec)
mysql> select * from test_int;+------+--------+----------+-------------+----------------------+| col1 | col2  | col3   | col4    | col5         |+------+--------+----------+-------------+----------------------+| 127 | 32767 | 8388607 | 2147483647 | 9223372036854775807 || -128 | -32768 | -8388608 | -2147483648 | -9223372036854775808 |+------+--------+----------+-------------+----------------------+

從上述測試中我們可以看出:有符號時(shí),各種整型類型最大的存儲范圍,當(dāng)存儲數(shù)字大小不在存儲范圍時(shí),MySQL會產(chǎn)生告警,但數(shù)字可以插入,默認(rèn)截取為可存儲的最大值或最小值。

3.int(M)中M的含義與zerofill的使用

我們經(jīng)常聽到這句話:int(M)中的M代表最大顯示寬度,"最大顯示寬度"我們第一反應(yīng)是該字段的值最大能允許存放的值的寬度,以為我們建了int(1),就不能存放數(shù)據(jù)10了, 其實(shí)不是這個(gè)意思。
整數(shù)列的顯示寬度與mysql需要用多少個(gè)字符來顯示該列數(shù)值,與該整數(shù)需要的存儲空間的大小都沒有關(guān)系,比如,不管設(shè)定了顯示寬度是多少個(gè)字符,int都是占用4個(gè)字節(jié),bigint都要占用8個(gè)字節(jié)。即int(5)和int(10)可存儲的范圍一樣。
整型字段有個(gè)ZEROFILL屬性(0填充),在數(shù)字長度不夠的數(shù)據(jù)前面填充0,以達(dá)到設(shè)定的長度。加上ZEROFILL后M才表現(xiàn)出不同,當(dāng)使用ZEROFILL時(shí),默認(rèn)會自動加unsigned(無符號)屬性。比如 INT(3) ZEROFILL,你插入到數(shù)據(jù)庫里的是10,則實(shí)際插入為010,也就是在前面補(bǔ)充加了一個(gè)0,下面我們來測試下:

mysql> CREATE TABLE test_int_zerofill (  -> col1 INT(5) ZEROFILL,  -> col2 INT ZEROFILL,  -> col3 INT(5)  -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;Query OK, 0 rows affected (0.01 sec)
mysql> show create table test_int_zerofill\G*************************** 1. row ***************************    Table: test_int_zerofillCreate Table: CREATE TABLE `test_int_zerofill` ( `col1` int(5) unsigned zerofill DEFAULT NULL, `col2` int(10) unsigned zerofill DEFAULT NULL, `col3` int(5) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf81 row in set (0.00 sec)
mysql> insert into test_int_zerofill values (12,12,12);Query OK, 1 row affected (0.00 sec)
mysql> select * from test_int_zerofill;+-------+------------+------+| col1 | col2    | col3 |+-------+------------+------+| 00012 | 0000000012 |  12 |+-------+------------+------+1 row in set (0.00 sec)

那么有同學(xué)可能會問zerofill有什么應(yīng)用場景呢,比較常用的應(yīng)該是月份或日期前補(bǔ)0,這樣顯示的會規(guī)范些

CREATE TABLE `t_zerofill` (  `year` year(4) DEFAULT NULL,  `month` int(2) unsigned zerofill DEFAULT NULL,  `day` int(2) unsigned zerofill DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
mysql> insert into t_zerofill values (2019,6,5);Query OK, 1 row affected (0.01 sec)
mysql> insert into t_zerofill values (2019,6,18);Query OK, 1 row affected (0.00 sec)
mysql> insert into t_zerofill values (2019,10,1);Query OK, 1 row affected (0.00 sec)
mysql> insert into t_zerofill values (2019,11,11);Query OK, 1 row affected (0.01 sec)
mysql> select * from t_zerofill;+------+-------+------+| year | month | day |+------+-------+------+| 2019 |  06 |  05 || 2019 |  06 |  18 || 2019 |  10 |  01 || 2019 |  11 |  11 |+------+-------+------+4 rows in set (0.00 sec)

4.類型選取

經(jīng)過上面的介紹,關(guān)于不同整型字段的選取變得容易很多。本著最小化存儲的原則,當(dāng)然是能選TINYINT不選SMALLINT,能選MEDIUMINT不選INT了,不過一切都要滿足業(yè)務(wù)的前提下盡量選取占用字節(jié)更少的類型。對于確定只存儲正整數(shù)的字段,可以加上unsigned屬性,這樣會使存儲范圍更大,比如當(dāng)字段有AUTO_INCREMENT屬性時(shí),我們可以為int類型加上unsigned屬性。

以上就是MySQL INT類型全解析的詳細(xì)內(nèi)容,更多關(guān)于MySQL INT類型的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • MySQL運(yùn)行狀況查詢方式介紹

    MySQL運(yùn)行狀況查詢方式介紹

    直接在命令行下登陸MySQL運(yùn)行SHOW STATUS;查詢語句;同樣的語句還有SHOW VARIABLES;,SHOW STATUS是查看MySQL運(yùn)行情況,和上面那種通過pma查看到的信息基本類似
    2013-06-06
  • 詳解MySQL是如何解決幻讀的

    詳解MySQL是如何解決幻讀的

    這篇文章主要介紹了MySQL是如何解決幻讀的,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Mysql學(xué)習(xí)之?dāng)?shù)據(jù)庫檢索語句DQL大全小白篇

    Mysql學(xué)習(xí)之?dāng)?shù)據(jù)庫檢索語句DQL大全小白篇

    這篇文章主要介紹了Mysql數(shù)據(jù)庫檢索語句DQL大全,本文適合數(shù)據(jù)庫初學(xué)者,小白也能看懂,有需要的朋友可以收藏閱讀,希望可以有所幫助
    2021-09-09
  • Mysql中的超時(shí)時(shí)間設(shè)置方式

    Mysql中的超時(shí)時(shí)間設(shè)置方式

    這篇文章主要介紹了Mysql中的超時(shí)時(shí)間設(shè)置方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 詳解mysql中的存儲引擎

    詳解mysql中的存儲引擎

    本文主要介紹什么是存儲引擎?各種存儲引擎的特性,常用存儲引擎及適用場景,存儲引擎在mysql中的使用以及mysql的工作流程,希望對您的學(xué)習(xí)有所幫助。
    2020-10-10
  • MySQL產(chǎn)生死鎖原因分析講解

    MySQL產(chǎn)生死鎖原因分析講解

    死鎖指的是在兩個(gè)或兩個(gè)以上不同的進(jìn)程或線程中,由于存在共同資源的競爭或進(jìn)程(或線程)間的通訊而導(dǎo)致各個(gè)線程間相互掛起等待,如果沒有外力作用,最終會引發(fā)整個(gè)系統(tǒng)崩潰
    2022-12-12
  • Mysql啟動中 InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes 的問題

    Mysql啟動中 InnoDB: Error: log file ./ib_logfile0 is of differe

    對于使用了默認(rèn) my.cnf(一般教程都會教你使用support-files/my-medium.cnf)的Mysql服務(wù)來說如果中間使用了innodb的話,innodb默認(rèn)的log file大小是56M
    2011-05-05
  • MySQL刪除數(shù)據(jù)庫的兩種方法

    MySQL刪除數(shù)據(jù)庫的兩種方法

    這篇文章主要為大家詳細(xì)介紹了MySQL刪除數(shù)據(jù)庫的兩種方法,感興趣的小伙伴們可以參考一下
    2016-06-06
  • MySQL數(shù)據(jù)庫優(yōu)化之索引實(shí)現(xiàn)原理與用法分析

    MySQL數(shù)據(jù)庫優(yōu)化之索引實(shí)現(xiàn)原理與用法分析

    這篇文章主要介紹了MySQL數(shù)據(jù)庫優(yōu)化之索引實(shí)現(xiàn)原理與用法,結(jié)合實(shí)例形式分析了mysql數(shù)據(jù)庫優(yōu)化操作的索引原理、具體實(shí)現(xiàn)與相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2020-01-01
  • mysql中整數(shù)數(shù)據(jù)類型tinyint詳解

    mysql中整數(shù)數(shù)據(jù)類型tinyint詳解

    大家好,本篇文章主要講的是mysql中整數(shù)數(shù)據(jù)類型tinyint詳解,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12

最新評論

滦平县| 临邑县| 邯郸县| 公安县| 襄樊市| 弋阳县| 古田县| 广丰县| 玉龙| 桃园县| 乌鲁木齐市| 九江市| 武冈市| 图木舒克市| 泌阳县| 香格里拉县| 东阿县| 马尔康县| 衡山县| 佛教| 栾川县| 新营市| 临汾市| 邳州市| 武陟县| 神农架林区| 马公市| 车致| 乌拉特前旗| 哈巴河县| 永仁县| 汉中市| 新竹县| 万宁市| 秭归县| 密山市| 呼玛县| 砀山县| 西吉县| 平远县| 阳曲县|