分析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,具有更快的偏移速度。例如存放使用者名稱這樣的資料,長的使用者名稱最多也就...