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語句建立表 若不指定長度,它會為你指定預設長度,下面對...