MySQL學習之資料類型

來源:互聯網
上載者:User

MySQL學習之資料類型

一、資料類型

1.數實值型別    -- TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT、 DECIMAL
2.時間類型    -- DATE、DATETIME、TIMESTAMP
3.字串類型 – CHAR、VARCHAR、TEXT
4.特有類型    -- ENUM、SET
字串區分大小寫  --  VARBINARY

資料類型

類型分類

表達的範圍

儲存需求

TINYINT[(M)]    [UNSIGNED] [ZEROFILL]

數值整型

 -128到127              或 0到255

1個位元組

SMALLINT[(M)]    [UNSIGNED] [ZEROFILL]

-32768到32767          或 0到65535

2個位元組

MEDIUMINT[(M)]  [UNSIGNED] [ZEROFILL]

-8388608到8388607      或 0到16777215

3個位元組

INT[(M)]        [UNSIGNED] [ZEROFILL]

-2147483648到2147483647 或 0到4294967295

4個位元組

BIGINT[(M)]      [UNSIGNED] [ZEROFILL]

-9223372036854775808到9223372036854775807  或 0到18446744073709551615

8個位元組

DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]

數值混合型

整數最大位元(M)為65,小數位元最大(D)為30

變長

DATE

日期類型

YYYY-MM-DD 精確到天

3個位元組

DATETIME

YYYY-MM-DD HH:MM:SS(1001年到9999年的範圍)

8個位元組

TIMESTAMP

YYYY-MM-DD HH:MM:SS(1970年到2037年的範圍)

4個位元組

ENUM

枚舉類型

1到65535個中繼資料

1個位元組或2個位元組

SET

集合類型

1到64個中繼資料

1,2,3,4或8個位元組

CHAR(M)

字串類型

0(建議CHAR(1)外,超過此長度的統一用VARCHAR(M)替代)

M*N個位元組,其中N大小由字元集編碼,以及是否為中文還是字母數字等有關係

VARCHAR(M)

0個字元

TEXT

64K個位元組

所有變長字串全部使用 VARCHAR 類型,類似於狀態,有限類別的欄位,也使用可以比較明顯表示出實際意義的字串,而不應該使用INT之類的數字來代替

固定長度的字串使用 CHAR 類型,所有單個字元的全部使用 CHAR 類型,而不應該使用VARCHAR 類型

當字元數量可能超過 20000 個的時候,可以使用 TEXT 類型來存放字元類資料。所有使用 TEXT 類型的欄位必須和原表進行分拆,與原表主鍵單獨組成另外一個表進行存放;

需要精確到時間(年月日時分秒)的欄位可以使用DATETIME 或TIMESTAMP,但請注意各自能表達的範圍,以及是否需要用到TIMESTAMP的特性,盡量使用TIMESTAMP類型替代DATETIME以減少資料存放區空間的佔用

只需要精確到天的欄位全部使用 DATE 類型,而不應該使用 TIMESTAMP或DATETIME  自增序列特性的欄位只能使用 INT 或者 BIGINT,必須明確標識為無符號類型 (關鍵詞:UNSIGNED),除非確實會出現負數,僅當該欄位的數值會超過42億,才使用 BIGINT 類型,並且自增欄位必須作為主鍵或主鍵的一部分

本文永久更新連結地址:

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.