MySQL資料型別 int M 表示什麼意思?

2021-07-09 17:43:12 字數 1651 閱讀 3515

mysql 資料型別中的 integer types 有點奇怪。你可能會見到諸如:int(3)、int(4)、int(8) 之類的 int 資料型別。剛接觸 mysql 的時候,我還以為 int(3) 占用的儲存空間比 int(4) 要小, int(4) 占用的儲存空間比 int(8) 小。

後來,參看 mysql 手冊,發現自己理解錯了。

int(m): m indicates the maximum display width for integer types.(表示整數型別的最大顯示寬度。)

在 integer 資料型別中,m 表示最大顯示寬度。 

原來,在 int(m) 中,m 的值跟 int(m) 所

佔多少儲存空間並無任何關係。 

int(3)、int(4)、int(8) 在磁碟上都是占用 4 btyes 的儲存空間。

說白了,除了顯示給使用者

的方式有點不同外,int(m) 跟 int 資料型別是相同的。

另外,int(m) 只有跟 zerofill 結合起來,才能使我們清楚的看到不同之處。

mysql> drop table if exists t; mysql> create table t(id int zerofill);

mysql> insert into t(id) values(10);

mysql> select * from t;

+------------+

| id             |

+------------+

| 0000000010 |

+------------+

mysql> alter table t change column id id int(3) zerofill;

mysql> select * from t;

+------+

| id |

+------+

| 010 |

+------+

mysql> mysql> alter table t change column id id int(4) zerofill;

mysql> select * from t;

+------+

| id |

+------+

| 0010 |

+------+

mysql> mysql> insert into t(id) values(1000000);

mysql> select * from t;

+---------+

| id |

+---------+

| 0010 |

| 1000000 |

+---------+

從上面的測試可以看出,「(m)」指定了 int 型數值顯示的寬度,如果字段資料型別是 int(4),則:當顯示數值 10 時,在左邊要補上 「00」;當顯示數值 100 是,在左邊要補上「0」;當顯示數值 1000000 時,已經超過了指定寬度「(4)」,因此按原樣輸出。 在使用 mysql 資料型別中的整數型別(tinyint, smallint, mediumint, int/integer, bigint)時,非特殊需求下,在資料型別後加個「(m)」,我想不出有何意義。

另外,在 mysql 資料型別中,integer 和 int 同義。到底使用哪個,自己看著辦吧。

mysql資料型別用法 mysql資料型別和用法

歡迎進入linux社群論壇,與200萬技術人員互動交流 進入 mysql支援多種列型別 數值型別 日期 時間型別和字串 字元 型別。本章首先對這些列型別進行了概述,然後更加詳細地描述了各種列的型別,以及列型別儲存需求的總結。概述很簡單。關於具體列型別 歡迎進入linux社群論壇,與200萬技術人員互...

mysql 資料型別 真假 MySQL 資料型別

mysql基礎 資料型別 整型型別 根據所儲存的整數數值取值範圍不同,可分為以下五類 1 tinyint佔1個位元組 2 smallint佔2個位元組 3 mediumint 佔3個位元組 4 int佔4個位元組 5 bigint佔8個位元組 根據每種型別所佔的位元組數可確定其無符號整數和有符號整數...

mysql 郵箱 資料型別 mysql 資料型別

1 整型mysql資料型別含義 有符號 tinyint m 1個位元組 範圍 128 127 smallint m 2個位元組 範圍 32768 32767 mediumint m 3個位元組 範圍 8388608 8388607 int m 4個位元組 範圍 2147483648 21474836...