MySQL int型別

2019-10-16 22:58:26

在本教學中,您將了解MySQL INT或整數資料型別以及如何在資料庫表設計中使用它。 另外,我們將向您展示如何使用表中整數列的顯示寬度和ZEROFILL屬性。

MySQL INT型別簡介

在MySQL中,INT代表整數。整數可以寫成沒有分數的數值,例如,它可以是11004-10等,它不能是1.25/3等。整數可以是零,正和負。

MySQL支援所有標準SQL整數型別INTEGERINTSMALLINT。 此外,MySQL提供TINYINTMEDIUMINTBIGINT作為標準SQL的擴充套件。

MySQL INT資料型別可以是有符號或無符號。下表說明了每個整數型別的特性,包括以位元組為單位的儲存,最小值和最大值。

在列中使用INT

由於整數型別表示精確數位,因此通常將其用作表的主鍵。此外,INT列可以具有AUTO_INCREMENT屬性。

當在INT AUTO_INCREMENT列中插入NULL值或0時,列的值將設定為下一個序列值。 請注意,序列值以1開始。

AUTO_INCREMENT列中插入不為NULL或零的值時,列接受該值。 此外,序列將重置為插入值的下一個值。

我們來看一個使用帶有AUTO_INCREMENT屬性的整數列的表的例子。

首先,使用以下語句建立一個名為items的新表,其中整數列為主鍵:

USE testdb;

CREATE TABLE items (
    item_id INT AUTO_INCREMENT PRIMARY KEY,
    item_text VARCHAR(255)
);

可以在上面的CREATE TABLE語句中使用INTINTEGER,因為它們是可互換的。 每當在items表中插入一個新行時,item_id列的值將增加1

接下來,以下INSERT語句items表中插入三行資料。

INSERT INTO items(item_text)
VALUES('laptop'), ('mouse'),('headphone');

然後,使用以下SELECT語句items表查詢資料:

SELECT 
    *
FROM
    items;

之後,插入一個新的行,該行的item_id列的值要明確指定。

INSERT INTO items(item_id,item_text)
VALUES(10,'Server');

因為item_id列的當前值為10,所以序列將重置為11。如果插入新行,則AUTO_INCREMENT列將使用11作為下一個值。

INSERT INTO items(item_text)
VALUES('Router');

最後,再次查詢items表中的資料,如下結果。

SELECT 
    *
FROM
    items;

請注意,由於自MySQL 5.1版本起,AUTO_INCREMENT列只接受正值。AUTO_INCREMENT列不支援負數值。

MySQL INT和顯示寬度屬性

MySQL提供了一個擴充套件,允許您指定顯示寬度以及INT資料型別。顯示寬度包含在INT關鍵字後面的括號內,例如,INT(5)指定一個顯示寬度為五位數的INT

要注意的是,顯示寬度屬性不能控制列可以儲存的值範圍。顯示寬度屬性通常由應用程式用於格式化整數值。 MySQL將顯示寬度屬性作為返回結果集的後設資料。

具有ZEROFILL屬性的MySQL INT

除了顯示寬度之外,MySQL還提供了非標準的ZEROFILL屬性。 在這種情況下,MySQL將空格替換為零。請參考以下範例。

首先,使用以下語句建立一個名為zerofill_tests的表:

USE testdb;

CREATE TABLE zerofill_tests(
    id INT AUTO_INCREMENT PRIMARY KEY,
    v1 INT(2) ZEROFILL,
    v2 INT(3) ZEROFILL,
    v3 INT(5) ZEROFILL
);

其次,在zerofill_tests表中插入一個新行。

INSERT into zerofill_tests(v1,v2,v3)
VALUES(1,6,9);

第三,從zerofill_tests查詢資料

SELECT 
    v1, v2, v3
FROM
    zerofill_tests;

v1列的顯示寬度為2,包括ZEROFILL,它的值為1,因此在輸出中看到01。 MySQL將第一個空格替換為0

v2列具有包含ZEROFILL的顯示寬度3。 它的值為6,因此將看到有00作為前導零。

v3列具有包含ZEROFILL的顯示寬度5,它的值為9,因此MySQL在輸出數位的開頭填零為0000

請注意,如果對整數列使用ZEROFILL屬性,MySQL將自動將一個UNSIGNED屬性新增到該列。

在本教學中,我們向您展示了如何在表中使用MySQL INT資料型別,並向您介紹了整數列的顯示寬度和ZEROFILL屬性。