MySQL的字段的寬度含義int width

2021-07-30 05:00:57 字數 2289 閱讀 6367

mysql型別關鍵字後面的括號內指定整數值的顯示寬度(例如,int(11))。該可選顯示寬度規定用於顯示寬度小於指定的列寬度的值時從左側填滿寬度。顯示寬度並不限制可以在列內儲存的值的範圍,也不限制超過列的指定寬度的值的顯示。

所以int(1)和int(11)預設是沒有任何區別的!!!

mysql> desc t1;

+——-+———+——+—–+———+——-+

| field | type | null | key | default | extra |

+——-+———+——+—–+———+——-+

| id | int(1) | yes | | null | |

| uid | int(11) | yes | | null | |

+——-+———+——+—–+———+——-+

2 rows in set (0.00 sec)

mysql>

mysql> insert into t1 select 123,1234;

query ok, 1 row affected (0.04 sec)

records: 1 duplicates: 0 warnings: 0

mysql> select * from t1;

+——+——+

| id | uid |

+——+——+

| 123 | 1234 |

+——+——+

1 row in set (0.05 sec)

mysql>

當結合可選擴充套件屬性zerofill使用時, 預設補充的空格用零代替。例如,對於宣告為int(5) zerofill的列,值4檢索為00004。 請注意如果在整數列儲存超過顯示寬度的乙個值,當mysql為複雜聯接生成臨時表時會遇到問題,因為在這些情況下mysql相信資料適合原列寬度。

所有整數型別可以有乙個可選(非標準)屬性unsigned。當你想要在列內只允許非負數和該列需要較大的上限數值範圍時可以使用無符號值 。 如果設定了zerofill擴充套件屬性試,預設就有了無符號屬性(unsigned)

所以int(1)與int(11)後的括號中的字元表示顯示寬度,整數列的顯示寬度與mysql需要用多少個字元來顯示該列數值,與該整數需要的儲存空間的大小都沒有關係,int型別的字段能儲存的資料上限還是2147483647(有符號型)和4294967295(無符號型)。其實當我們在選擇使用int的型別的時候,不論是int(1)還是int(11),它在資料庫裡面儲存的都是4個位元組的長度。

mysql> desc t2;

+——-+—————————+——+—–+———+——-+

| field | type | null | key | default | extra |

+——-+—————————+——+—–+———+——-+

| id | int(1) unsigned zerofill | yes | | null | |

| uid | int(11) unsigned zerofill | yes | | null | |

+——-+—————————+——+—–+———+——-+

2 rows in set (0.00 sec)

mysql>

mysql> insert into t2 select 123456,123456789;

query ok, 1 row affected (0.01 sec)

records: 1 duplicates: 0 warnings: 0

mysql> insert into t2 select 123456,1234567899;

query ok, 1 row affected (0.01 sec)

records: 1 duplicates: 0 warnings: 0

mysql> select * from t2;

+——–+————-+

| id | uid |

+——–+————-+

| 123456 | 00123456789 |

| 123456 | 01234567899 |

+——–+————-+

2 rows in set (0.00 sec)

mysql>

總結:int(m) zerofill,加上zerofill後m才表現出不同,比如 int(3) zerofill,你插入到資料庫裡的是10,則實際插入為010,也就是在前面補充加了乙個0.如果int(3)和int(10)不加zerofill,則它們沒有什麼區別.m不是用來限制int列內儲存值的範圍的.int(m)的最大值和最小值與unsigned有關。

v session SERIAL 欄位的含義

wabjtam123 在itpub的乙個提問帖子,我經常看到要kill session 好象不止殺乙個sid,好象是alter system kill session sid,serial 這個serial 是什麼東西呢?為什麼不是 alter system kill session sid 就好呢...

v session SERIAL 欄位的含義

v session serial 欄位的含義 2008 10 09 22 11 10 標籤 oracle 休閒職場 wabjtam123 在itpub的乙個提問帖子,我經常看到要kill session 好象不止殺乙個sid,好象是alter system kill session sid,seri...

v session SERIAL 欄位的含義

wabjtam123 在itpub的乙個提問帖子,我經常看到要kill session 好象不止殺乙個sid,好象是alter system kill session sid,serial 這個serial 是什麼東西呢?為什麼不是 alter system kill session sid就好呢?...