天天看點

MYSQL資料類型與存儲空間

類型

存儲空間(位元組)

最小值(有符号)

最小值(無符号)

最大值(有符号)

最大值(無符号)

TINYINT

1

-128

127

255

SMALLINT

2

-32768

32767

65535

MEDIUMINT

3

-8388608

8388607

16777215

INT

4

-2147483648

2147483647

4294967295

BIGINT

8

-2的63次幂

2的63次幂-1

2的64次幂-1

bit類型存儲二進制的值,bit(M)可以存儲M個二進制的值,M的範圍1-64。

可以使用b'value'這種文法存值,value是 0或者1,例如 <code>b'111'</code> and <code>b'10000000' 分别代表7和128。</code>

如果長度不夠則左側以0填充,例如 bit(6),  值為b‘101’,則實際為000101。

SELECT bin(Money_), oct(Money_) FROM db_test;

MYSQL資料類型與存儲空間
MYSQL資料類型與存儲空間

DATE,DATETIME,TIMESTAMP

date日期類型 ,格式YYYY-MM-DD, 存儲範圍<code>'1000-01-01'</code> to <code>'9999-12-31'。</code>

datetime時間類型,格式YYYY-MM-DD HH:MM:SS,存儲範圍  <code>'1000-01-01 00:00:00'</code> to <code>'9999-12-31 23:59:59'。</code>

timestamp時間類型,格式,YYYY-MM-DD HH:MM:SS,存儲範圍  <code>'1970-01-01 00:00:01'</code> UTC to <code>'2038-01-19 03:14:07'</code> UTC。

timestamp再存取值時,會把時間轉換為UTC世界标準時間進行存取,比如mysql伺服器是GTM+8的時區,那麼存到mysql中會把目前時間減掉8小時,讀取的時候在把時間加上8小時,就是你要的值。但是如果你存儲和讀取時時區不一緻,就會導緻時間不準确。

TIME

MySQL以'HH:MM:SS'格式(或大小時值的'HHH:MM:SS'格式)檢索并顯示TIME值。 TIME值的範圍可以從'-838:59:59'到'838:59:59'。 小時部分可能非常大,因為TIME類型不僅可以用來表示一天中的時間(必須小于24小時),還可以用于表示兩個事件之間的經過時間或時間間隔(可能遠大于 24小時,甚至是負面的)。

YEAR

占用一個位元組,8位。  範圍是<code>1901</code> to <code>2155, 底層存儲的是與2155-1901=254,一個位元組可以存儲,底層存儲的是與1901的內插補點。</code>

MYSQL資料類型與存儲空間