位置:首頁 > 數據庫 > MySQL教學 > MySQL數據類型

MySQL數據類型

正確地定義的表中的字段在數據庫的整體優化是非常重要的。我們應該隻使用真正需要使用類型和字段的大小; 如果知道隻使用2個字符,就不使用10個字符寬定義一個字段。這些類型的字段(或列),也被稱為數據類型,數據存儲這些字段之中。

MySQL使用許多不同的數據類型,總體上分為三類:數字,日期,時間和字符串類型。

數字數據類型

MySQL使用所有標準的ANSI SQL數字數據類型,所以,如果在學習MySQL之前,有接觸過其它不同的數據庫係統,那麼這些定義看起來很熟悉。下麵列出了常見的數字數據類型及其說明:

  • INT - 正常大小的整數,可以帶符號。如果是有符號的,它允許的範圍是從-2147483648到2147483647。如果是無符號,允許的範圍是從0到4294967295。 可以指定多達11位的寬度。

  • TINYINT - 一個非常小的整數,可以帶符號。如果是有符號,它允許的範圍是從-128到127。如果是無符號,允許的範圍是從0到255,可以指定多達4位數的寬度。

  • SMALLINT - 一個小的整數,可以帶符號。如果有符號,允許範圍為-32768至32767。如果無符號,允許的範圍是從0到65535,可以指定最多5位的寬度。

  • MEDIUMINT - 一個中等大小的整數,可以帶符號。如果有符號,允許範圍為-8388608至8388607。 如果無符號,允許的範圍是從0到16777215,可以指定最多9位的寬度。

  • BIGINT - 一個大的整數,可以帶符號。如果有符號,允許範圍為-9223372036854775808到9223372036854775807。如果無符號,允許的範圍是從0到18446744073709551615. 可以指定最多20位的寬度。

  • FLOAT(M,D) - 不能使用無符號的浮點數字。可以定義顯示長度(M)和小數位數(D)。這不是必需的,並且默認為10,2。其中2是小數的位數,10是數字(包括小數)的總數。小數精度可以到24個浮點。

  • DOUBLE(M,D) - 不能使用無符號的雙精度浮點數。可以定義顯示長度(M)和小數位數(D)。 這不是必需的,默認為16,4,其中4是小數的位數。小數精度可以達到53位的DOUBLE。 REAL是DOUBLE同義詞。

  • DECIMAL(M,D) - 非壓縮浮點數不能是無符號的。在解包小數,每個小數對應於一個字節。定義顯示長度(M)和小數(D)的數量是必需的。 NUMERIC是DECIMAL的同義詞。

日期和時間類型

MySQL的日期和時間數據類型包括:

  • DATE - 以YYYY-MM-DD格式的日期,在1000-01-01和9999-12-31之間。 例如,1973年12月30日將被存儲為1973-12-30。

  • DATETIME - 日期和時間組合以YYYY-MM-DD HH:MM:SS格式,在1000-01-01 00:00:00 到9999-12-31 23:59:59之間。例如,1973年12月30日下午3:30,會被存儲為1973-12-30 15:30:00。

  • TIMESTAMP - 1970年1月1日午夜之間的時間戳,到2037的某個時候。這看起來像前麵的DATETIME格式,無需隻是數字之間的連字符; 1973年12月30日下午3點30分將被存儲為19731230153000(YYYYMMDDHHMMSS)。

  • TIME - 存儲時間在HH:MM:SS格式。

  • YEAR(M) - 以2位或4位數字格式來存儲年份。如果長度指定為2(例如YEAR(2)),年份就可以為1970至2069(70〜69)。如果長度指定為4,年份範圍是1901-2155,默認長度為4。

字符串類型

雖然數字和日期類型比較有意思,但存儲大多數數據都可能是字符串格式。 下麵列出了在MySQL中常見的字符串數據類型。

  • CHAR(M) - 固定長度的字符串是以長度為1到255之間個字符長度(例如:CHAR(5)),存儲右空格填充到指定的長度。 限定長度不是必需的,它會默認為1。

  • VARCHAR(M) - 可變長度的字符串是以長度為1到255之間字符數(高版本的MySQL超過255); 例如: VARCHAR(25). 創建VARCHAR類型字段時,必須定義長度。

  • BLOB 或 TEXT - 字段的最大長度是65535個字符。 BLOB是“二進製大對象”,並用來存儲大的二進製數據,如圖像或其他類型的文件。定義為TEXT文本字段還持有大量的數據; 兩者之間的區彆是,排序和比較上存儲的數據,BLOB大小寫敏感,而TEXT字段不區分大小寫。不用指定BLOB或TEXT的長度。

  • TINYBLOB 或 TINYTEXT - BLOB或TEXT列用255個字符的最大長度。不指定TINYBLOB或TINYTEXT的長度。

  • MEDIUMBLOB 或 MEDIUMTEXT - BLOB或TEXT列具有16777215字符的最大長度。不指定MEDIUMBLOB或MEDIUMTEXT的長度。

  • LONGBLOB 或 LONGTEXT -  BLOB或TEXT列具有4294967295字符的最大長度。不指定LONGBLOB或LONGTEXT的長度。

  • ENUM - 枚舉,這是一個奇特的術語列表。當定義一個ENUM,要創建它的值的列表,這些是必須用於選擇的項(也可以是NULL)。例如,如果想要字段包含“A”或“B”或“C”,那麼可以定義為ENUM為 ENUM(“A”,“B”,“C”)也隻有這些值(或NULL)才能用來填充這個字段。