mysql signed unsigned和zerofill使用與區(qū)別
靈感來(lái)源
mysql中有符號(hào)signed,無(wú)符號(hào)unsigned與零填充zerofill
UNSIGNED
無(wú)符號(hào)UNSIGNED
是一個(gè)屬性,你可以在創(chuàng)建或修改表時(shí)為整數(shù)類型的列指定它。無(wú)符號(hào)屬性意味著該列只能存儲(chǔ)非負(fù)整數(shù)(0
和正整數(shù)),而不是默認(rèn)的有符號(hào)整數(shù),后者可以存儲(chǔ)負(fù)數(shù)、零和正數(shù)。
例如,如果你定義一個(gè)列為INT UNSIGNED
,那么這個(gè)列就不能存儲(chǔ)負(fù)數(shù)。相比之下,一個(gè)普通的INT
類型的列(默認(rèn)是有符號(hào)的)可以存儲(chǔ)從-2147483648
到2147483647
的整數(shù)。而INT UNSIGNED
類型的列可以存儲(chǔ)從0 到 4294967295
的整數(shù)。
使用無(wú)符號(hào)類型的好處是它可以擴(kuò)大正數(shù)的存儲(chǔ)范圍,因?yàn)樗恍枰獮樨?fù)數(shù)分配空間。這在某些情況下非常有用,比如當(dāng)你知道數(shù)據(jù)永遠(yuǎn)不會(huì)是負(fù)數(shù)時(shí)(例如年齡、計(jì)數(shù)器或其他只能是正的度量)。
下面是一個(gè)創(chuàng)建無(wú)符號(hào)列的例子:
CREATE TABLE person ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, age TINYINT UNSIGNED NOT NULL );
在這個(gè)例子中,id
列是一個(gè)無(wú)符號(hào)整數(shù),并且是自動(dòng)遞增的主鍵。age
列是一個(gè)無(wú)符號(hào)的TINYINT
,意味著它只能存儲(chǔ)從0
到255
的整數(shù)。如果嘗試插入一個(gè)負(fù)數(shù)到無(wú)符號(hào)列中,MySQL
會(huì)產(chǎn)生一個(gè)錯(cuò)誤或?qū)⒇?fù)數(shù)轉(zhuǎn)換為最接近的有效值(通常是0
)。
類型 | 大小 | 無(wú)符號(hào)范圍 | 有符號(hào)范圍 |
---|---|---|---|
TINYINT | 1 字節(jié) | (-128,127) | (0,255) 小整數(shù)值 |
SMALLINT | 2 字節(jié) | (-32 768,32 767) | (0,65 535) 大整數(shù)值 |
MEDIUMINT | 3 字節(jié) | (-8 388 608,8 388 607) | (0,16 777 215) 大整數(shù)值 |
INT或INTEGER | 4 字節(jié) | (-2 147 483 648,2 147 483 647) | (0,4 294 967 295) 大整數(shù)值 |
zerofill
當(dāng)插入mysql
中該字段的值的長(zhǎng)度小于定義的長(zhǎng)度時(shí),會(huì)在數(shù)值前面補(bǔ)全相應(yīng)數(shù)據(jù)的0
。
比較常用的應(yīng)該是月份或日期前補(bǔ)0
,還是整形數(shù)字不是字符串。
CREATE TABLE `t1` ( `year` year(4) DEFAULT NULL, `month` int(2) unsigned zerofill DEFAULT NULL, `day` int(2) unsigned zerofill DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;```
到此這篇關(guān)于mysql signed unsigned和zerofill使用與區(qū)別的文章就介紹到這了,更多相關(guān)mysql signed unsigned zerofill內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL如何導(dǎo)入csv格式數(shù)據(jù)文件解決方案
本文將詳細(xì)介紹MySQL如何導(dǎo)入csv格式數(shù)據(jù)文件并提供詳細(xì)解決方案,需要了解的朋友可以參考下2012-11-11MySql Error 1698(28000)問(wèn)題的解決方法
這篇文章主要介紹了MySql Error 1698(28000)問(wèn)題的解決方法,需要的朋友可以參考下2017-06-06微信公眾平臺(tái)開(kāi)發(fā) 數(shù)據(jù)庫(kù)操作
這篇文章主要介紹了微信公眾平臺(tái)開(kāi)發(fā) 數(shù)據(jù)庫(kù)操作的相關(guān)資料,需要的朋友可以參考下2016-10-10面試中老生常談的MySQL問(wèn)答集錦夯實(shí)基礎(chǔ)
這篇文章主要為大家介紹了面試中老生常談的MySQL問(wèn)答集錦,不僅可以幫助大家順利通過(guò)面試更可以夯實(shí)大家的基礎(chǔ),有需要的朋友可以借鑒參考下2022-03-03