mysql欄位每個型別長度大小與建表型別長度說明

2021-12-30 01:47:09 字數 1987 閱讀 8809

在建立資料庫表時,例如

create table user

id int(4) primary key ,

name varchar(20),

pwd varchar(20)

括號裡的數字叫資料的寬度,我們不能一概而論,因為不同的資料型別對寬度的處理也不一樣:

1、整數型別,這裡顯示的寬度和資料型別的取值範圍是沒有任何關係的,顯示寬度只是指明mysql最大可能顯示的數字個數,數值的位數小於指定的寬度時會由空格填充;如果插入了大於顯示寬度的值,只要該值不超過該型別的取值範圍,數值依然可以插入,而且能夠顯示出來。

例如上面的udi,顯示的寬度是4,但是我向uid中插入100001,也是可以的,儲存和顯示的都會是100001

如果你不設定寬度,系統將新增預設的寬度 tinyint(4),smallint(6),mediumint(9),int(11),bigint(20),這些預設的寬度是跟該型別的取值範圍長度相關。

2、字串型別,字串型別這個寬度才真的用上了。不管是char還是varchar,寬度都定義了字串的最大長度

例如上面的 password varchar(20),如果你輸入了乙個21個字元的密碼,那麼儲存和顯示的只會是前20個字元,你將丟失乙個字元資訊,char同理。由於varchar是變長儲存的,所以實際開發中我們一般都把varchar的寬度設為最長255,反正你沒用完它也不會浪費空間。

3、浮點和日期等資料型別對資料的寬度沒有要求,一般也不設定,預設是0

序號 列型別

需要的儲存量

1 tinyint

1位元組

2 smallint

2個位元組

3 mediumint

3個位元組

4 int

4個位元組

5 integer

4個位元組

6 bigint

8個位元組

7 float(x)

4如果 x < = 24或 8如果 25 < = x < = 53

8 float

4個位元組

9 double

8個位元組

11 double precision

8個位元組

12 real

8個位元組

13 decimal(m,d)

m位元組(d+2 ,如果m < d)

14 numeric(m,d)

m位元組(d+2 ,如果m < d)

日期和時間型別

序號 列型別

需要的儲存量

date

3個位元組

datetime

8個位元組

timestamp

4個位元組

time

3個位元組

year

1位元組

串型別

序號

列型別

需要的儲存量

char(m)

m位元組,1 <= m <= 255

varchar(m)

l+1位元組,在此l <= m和1 <= m <= 255

tinyblob,tinytext

l+1位元組,在此l< 2 ^ 8

blob, text

l+2位元組,在此l< 2 ^ 16

mediumblob,

mediumtext

l+3位元組,在此l< 2 ^ 24

longblob, longtext

l+4位元組,在此l< 2 ^ 32

enum('value1','value2',...)

1或 2個位元組,取決於列舉值的數目(最大值65535)

set('value1','value2',...)

1,2,3,4或8個位元組,取決於集合成員的數量(最多64個成員)

MySQL 修改字段型別或長度

mysql alter table 表名 modify column 欄位名 型別 例如資料庫中address表 city欄位是varchar 30 修改型別可以用 謹慎修改型別,可能會導致原有資料出錯 mysql alter table address modify column city cha...

MySQL欄位型別及長度值

一 數字型別 型別 範圍 說明 n 1 255 個字元 binary 分辨大小寫 固定長度 std name cahr 32 not null n 1 255 個字元 binary 分辨大小寫 可變長度 std address varchar 256 tinyblob 最大長度255個字元 2 8 ...

MySQL 修改字段型別或長度

mysql alter table 表名 modify column 欄位名 型別 例如資料庫中address表 city欄位是varchar 30 修改型別可以用 謹慎修改型別,可能會導致原有資料出錯 mysql alter table address modify column city cha...