mysql中的int(5)到底有是多長(zhǎng)
int(5)到底有是多長(zhǎng)
在設(shè)計(jì) mysql 表字段時(shí),int(5) 表示是該字段長(zhǎng)度為 5 嗎?
如果你覺(jué)得是,那請(qǐng)你繼續(xù)往下看,相信你會(huì)有新的收獲的。
先來(lái)看一個(gè)實(shí)際例子
我們創(chuàng)建一個(gè)新表,表中只有一個(gè)主鍵 id 和一個(gè) length 字段,其中 length 字段設(shè)置為 int(5) 。
#新建test表 CREATE TABLE `test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `length` int(5) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
是不是 length 字段只能存儲(chǔ)長(zhǎng)度不超過(guò) 5 的數(shù)字呢,我們來(lái)插入一條數(shù)據(jù)試試。
我們插入一條較大的數(shù)據(jù) 123456789 ,這個(gè)數(shù)據(jù)一共有 9 位,看能否正常插入。
#插入一條大數(shù)據(jù) insert into test (length) values (123456789);
結(jié)果證明 int(5) 能插入長(zhǎng)度大于 5 的數(shù)據(jù),所以現(xiàn)在可以肯定的是 int(5) 并不是代表數(shù)據(jù)的寬度。
#查看插入數(shù)據(jù) mysql> select * from test; +------------+-----------+ | id | length | +------------+-----------+ | 1 | 123456789 | +------------+-----------+
在 mysql 中 int 字段長(zhǎng)度其實(shí)是固定的,就是 4 個(gè)字節(jié),不管你 int(11) 還是 int(5) 字段長(zhǎng)度就是固定的 4 個(gè)字節(jié)。
int(5) 其實(shí)是和另一個(gè)屬性 zerofill 配合使用的,表示如果該字段值的寬度小于 5 時(shí),會(huì)自動(dòng)在前面補(bǔ) 0 ,如果寬度大于等于 5 ,那就不需要補(bǔ) 0 。
#int(5) length 字段添加了 zerofill 屬性 mysql> select * from test; +----+--------+ | id | length | +----+--------+ | 1 | 00888 | | 2 | 00012 | | 3 | 12345 | | 4 | 123456 | +----+--------+
注意前提是給該字段添加了 zerofill 屬性,不然 int(5) 不起作用。
#int(5) length 字段沒(méi)有 zerofill 屬性 mysql> select * from test; +----+--------+ | id | length | +----+--------+ | 1 | 888 | | 2 | 12 | | 3 | 12345 | | 4 | 123456 | +----+--------+
要想對(duì)整形字段設(shè)置長(zhǎng)度,應(yīng)該是選擇 tinyint、smallint、mediumint、int、bigint 這幾個(gè)類(lèi)型,這幾個(gè)整數(shù)類(lèi)型才代表了固定的長(zhǎng)度,具體長(zhǎng)度請(qǐng)看下面這個(gè)表格。
注意如果要存儲(chǔ)帶符號(hào)的整形數(shù),是不支持 zerofill 屬性的,會(huì)自動(dòng)轉(zhuǎn)換為 0,在一些涉及遞減的業(yè)務(wù)中需要注意考慮一下。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
window環(huán)境配置Mysql 5.7.21 windowx64.zip免安裝版教程詳解
這篇文章主要介紹了window環(huán)境配置Mysql 5.7.21 windowx64.zip免安裝版教程詳解,需要的朋友可以參考下2018-02-02安裝Mysql5.7.10 winx64出現(xiàn)的幾個(gè)問(wèn)題匯總
這篇文章主要介紹了安裝Mysql5.7.10 winx64出現(xiàn)的幾個(gè)問(wèn)題匯總及解決方案,非常不錯(cuò),需要的朋友可以參考下2016-08-08開(kāi)啟bin-log日志mysql報(bào)錯(cuò)的解決方法
開(kāi)啟bin-log日志mysql報(bào)錯(cuò):This function has none of DETERMINISTIC, NO SQL解決辦法,大家參考使用吧2013-12-12MySQL按時(shí)間統(tǒng)計(jì)數(shù)據(jù)的方法總結(jié)
在本篇MYSQL的內(nèi)容里,我們給大家整理了關(guān)于按時(shí)間統(tǒng)計(jì)數(shù)據(jù)的方法內(nèi)容,有需要的朋友們學(xué)習(xí)下。2019-02-02MySQL into_Mysql中replace與replace into用法案例詳解
這篇文章主要介紹了MySQL into_Mysql中replace與replace into用法案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-09-09mysql查詢(xún)字符串替換語(yǔ)句小結(jié)(數(shù)據(jù)庫(kù)字符串替換)
有時(shí)候我們需要對(duì)mysql的字符串進(jìn)行替換,我們就可以通過(guò)sql語(yǔ)句直接實(shí)現(xiàn)了,不過(guò)對(duì)于大數(shù)據(jù)量的字段不建議使用此方法2012-07-07Mysql和SQLServer驅(qū)動(dòng)連接的實(shí)現(xiàn)步驟
本文主要介紹了Mysql和SQL?Server的驅(qū)動(dòng)連接,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06