標籤:
1個位元組= 8位 tinyint 為一個位元組 2的8次方= 256 所以最多儲存到256
日期和時間資料類型
| MySQL資料類型 |
含義 |
| date |
3位元組,日期,格式:2014-09-18 |
| time |
3位元組,時間,格式:08:42:30 |
| datetime |
8位元組,日期時間,格式:2014-09-18 08:42:30 |
| timestamp |
4位元組,自動儲存記錄修改的時間 |
| year |
1位元組,年份 |
數值資料類型
整型
| MySQL資料類型 |
含義(有符號) |
| tinyint |
1位元組,範圍(-128~127) |
| smallint |
2位元組,範圍(-32768~32767) |
| mediumint |
3位元組,範圍(-8388608~8388607) |
| int |
4位元組,範圍(-2147483648~2147483647) |
| bigint |
8位元組,範圍(+-9.22*10的18次方) |
上面定義的都是有符號的,當然了,也可以加上unsigned關鍵字,定義成無符號的類型,那麼對應的取值範圍就要翻翻了,比如:
tinyint unsigned的取值範圍為0~255。
int(M) 在 integer 資料類型中,M 表示最大顯示寬度。在 int(M) 中,M 的值跟 int(M) 所佔多少儲存空間並無任何關係。和數字位元也無關係 int(3)、int(4)、int(8) 在磁碟上都是佔用 4 btyes 的儲存空間。
浮點型
| MySQL資料類型 |
含義 |
| float(m, d) |
4位元組,單精確度浮點型,m總個數,d小數位 |
| double(m, d) |
8位元組,雙精確度浮點型,m總個數,d小數位 |
| decimal(m, d) |
decimal是儲存為字串的浮點數 |
我在MySQL中建立了一個表,有一列為float(5, 3);做了以下實驗:
1.插入123.45678,最後查詢得到的結果為99.999;
2.插入123.456,最後查詢結果為99.999;
3.插入12.34567,最後查詢結果為12.346;
所以,在使用浮點型的時候,還是要注意陷阱的,要以插入資料庫中的實際結果為準。
字串資料型別
| MySQL資料類型 |
含義 |
| char(n) |
固定長度,最多255個字元 |
| varchar(n) |
可變長度,最多65535個字元 |
| tinytext |
可變長度,最多255個字元 |
| text |
可變長度,最多65535個字元 |
| mediumtext |
可變長度,最多2的24次方-1個字元 |
| longtext |
可變長度,最多2的32次方-1個字元 |
1.char(n)和varchar(n)中括弧中n代表字元的個數,並不代表位元組個數,所以當使用了中文的時候(UTF8)意味著可以插入m個中文,但是實際會佔用m*3個位元組。
2.同時char和varchar最大的區別就在於char不管實際value都會佔用n個字元的空間,而varchar只會佔用實際字元應該佔用的空間+1,並且實際空間+1<=n。
3.超過char和varchar的n設定後,字串會被截斷。
4.char的上限為255位元組,varchar的上限65535位元組,text的上限為65535。
5.char在儲存的時候會截斷尾部的空格,varchar和text不會。
6.varchar會使用1-3個位元組來儲存長度,text不會。
http://www.jb51.net/article/55853.htm
mysql資料類型長度