分析MySQL資料型別的長度

2021-09-20 15:56:51 字數 3316 閱讀 9606

分析mysql資料型別的長度

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

,允許固定的小數點

date3位元組

採用yyyy-mm-dd

格式datetime8位元組

採用yyyy-mm-dd hh:mm:ss

格式timestamp4位元組

採用yyyymmddhhmmss

格式;可接受的範圍終止於

2037

年time3位元組

採用hh:mm:ss

格式enum1或

2位元組enumeration(列舉)

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

set1、2

、3、4

或8位元組與

enum

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

MySQL資料型別的長度

mysql有幾種資料型別可以限制型別的 長度 有char length varchar length tinyint length smallint length mediumint length int length bigint length float length,decimals doub...

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資料型別分析 mysql資料型別選擇分析

1 char varchar text的選擇 原則,最通用的並不是最適合的。因為更改資料型別會耗費很長的時候,在定義的時候需要謹慎 例如存放密碼的md5加密資料,那麼我們就絕對用char 32 因為char使用固定的block,具有更快的偏移速度。例如存放使用者名稱這樣的資料,長的使用者名稱最多也就...