1、數值類型 列類型 需要的存儲量 TINYINT 1 字節 SMALLINT 2 個字節 MEDIUMINT 3 個字節 INT 4 個字節
int(M) 在 integer 數據類型中,M 表示最大顯示寬度。
在 int(M) 中,M 的值跟 int(M) 所占多少存儲空間並無任何關系。
和數字位數也無關系 int(3)、int(4)、int(8)
在磁盤上都是占用 4 btyes 的存儲空間。
除了字段類型設 zerofill(補零)有點不同外,int(M) 跟 int 數據類型是相同的。
補零的情況:
mysql> desc test;
+-------+--------------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------------------+------+-----+---------+----------------+
| id | int(3) unsigned zerofill | NO | PRI | NULL | auto_increment |
+-------+--------------------------+------+-----+---------+----------------+
1 row in set (0.01 sec)
mysql> select * from test ;
+------+
| id |
+------+
| 001 |
| 010 |
| 1234 |
+------+
3 rows in set (0.00 sec)
不補零:
mysql> desc test;
+-------+--------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------+------+-----+---------+----------------+
| id | int(3) | NO | PRI | NULL | auto_increment |
+-------+--------+------+-----+---------+----------------+
1 row in set (0.01 sec)
mysql> select * from test ;
+------+
| id |
+------+
| 1 |
| 10 |
| 1234 |
+------+
3 rows in set (0.00 sec)
感覺就是為了排版方便
FLOAT、DOUBLE和DECIMAL的長度指的是全部數位(包括小數點後面的),例如DECIMAL(4,1)指的是全部位數為4,小數點後1位,如果插入1234,則查詢的數據是999.9。過程如下
1.mysql> alter table test add realnum decimal(4,1);
2.Query OK, 2 rows affected (0.03 sec)
3.Records: 2 Duplicates: 0 Warnings: 0
4.
5.mysql> insert into test(id,realnum) values(2,1234);
6.Query OK, 1 row affected, 1 warning (0.05 sec)
7.
8.mysql> select * from test;
9.+------+---------+
10.| id | realnum |
11.+------+---------+
12.| 001 | NULL |
13.| 1234 | NULL |
14.| 002 | 999.9 |
15.+------+---------+
16.3 rows in set (0.02 sec)
表列出了各種數值類型以及它們的允許范圍和占用的內存空間。
類型 大小 范圍(有符號) 范圍(無符號) 用途
TINYINT 1 字節 (-128,127) (0,255) 小整數值
SMALLINT 2 字節 (-32 768,32 767) (0,65 535) 大整數值
MEDIUMINT 3 字節 (-8 388 608,8 388 607) (0,16 777 215) 大整數值
INT或INTEGER 4 字節 (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整數值
BIGINT 8 字節 (-9 233 372 036 854 775 808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 極大整數值
FLOAT 4 字節 (-3.402 823 466 E+38,1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) 0,(1.175 494 351 E-38,3.402 823 466 E+38) 單精度
浮點數值
DOUBLE 8 字節 (1.797 693 134 862 315 7 E+308,2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 雙精度
浮點數值
DECIMAL 對DECIMAL(M,D) ,如果M>D,為M+2否則為D+2 依賴於M和D的值 依賴於M和D的值 小數值
INT 類型