mysql中int(m)_mysql中int(M) tinyint(M)中M的作用
原先對mysql不太理解,但也沒有報(bào)錯(cuò)。但理解的不夠深入。這次補(bǔ)上。
原來以為int(11)是指11個(gè)字節(jié),int(10)就是10個(gè)字節(jié)。我錯(cuò)了。
http://zhidao.baidu.com/link?url=puYWaGBQNKNHgffO5kdvXshF3KmX8OuB4Mor3HXapbNHa8m1CdlF8PJTqVuKa1eKcEd6Bv2NKUr3I-KJr5-7ISLhBsmf17Lu69vxv2aR99_
mysql的基本數(shù)據(jù)類型里幾個(gè)int如下:
類型 大小 范圍(有符號) 范圍(無符號) 用途
TINYINT 1字節(jié) (-128,127) (0,255) 小整數(shù)值
SMALLINT 2 字節(jié) (?-2^15 :-32 768,2^15 - 1:32 767) (0,65 535) 大整數(shù)值
MEDIUMINT 3 字節(jié) (-8 388 608,8 388 607) (0,16 777 215) 大整數(shù)值
INT或INTEGER(int 的 SQL-92 同義字為 integer) 4 字節(jié) (-2^31:-2 147 483 648,?2^31 - 1:2 147 483 647) (0,4 294 967 295) 大整數(shù)值
BIGINT 8 字節(jié) (-2^63:-9 233 372 036 854 775 808,2^63-1:9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 極大整數(shù)值
這些類型,是定長的,其容量是不會(huì)隨著后面的數(shù)字而變化的,比如int(11)和int(8),都是一樣的占4字節(jié)。tinyint(1)和tinyint(10)也都占用一個(gè)字節(jié)。
那么后面的11和8,有啥用呢。
http://zhidao.baidu.com/link?url=b0Z-WIhggaErl3uhMrAhoEXQG_3zotyd7r31O3RXSYiFJo1Cad-NeWN8cFXZFI50yVG_lpKooT7OjLhIa20ephKFJYD-fV9ZAv_o63AfyVq
mysql數(shù)據(jù)庫中以 :數(shù)據(jù)類型(m) ?來約束數(shù)據(jù),其中 數(shù)字m在不同的數(shù)據(jù)類型中表示含義是不同的。 咱們這里只講整數(shù)。
整型數(shù)系統(tǒng)已經(jīng)限制了取值范圍,tinyint占1個(gè)字節(jié)、int占4個(gè)字節(jié)。所以整型數(shù)后面的m不是表示的數(shù)據(jù)長度,而是表示數(shù)據(jù)在顯示時(shí)顯示的最小長度。
tinyint(1) 這里的1表示的是 最短顯示一個(gè)字符。tinyint(2) 這里的2表示的是 最短顯示兩個(gè)字符。
當(dāng)字符長度超過(m)時(shí),相當(dāng)于啥都沒發(fā)生;
當(dāng)字符長度小于(m)時(shí),就需要指定拿某個(gè)字符來填充,比如zerofill(表示用0填充),
設(shè)置tinyint(2) zerofill 你插入1時(shí)他會(huì)顯示01;設(shè)置tinyint(4) zerofill 你插入1時(shí)他會(huì)顯示0001。
所以,沒有zerofill,(m)就是無用的。
http://blog.csdn.net/phpwish/article/details/7845921
綜上整型的數(shù)據(jù)類型括號內(nèi)的數(shù)字不管是多少,所占的存儲空間都固定的。
http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/08/25/2153016.html
mysql 中int(1)和tinyint(1)中的1只是指定顯示長度,并不表示存儲長度,只有字段指定zerofill時(shí)有用。
位數(shù)限制基本沒有意義。
在mysql中我做過實(shí)驗(yàn),對于一個(gè)tinyint類型的字段,不管它是tinyint(1)還是tinyint(2)還是tinyint(3),
當(dāng)你插入大于127的數(shù),都會(huì)存入127。跟上文中的結(jié)論是一樣的。
總結(jié):int(11),tinyint(1),bigint(20),后面的數(shù)字,不代表占用空間容量。而代表最小顯示位數(shù)。這個(gè)東西基本沒有意義,除非你對字段指定zerofill。
所以我們在設(shè)計(jì)mysql數(shù)據(jù)庫時(shí),
建表時(shí),mysql會(huì)自動(dòng)分配長度:int(11)、tinyint(4)、smallint(6)、mediumint(9)、bigint(20)。
所以,就用這些默認(rèn)的顯示長度就可以了。不用再去自己填長度,比如搞個(gè)int(10)、tinyint(1)之類的,基本沒用。而且導(dǎo)致表的字段類型多樣化。
總結(jié)
以上是生活随笔為你收集整理的mysql中int(m)_mysql中int(M) tinyint(M)中M的作用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python按章节分割txt_pytho
- 下一篇: python爬火车票_python爬取1