mysql中數據類型后面的數字到底是什么?


1.在mysql新建數據表的時候我們在數據類型后面經常會見到,或者添加數據,那么數據類型后面的數字到底是什么呢?之前以為int(3) 就代表最長數據就是3個字節,其實不是!!

我向num字段中插入:

INSERT INTO test (num) VALUES (123); 成功 數據123,

INSERT INTO test (num) VALUES (123456); 成功數據123456, //那么int(3) 中的3沒有其作用嗎? 答案是對的,沒有作用,他的作用在那里呢?

解釋:

int類型,是定長的,其容量是不會隨着后面的數字而變化的,比如int(11)和int(8),都是一樣的占4字節。tinyint(1)和tinyint(10)也都占用一個字節。那么后面的3代表什么呢?

mysql數據庫中以 :數據類型(m)  來約束數據,其中 數字m在不同的數據類型中表示含義是不同的。 咱們這里只講整數。

整型數系統已經限制了取值范圍,tinyint占1個字節、int占4個字節。所以整型數后面的m不是表示的數據長度,而是表示數據在顯示時顯示的最小長度。

tinyint(1) 這里的1表示的是 最短顯示一個字符。tinyint(2) 這里的2表示的是 最短顯示兩個字符。

當字符長度超過(m)時,相當於啥都沒發生;

當字符長度小於(m)時,就需要指定拿某個字符來填充,比如zerofill(表示用0填充),

設置tinyint(2) zerofill 你插入1時他會顯示01;設置tinyint(4) zerofill 你插入1時他會顯示0001。

所以,沒有zerofill,(m)就是無用的。

 

mysql 中int(1)和tinyint(1)中的1只是指定顯示長度,並不表示存儲長度,只有字段指定zerofill時有用。

 

位數限制基本沒有意義。

 2.

float(M,D)

第一個數字M,代表總長度限制(總長度包括小數位和整數位),2代表總長度不能超過2個字符,比如2.34,就超過了2位總長度;

第二個數字D,代表小數位的長度限制。0.2表示占用了1個小數位。

這樣看,當然M必需大於等於D。

比如設置為float(2,2),那么寫入12.3這個數字時,實際插入的是0.99。

比如設置為float(2,1),那么寫入12.3這個數字時,實際插入的是9.9。

mysql會自動截取該字段能接受的最大值存入。

那么設置為float(0,0),則相當於不受限制,或者說受float本身的精度限制。

 

3. char(M) : M為最大輸入字符長度255

例如:char(3) 最多能輸入三個英文字母,或者3個漢字

英文字符1字節(utf-8)

4 varchar(M): M為最大輸入字符長度65535

varchar(6) 最多能輸入6個英文字母,或者6個漢字

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM