mysql的長整型是什麼

2022-06-14 18:02:19

mysql的長整型是「BIGINT」。BIGINT是ab位元組或64位元整數值,在儲存極大整數值時非常有用。BIGINT與其他整數資料型別一樣,可以是有符號或無符號的;有符號資料型別表示該列可以儲存正整數和負整數值,而無符號資料型別表示該列只能儲存正整數值。有符號BIGINT型別的範圍在「-9223372036854775808」和「9223372036854775807」之間。

本教學操作環境:windows7系統、mysql8版本、Dell G3電腦。

整數型別又稱數值型資料,數值型資料型別主要用來儲存數位。

MySQL 提供了多種數值型資料型別,不同的資料型別提供不同的取值範圍,可以儲存的值範圍越大,所需的儲存空間也會越大。

MySQL 主要提供的整數型別有 TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT,其屬性欄位可以新增 AUTO_INCREMENT 自增約束條件。下表中列出了 MySQL 中的數值型別。

型別大小範圍(有符號)範圍(無符號)用途
TINYINT1個位元組(-128,127)(0,255)小整數值
SMALLINT2個位元組(-32 768,32 767)(0,65 535)大整數值
MEDIUMINT3個位元組(-8 388 608,8 388 607)(0,16 777 215)大整數值
INT或INTEGER4個位元組(-2 147 483 648,2 147 483 647)(0,4 294 967 295)大整數值
BIGINT8個位元組(-9,223,372,036,854,775,808,9 223 372 036 854 775 807)(0,18 446 744 073 709 551 615)極大整數值

從上表中可以看到,不同型別的整數儲存所需的位元組數不相同,佔用位元組數最小的是 TINYINT 型別,佔用位元組最大的是 BIGINT 型別,佔用的位元組越多的型別所能表示的數值範圍越大。因而,mysql的長整型是「BIGINT」。

MySQL BIGINT

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

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

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

有符號 MySQL BIGINT 型別的範圍在 -9223372036854775808 和 9223372036854775807 之間

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

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

zerofill 屬性也用零填充空格。

BIGINT範例:

讓我們看幾個例子來說明如何使用 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;

1.png

範例 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;

2.png

【相關推薦:】

以上就是mysql的長整型是什麼的詳細內容,更多請關注TW511.COM其它相關文章!