天天看點

mysql中資料類型後面的數字到底是什麼?

1.在mysql建立資料表的時候我們在資料類型後面經常會見到,或者添加資料,那麼資料類型後面的數字到底是什麼呢?之前以為int(3) 就代表最長資料就是3個位元組,其實不是!!

mysql中資料類型後面的數字到底是什麼?

我向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個漢字