MySQL中BIGINT數(shù)據(jù)類型如何存儲(chǔ)整數(shù)值
前言
本文重點(diǎn)介紹 MySQL BIGINT 數(shù)據(jù)類型,并研究我們?nèi)绾问褂盟鼇?lái)存儲(chǔ)整數(shù)值。我們還將了解它的范圍、存儲(chǔ)大小和各種屬性,包括有符號(hào)、無(wú)符號(hào)和零填充。
整數(shù)類型(精確值) - INTEGER、INT、SMALLINT、TINYINT、MEDIUMINT、BIGINT
MySQL 支持 SQL 標(biāo)準(zhǔn)整數(shù)類型 INTEGER
(或INT
)和 SMALLINT
. 作為標(biāo)準(zhǔn)的擴(kuò)展,MySQL 還支持整數(shù)類型 TINYINT
、MEDIUMINT
和 BIGINT
. 下表顯示了每種整數(shù)類型所需的存儲(chǔ)空間和范圍。
表 11.1 MySQL 支持的整數(shù)類型所需的存儲(chǔ)和范圍
類型 | 存儲(chǔ)(字節(jié)) | 簽名的最小值 | 最小值無(wú)符號(hào) | 簽署的最大值 | 最大值無(wú)符號(hào) |
---|---|---|---|---|---|
TINYINT | 1 | -128 | 0 | 127 | 255 |
SMALLINT | 2 | -32768 | 0 | 32767 | 65535 |
MEDIUMINT | 3 | -8388608 | 0 | 8388607 | 16777215 |
INT | 4 | -2147483648 | 0 | 2147483647 | 4294967295 |
BIGINT | 8 | -263 | 0 | 263-1 | 264-1 |
MySQL BIGINT
BIGINT 是 ab 字節(jié)或 64 位整數(shù)值,在存儲(chǔ)大整數(shù)值時(shí)非常有用。
MySQL BIGINT 與任何其他 MySQL 整數(shù)數(shù)據(jù)類型一樣,可以是有符號(hào)或無(wú)符號(hào)的。有符號(hào)數(shù)據(jù)類型表示該列可以存儲(chǔ)正整數(shù)和負(fù)整數(shù)值。這是 MySQL 中大多數(shù)整數(shù)類型的默認(rèn)類型。因此,除非明確指定,否則任何整數(shù)類型列都可以存儲(chǔ)正整數(shù)和負(fù)整數(shù)。
另一方面,無(wú)符號(hào)數(shù)據(jù)類型表示該列只能存儲(chǔ)正整數(shù)值。
簽名 MySQL BIGINT 類型的范圍在 -9223372036854775808 和 9223372036854775807 之間
對(duì)于無(wú)符號(hào) BIGINT 類型,取值范圍為 0 到 18446744073709551615。
BIGINT 類型的另一個(gè)屬性是 ZEROFILL。在列上指定此屬性后,該列將自動(dòng)設(shè)置為 UNSIGNED。
zerofill 屬性也用零填充空格。
例子
讓我們看幾個(gè)例子來(lái)說(shuō)明如何使用 BIGINT 類型。
CREATE DATABASE IF NOT EXISTS integers; USE integers;
接下來(lái),讓我們創(chuàng)建一個(gè)表并用各種 BIGINT 列填充它,如下面的查詢所示:
CREATE TABLE examples(x BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY, y BIGINT UNSIGNED, z BIGINT ZEROFILL );
示例 1
讓我們首先嘗試將所有正值添加到表中:
INSERT INTO examples(x,y,z) VALUES (1,2,3);
在上面的示例查詢中,這些值是可接受的,因?yàn)樗鼈冊(cè)谟蟹?hào)、無(wú)符號(hào)和 zerofill BIGINT 類型的范圍內(nèi)。
SELECT * FROM examples; +---+------+----------------------+ | x | y | z | +---+------+----------------------+ | 1 | 2 | 00000000000000000003 | +---+------+----------------------+ 1 row in <strong>set</strong> (0.01 sec)
示例 2
在下一個(gè)案例中,讓我們嘗試添加所有負(fù)值。示例查詢?nèi)缦拢?/p>
INSERT INTO examples(x,y,z) VALUES (-1,-2,-3); ERROR 1264 (22003): Out of range value for column 'y' at row 1
在這種情況下,查詢失敗,因?yàn)?y 列是無(wú)符號(hào)的。因此,為列分配負(fù)值超出了列范圍。
示例 3
我們可以觀察到與上述第三列類似的情況。zerofill 屬性自動(dòng)使列無(wú)符號(hào),使添加負(fù)值超出范圍。一個(gè)例子是:
INSERT INTO examples(x,y,z) VALUES (-1,2,-3); ERROR 1264 (22003): Out of range value for column 'z' at row 1
示例 4
現(xiàn)在讓我們嘗試添加每種類型的最大值。一個(gè)示例查詢是:
INSERT INTO examples(x,y,z) VALUES (-9223372036854775808, 9223372036854775808, 9223372036854775808);
在上面的示例中,由于所有值都在范圍內(nèi),因此查詢成功執(zhí)行。
考慮下面的查詢:
INSERT INTO examples(x,y,z) VALUES (9223372036854775807, 9223372036854775808, 9223372036854775808);
您會(huì)注意到所有值都在最大值上。由于 x 列設(shè)置為 AUTO_INCREMENT,因此向其添加值將失敗。
INSERT INTO examples(y,z) VALUES (9223372036854775808, 9223372036854775808); ERROR 1062 (23000): Duplicate entry '9223372036854775807' for key 'examples.PRIMARY'
但是,如果在 MySQL 中禁用了嚴(yán)格模式,您可以插入超出范圍的值。
SELECT * FROM examples;
結(jié)論
在本教程中,我們討論了 MySQL BININT 類型及其各種屬性的范圍。
到此這篇關(guān)于MySQL中BIGINT數(shù)據(jù)類型如何存儲(chǔ)整數(shù)值的文章就介紹到這了,更多相關(guān)MySQL BIGINT數(shù)據(jù)類型內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
淺談mysql中concat函數(shù),mysql在字段前/后增加字符串
下面小編就為大家?guī)?lái)一篇淺談mysql中concat函數(shù),mysql在字段前/后增加字符串。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-02-02DOS命令行窗口mysql中文顯示亂碼問(wèn)題解決方法
MySQL的默認(rèn)編碼是Latin1,不支持中文,如何修改MySQL的默認(rèn)編碼呢,下面為大家詳細(xì)介紹下2014-05-05使用canal監(jiān)控mysql數(shù)據(jù)庫(kù)實(shí)現(xiàn)elasticsearch索引實(shí)時(shí)更新問(wèn)題
這篇文章主要介紹了使用canal監(jiān)控mysql數(shù)據(jù)庫(kù)實(shí)現(xiàn)elasticsearch索引實(shí)時(shí)更新,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03MySQL?Community?Server?8.0.29安裝配置方法圖文教程
這篇文章主要為大家詳細(xì)介紹了MySQL?Community?Server?8.0.29安裝配置方法圖文教程,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06MySQL數(shù)據(jù)庫(kù)服務(wù)器端核心參數(shù)詳解和推薦配置
MySQL手冊(cè)上也有服務(wù)器端參數(shù)的解釋,以及參數(shù)值的相關(guān)說(shuō)明信息,現(xiàn)針對(duì)我們大家重點(diǎn)需要注意、需要修改或影響性能 的服務(wù)器端參數(shù),作其用處的解釋和如何配置參數(shù)值的推薦,此事情拖了不少時(shí)間,為方便大家?guī)兔m錯(cuò)2011-12-12