簡體   English   中英

MySQL將(num)添加到smallint列

[英]MySQL adding (num) to smallint column

當我在MySQL中創建一個將smallint指定為列的表,然后使用show create table甚至mysqldump時,MySQL在smallint定義之后添加了(5),如下所示。

我想就數據而言,這實際上並不重要,但是任何人都可以解釋為什么以及是否/如何阻止它這樣做?

順便說一句,我試圖更改現有的數據庫表,使其與新的sql腳本的表完全匹配。 我總是可以更改新的sql腳本,但是如果可能的話,我希望更改現有的表(考慮軟件安裝與軟件升級)。

DROP TABLE IF EXISTS `test`;

CREATE TABLE `test` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `status` varchar(100) NOT NULL DEFAULT '',
  `port` smallint unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

SHOW CREATE TABLE test;

CREATE TABLE `test` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `status` varchar(100) NOT NULL DEFAULT '',
  `port` smallint(5) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

不,您不能阻止SHOW CREATE TABLE包含整數類型的display width屬性。

如果整數類型的列聲明中未包含顯示寬度的值,則MySQL將為其提供默認值。 5SMALLINT UNSIGNED的默認值。

顯示寬度對可以存儲或檢索的值沒有任何影響。 客戶端應用程序可以利用該值來格式化結果集。

參考: http : //dev.mysql.com/doc/refman/5.6/en/numeric-type-attributes.html

tMySQL只是設置(顯示)列的長度以匹配數據類型(最大值65535,五位數字)。 要更改此設置,您可以編寫:

port smallint(3)無符號NOT NULL缺省'0',

如果你喜歡。

嘗試此操作開始在表中添加值。

<mysql> CREATE TABLE test(
->    ID SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
->    Name VARCHAR(100) NOT NULL
-> );>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM