資料類型是定義列中可以存儲什麼資料以及該資料實際怎樣存儲的基本規則。資料類型用于以下目的。
- 資料類型允許限制可存儲在列中的資料。例如,數值資料類型列隻能接受數值。
- 資料類型允許在内部更有效地存儲資料。可以用一種比文本串更簡潔的格式存儲數值和日期時間值。
- 資料類型允許變換排序順序。如果所有資料都作為串處理,則1位于10之前,而10又位于2之前(串以字典順序排序,從左邊開始比較,一次一個字元)。作為數值資料類型,數值才能正确排序。
串資料類型
有兩種基本的串類型,分别為定長串和變長串:
- 定長串接受長度固定的字元串,其長度是在建立表時指定的,
- 變長串存儲可變長度的文本。有些變長資料類型具有最大的定長,而有些則是完全變長的,不管是哪種,隻有指定的資料得到儲存(額外的資料不儲存)TEXT屬于變長串類型。
- MySQL處理定長列遠比處理變長列快得多。
- MySQL不允許對變長列(或一個列的可變部分)進行索引。這也會極大地影響性能。
數 據 類 型 | 說 明 |
CHAR | 1~255個字元的定長串。它的長度必須在建立時指定,否則MySQL假定為CHAR(1) |
ENUM | 接受最多64 K個串組成的一個預定義集合的某個串 |
LONGTEXT | 與TEXT相同,但最大長度為4 GB |
MEDIUMTEXT | 與TEXT相同,但最大長度為16 K |
SET | 接受最多64個串組成的一個預定義集合的零個或多個串 |
TEXT | 最大長度為64 K的變長文本 |
TINYTEXT | 與TEXT相同,但最大長度為255位元組 |
VARCHAR | 長度可變,最多不超過255位元組。如果在建立時指定為VARCHAR(n),則可存儲0到n個字元的變長串(其中n≤255) |
- 不管使用何種形式的串資料類型,串值都必須括在引号内(通常單引号更好)。
數值資料類型
- 有符号或無符号 所有數值資料類型(除BIT和BOOLEAN外)都可以有符号或無符号。有符号數值列可以存儲正或負的數值,無符号數值列隻能存儲正數。預設情況為有符号,但如果你知道自己不需要存儲負值,可以使用UNSIGNED關鍵字,這樣做将允許你存儲兩倍大小的值。
| |
BIT | 位字段,1~64位。(在MySQL 5之前,BIT在功能上等價于TINYINT |
BIGINT | 整數值,支援9223372036854775808~9223372036854775807(如果是UNSIGNED,為0~18446744073709551615)的數 |
BOOLEAN(或BOOL) | 布爾标志,或者為0或者為1,主要用于開/關(on/off)标志 |
DECIMAL(或DEC) | 精度可變的浮點值 |
DOUBLE | 雙精度浮點值 |
FLOAT | 單精度浮點值 |
INT(或INTEGER) | 整數值,支援2147483648~2147483647(如果是UNSIGNED,為0~4294967295)的數 |
MEDIUMINT | 整數值,支援-8388608~8388607(如果是UNSIGNED,為0~16777215)的數 |
REAL | 4位元組的浮點值 |
SMALLINT | 整數值,支援32768~32767(如果是UNSIGNED,為0~65535)的數 |
TINYINT | 整數值,支援128~127(如果為UNSIGNED,為0~255)的數 |
- 不使用引号 與串不一樣,數值不應該括在引号内。
- 存儲貨币資料類型 MySQL中沒有專門存儲貨币的資料類型,一般情況下使用DECIMAL(8, 2)。
日期和時間資料類型
資料類型 | |
DATE | 表示1000-01-01~9999-12-31的日期,格式為YYYY-MM-DD |
DATETIME | DATE和TIME的組合 |
TIMESTAMP | 功能和DATETIME相同(但範圍較小) |
TIME | 格式為HH:MM:SS |
YEAR | 用2位數字表示,範圍是70(1970年)~69(2069年),用4位數字表示,範圍是1901年~2155年 |
二進制資料類型
- 二進制資料類型可存儲任何資料(甚至包括二進制資訊),如圖像、多媒體、字處理文檔等。
| |
BLOB | Blob最大長度為64 KB |
MEDIUMBLOB | Blob最大長度為16 MB |
LONGBLOB | Blob最大長度為4 GB |
TINYBLOB | Blob最大長度為255位元組 |