首頁 > 軟體

MySQL中BIGINT資料型別如何儲存整數值

2022-10-28 14:04:39

前言

本文重點介紹 MySQL BIGINT 資料型別,並研究我們如何使用它來儲存整數值。我們還將瞭解它的範圍、儲存大小和各種屬性,包括有符號、無符號和零填充。

整數型別(精確值) - INTEGER、INT、SMALLINT、TINYINT、MEDIUMINT、BIGINT

MySQL 支援 SQL 標準整數型別 INTEGER(或INT)和 SMALLINT. 作為標準的擴充套件,MySQL 還支援整數型別 TINYINTMEDIUMINT和 BIGINT. 下表顯示了每種整數型別所需的儲存空間和範圍。

表 11.1 MySQL 支援的整數型別所需的儲存和範圍

型別儲存(位元組)簽名的最小值最小值無符號簽署的最大值最大值無符號
TINYINT1-1280127255
SMALLINT2-3276803276765535
MEDIUMINT3-83886080838860716777215
INT4-2147483648021474836474294967295
BIGINT8-2630263-1264-1

MySQL BIGINT

BIGINT 是 ab 位元組或 64 位整數值,在儲存大整數值時非常有用。

MySQL BIGINT 與任何其他 MySQL 整數資料型別一樣,可以是有符號或無符號的。有符號資料型別表示該列可以儲存正整數和負整數值。這是 MySQL 中大多數整數型別的預設型別。因此,除非明確指定,否則任何整數型別列都可以儲存正整數和負整數。

另一方面,無符號資料型別表示該列只能儲存正整數值。

簽名 MySQL BIGINT 型別的範圍在 -9223372036854775808 和 9223372036854775807 之間

對於無符號 BIGINT 型別,取值範圍為 0 到 18446744073709551615。

BIGINT 型別的另一個屬性是 ZEROFILL。在列上指定此屬性後,該列將自動設定為 UNSIGNED。

zerofill 屬性也用零填充空格。

例子

讓我們看幾個例子來說明如何使用 BIGINT 型別。

CREATE DATABASE IF NOT EXISTS integers;
USE integers;

接下來,讓我們建立一個表並用各種 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);

在上面的範例查詢中,這些值是可接受的,因為它們在有符號、無符號和 zerofill BIGINT 型別的範圍內。

SELECT * FROM examples;
+---+------+----------------------+
| x | y    | z                    |
+---+------+----------------------+
| 1 |    2 | 00000000000000000003 |
+---+------+----------------------+
1 row in <strong>set</strong> (0.01 sec)

範例 2

在下一個案例中,讓我們嘗試新增所有負值。範例查詢如下:

INSERT INTO examples(x,y,z) VALUES (-1,-2,-3);
ERROR 1264 (22003): Out of range value for column 'y' at row 1

在這種情況下,查詢失敗,因為 y 列是無符號的。因此,為列分配負值超出了列範圍。

範例 3

我們可以觀察到與上述第三列類似的情況。zerofill 屬性自動使列無符號,使新增負值超出範圍。一個例子是:

INSERT INTO examples(x,y,z) VALUES (-1,2,-3);
ERROR 1264 (22003): Out of range value for column 'z' at row 1

範例 4

現在讓我們嘗試新增每種型別的最大值。一個範例查詢是:

INSERT INTO examples(x,y,z) VALUES (-9223372036854775808, 9223372036854775808, 9223372036854775808);

在上面的範例中,由於所有值都在範圍內,因此查詢成功執行。

考慮下面的查詢:

INSERT INTO examples(x,y,z) VALUES (9223372036854775807, 9223372036854775808, 9223372036854775808);

您會注意到所有值都在最大值上。由於 x 列設定為 AUTO_INCREMENT,因此向其新增值將失敗。

INSERT INTO examples(y,z) VALUES (9223372036854775808, 9223372036854775808);
ERROR 1062 (23000): Duplicate entry '9223372036854775807' for key 'examples.PRIMARY'

但是,如果在 MySQL 中禁用了嚴格模式,您可以插入超出範圍的值。

SELECT * FROM examples;

結論

在本教學中,我們討論了 MySQL BININT 型別及其各種屬性的範圍。

到此這篇關於MySQL中BIGINT資料型別如何儲存整數值的文章就介紹到這了,更多相關MySQL BIGINT資料型別內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com