簡介
MySQL支持大量的列類型,它能夠被分爲3類:數字類型、日期和時間類型以及字符串(字符)類型。服務器
數值類型
下列用於描述的代碼字母中:函數
M表示最大的顯示尺寸。最大的合法的顯示尺寸是 255 。(注意是顯示尺寸是存儲數字的位數,不是存儲空間大小,數值列建立時,MySQL將爲存儲數據分配合適大小的空間,從1個字節到8個字節不等)spa
D適用於浮點類型而且指出跟隨在十進制小數點後的數的位數。最大可能的值是30,可是應該不大於M-2。code
方括號(「[」和「]」)指出可選的類型修飾符的部分。對象
注意,若是你指定一個ZEROFILL,MySQL將爲該列自動地增長UNSIGNED屬性。UNSIGNED 表示向服務器指明該列存儲的數據>=0。blog
tinyint
格式:TINYINT[(M)] [UNSIGNED] [ZEROFILL]排序
佔1字節,一個很小的整數。有符號的範圍是-128到127,無符號的範圍是0到255。ci
smallint
格式:SMALLINT[(M)] [UNSIGNED] [ZEROFILL]文檔
佔2字節,一個小整數。有符號的範圍是-32768到32767,無符號的範圍是0到65535。字符串
mediumint
格式:MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]
佔3字節,一箇中等大小整數。有符號的範圍是-8388608到8388607,無符號的範圍是0到16777215。
int
格式:INT[(M)] [UNSIGNED] [ZEROFILL]
佔4字節,一個正常大小整數。有符號的範圍是-2147483648到2147483647,無符號的範圍是0到4294967295。
同義詞:integer。
bigint
格式:BIGINT[(M)] [UNSIGNED] [ZEROFILL]
佔8字節,一個大整數。有符號的範圍是-9223372036854775808到9223372036854775807,無符號的範圍是0到18446744073709551615。
float
格式:FLOAT[(M,D)] [ZEROFILL]
佔4字節,一個小(單精密)浮點數字。不能無符號。容許的值是-3.402823466E+38到-1.175494351E-38,0 和1.175494351E-38到3.402823466E+38。
沒有參數的FLOAT或有一個參數的FLOAT(X)(X<=24)的表示一個單精密浮點數字。
double
格式:DOUBLE[(M,D)] [ZEROFILL]
佔8字節,一個正常大小(雙精密)浮點數字。不能無符號。容許的值是-1.7976931348623157E+308到-2.2250738585072014E-30八、 0和2.2250738585072014E-308到1.7976931348623157E+308。
沒有一個參數的DOUBLE或有一個參數的 DOUBLE(X)(25 < = X < = 53)表明一個雙精密浮點數字。
同義詞:double precision、real
decimal
格式:DECIMAL[(M[,D])] [ZEROFILL]
一個未壓縮(unpack)的浮點數字。不能無符號。行爲如同一個CHAR列:「未壓縮」意味着數字做爲一個字符串被存儲,值的每一位使用一個字符。小數點,而且對於負數,「-」符號不在M中計算。若是D是0,值將沒有小數點或小數部分。
DECIMAL值的最大範圍與DOUBLE相同,可是對一個給定的DECIMAL列,實際的範圍能夠經過M和D的選擇被限制。若是D被省略,它被設置爲0。若是M被省掉,它被設置爲10。注意,在MySQL3.22 裏,M參數包括符號和小數點。
同義詞:numeric
注意:
(1)全部算術運算中用有符號的BIGINT或DOUBLE值完成,所以你不該該使用大於9223372036854775807(63位)的有符號大整數,除了位函數!
(2)當兩個參數是INTEGER值時,-、+ 和 * 將使用BIGINT運算!這意味着若是你乘2個大整數(或來自於返回整數的函數),若是結果大於9223372036854775807,你會獲得一個錯誤的結果。
(3)一個浮點數字,不能是無符號的,對一個單精度浮點數,其精度能夠是<=24,對一個雙精度浮點數,是在25和53之間。
日期時間類型
date
格式:YYYY-MM-DD
佔3字節,表示一個日期。支持的範圍是'1000-01-01'到'9999-12-31',MySQL以'YYYY-MM-DD'格式來顯示DATE值,可是容許使用字符串或數字把值賦給DATE列。
time
格式:HHH:MI:SS
佔3字節,表示一個時間。範圍是'-838:59:59'到'838:59:59'。MySQL以'HHH:MI:SS'格式來顯示TIME值,可是容許你使用字符串或數字把值賦給TIME列。
year
格式:YYYY
YEAR[(2|4)]
佔1個字節,一個2或4位數字格式的年(默認是4位)。容許的值是1901到2155,和0000(4位年格式),若是你使用2位,則容許的值是1970-2069( 70-69)。MySQL以YYYY格式來顯示YEAR值,可是容許你把使用字符串或數字值賦給YEAR列。
datetime
格式:YYYY-MM-DD HH:MI:SS
佔8個字節,一個日期和時間組合。支持的範圍是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。MySQL以'YYYY-MM-DD HH:MI:SS'格式來顯示DATETIME值,可是容許你使用字符串或數字把值賦給DATETIME的列。
timestamp
格式:TIMESTAMP[(M)]
佔4個字節,一個時間戳記。範圍是'1970-01-01 00:00:00'到2037年的某時。MySQL以YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD或YYMMDD 格式來顯示TIMESTAMP值,取決因而否M是14(默認值)、十二、8或6,可是容許你使用字符串或數字把值賦給TIMESTAMP列。
一個TIMESTAMP列對於記錄一個INSERT或UPDATE操做的日期和時間是有用的,由於若是你不本身給它賦值,它自動地被設置爲最近操做的日期和時間。你以能夠經過賦給它一個NULL值設置它爲當前的日期和時間。
字符串類型
char
格式:CHAR(M) [BINARY]
一個定長字符串,當值被存儲時,老是是用空格填滿右邊到指定的長度。M的範圍是1~255個字節。當值被檢索時,空格尾部被刪除。
CHAR值根據缺省字符集以不區分大小寫的方式排序和比較,除非給出BINARY關鍵詞。CHAR是CHARACTER的一個縮寫。
varchar
格式:VARCHAR(M) [BINARY]
一個可變長字符串。當值被存儲時,尾部的空格被刪除。M的範圍是1~65535個字節。
VARCHAR值根據缺省字符集以不區分大小寫的方式排序和比較,除非給出BINARY關鍵詞值。 VARCHAR是CHARACTER VARYING一個縮寫。
tinytext
0-255字節,短文本字符串。
text
0-65535字節,長文本數據。
mediumtext
0-16777215字節,中等長度文本數據。通常存儲文檔使用。
longtext
0-4294967295字節,極大文本數據。通常存儲文檔使用。
tinyblob
0-255字節,不超過 255 個字符的二進制字符串。
blob
0-65535字節,二進制形式的長文本數據。
mediumblob
0-16777215字節,二進制形式的中等長度文本數據。
longblob
0-4294967295字節,二進制形式的極大文本數據。
其餘類型
字段的值只能在給定範圍中選擇,如單選框,多選框
enum 單選,只能在給定的範圍內選一個值,如性別 sex 男male/女female。
set 多選,在給定的範圍內能夠選擇一個或一個以上的值(愛好1,愛好2,愛好3...)。
enum
ENUM('value1','value2',...)
枚舉。一個僅有一個值的字符串對象,這個值式選自與值列表'value1'、'value2', ...,或NULL。一個ENUM最多能有65535不一樣的值。
CREATE TABLE shirts ( name VARCHAR(40), size ENUM('x-small', 'small', 'medium', 'large', 'x-large') ); INSERT INTO shirts (name, size) VALUES ('dress shirt','large'), ('t-shirt','medium'),('polo shirt','small');
set
SET('value1','value2',...)
一個集合。能有零個或多個值的一個字符串對象,其中每個必須從值列表'value1', 'value2', ...選出。一個SET最多能有64個成員。
CREATE TABLE myset (col SET('a', 'b', 'c', 'd')); INSERT INTO myset (col) VALUES ('a,d'), ('d,a'), ('a,d,a'), ('a,d,d'), ('d,a,d');