MySQL資料型別的長度

2021-07-07 04:34:53 字數 3057 閱讀 4300

mysql有幾種資料型別可以限制型別的"長度",有char(length)、varchar(length)、tinyint(length)、smallint(length)、mediumint(length)、int(length)、bigint(length)、float(length, decimals)、double(length, decimals)和decimal(length, decimals)。

然而,這些資料型別的長度,並不是都指資料的大小。具體說就是:

(1)char、varcahr的長度是指字元的長度,例如char[3]則只能放字串"123",如果插入資料"1234",則從高位擷取,變為"123"。 varcahr同理。

(2)tinyint、smallint、mediumint、int和bigint的長度,其實和資料的大小無關!length指的是顯示寬度,舉個例子:

[cpp]view plain

copy

mysql> create table test(id 

int(3) zerofill);  

query ok, 0 rows affected (0.09 sec)  

mysql> insert into test(id) values(1),(1234);  

query ok, 2 rows affected (0.06 sec)  

records: 2  duplicates: 0  warnings: 0  

mysql> select * from test;  

+------+  

| id   |  

+------+  

|  001 |  

| 1234 |  

+------+  

2 rows in set (0.00 sec)  

可以看出,id的顯示寬度為3,不足的左邊補0,資料長度超過的則原樣輸出。如果沒有zerofill,則看不出顯示寬度,沒有前導零。

(3)float、double和decimal的長度指的是全部數字(包括小數點後面的),例如decimal(4,1)指的是全部位數為4,小數點後1位,如果插入1234,則查詢的資料是999.9。過程如下

[cpp]view plain

copy

mysql> alter table test add realnum decimal(4,1);  

query ok, 2 rows affected (0.03 sec)  

records: 2  duplicates: 0  warnings: 0  

mysql> insert into test(id,realnum) values(2,1234);  

query ok, 1 row affected, 1 warning (0.05 sec)  

mysql> select * from test;  

+------+---------+  

| id   | realnum |  

+------+---------+  

|  001 |    null |  

| 1234 |    null |  

|  002 |   999.9 |  

+------+---------+  

3 rows in set (0.02 sec)  

附錄 常見mysql資料型別(留作備忘)

類 型大 小

描 述cahr(length)

length位元組

定長字段,長度為0~255個字元

varchar(length)

string長度+1位元組或string長度+2位元組

變長字段,長度為0~65 535個字元

tinytext

string長度+1位元組

字串,最大長度為255個字元

text

string長度+2位元組

字串,最大長度為65 535個字元

mediumint

string長度+3位元組

字串,最大長度為16 777 215個字元

longtext

string長度+4位元組

字串,最大長度為4 294 967 295個字元

tinyint(length)

1位元組範圍:-128~127,或者0~255(無符號)

smallint(length)

2位元組範圍:-32 768~32 767,或者0~65 535(無符號)

mediumint(length)

3位元組範圍:-8 388 608~8 388 607,或者0~16 777 215(無符號)

int(length)

4位元組範圍:-2 147 483 648~2 147 483 647,或者0~4 294 967 295(無符號)

bigint(length)

8位元組範圍:-9 223 372 036 854 775 808~9 223 372 036 854 775 807,或者0~18 446 744 073 709 551 615(無符號)

float(length, decimals)

4位元組具有浮動小數點的較小的數

double(length, decimals)

8位元組具有浮動小數點的較大的數

decimal(length, decimals)

length+1位元組或length+2位元組

儲存為字串的double,允許固定的小數點

date

3位元組採用yyyy-mm-dd格式

datetime

8位元組採用yyyy-mm-dd hh:mm:ss格式

timestamp

4位元組採用yyyymmddhhmmss格式;可接受的範圍終止於2023年

time

3位元組採用hh:mm:ss格式

enum

1或2位元組

enumeration(列舉)的簡寫,這意味著每一列都可以具有多個可能的值之一

set1、2、3、4或8位元組

與enum一樣,只不過每一列都可以具有多個可能的值

mysql 長度 含義 mysql資料型別長度

1個位元組 8位 tinyint 為乙個位元組 2的8次方 256 所以最多儲存到256 日期和時間資料型別 mysql資料型別 含義date 3位元組,日期,格式 2014 09 18 time 3位元組,時間,格式 08 42 30 datetime 8位元組,日期時間,格式 2014 09 1...

mysql中資料型別的長度

因為最近要登記一些長度較大的數值,今天才仔細的檢視了bigint的範圍。以前都忽略了mysql中資料長度的上限問題。在mysql中建立表時,varchar型別必須指定長度,int型別可以不指定長度。當然,在mysql中使用介面建立表 不使用sql語句建立表 若不指定長度,它會為你指定預設長度,下面對...

mysql中資料型別的長度

因為最近要登記一些長度較大的數值,今天才仔細的檢視了bigint的範圍。以前都忽略了mysql中資料長度的上限問題。在mysql中建立表時,varchar型別必須指定長度,int型別可以不指定長度。當然,在mysql中使用介面建立表 不使用sql語句建立表 若不指定長度,它會為你指定預設長度,下面對...