MySQL中的列類型有三種:數值類、字符串類和日期/時間類。
從大類來看列類型和數值類型一樣,都是只有三種。但每種列類型都還可細分。
下面對各種列類型進行詳細介紹。
數值類的數據列類型
字段類型:
TINYINT:1字節非常小的正整數,帶符號:-128~127,不帶符號:0~255
SMALLINT:2字節小整數,帶符號:-32768~32767,不帶符號:0~65535
MEDIUMINT:3字節中等大小的整數,帶符號:-8388608~8388607,不帶符號:0~16777215
INT:4字節標准整數,帶符號:-2147483648~2147483647,不帶符號:0~4294967295
BIGINT:8字節大整數,帶符號:-9223372036854775808~9233372036854775807,不帶符號:0~18446744073709551615
FLOAT:4字節單精度浮點數,最小非零值:+-1.175494351E-38,最大非零值:+-3.402823466E+38
DOUBLE:8字節雙精度浮點數,最小非零值:+-2.2250738585072014E-308,最大非零值:+-1.7976931348623157E+308
DECIMAL:M+2字節 以字符串形式表示的浮點數,它的取值范圍可變,由M和D的值決定。
注意:帶符號的意思就是可以用負號,可以通過設置UNSIGNED來改變。
聲明整型數據列時,我們可以為它指定個顯示寬度M(1~255),如INT(5),指定顯示寬度為5個字符,如果沒有給它指定顯示寬度,MySQL會為它指定一個默認值。顯示寬度只用於顯示,並不能限制取值范圍和占用空間,如:INT(3)還是會占用4個字節的存儲空間。
所以,這個長度只是顯示的長度,用於顯示數據用的。沒有其他任何作用。
給字段指定ZEROFILL是補全的意思,這樣上面設置的INT(3)顯示長度就起作用了,如1就顯示為001,另外它自動幫我們設置成UNSIGNED屬性,也就是不能為負。
主鍵:給字段設置主鍵,主要是標示該字段的唯一性,說明這個字段的內容不能重復,如果是兩個字段或者多個子都都設置主鍵則表示這些字段組合起來的數據是惟一的,是針對所有的字段的唯一性。
日期,時間型數據列類型
DATE 1000-01-01~9999-12-31 3字節(MySQL3.23版以前是4字節 ) 0000-00-00 TIME -838:59:59~838:59:59 3字節 00:00:00 DATETIME 1000-01-01 00:00:00~9999-12-31 23:59:59 8字節 0000-00-00 00:00:00 TIMESTAMP 19700101000000~2037年的某個時刻 4字節 00000000000000 YEAR YEAR(4):1901~2155 YEAR(2):1970~2069 1字節 0000
MySQL總是把日期和日期裡的年份放在最前面,按年月日的順序顯示。
DATE、TIME、DATATIME數據列類型
DATE、TIME和DATATIME類型分別存放日期值、時間值、日期和時間值的組合。它們的格式分別是“CCYY-MM-DD”、“hh:mm:ss”、“CCYY-MM-DD hh:mm:ss”。
DATATIME裡的時間值和TIME值是有區別的,DATATIME裡的時間值代表的是幾點幾分,TIME值代表的是所花費的時間。當向TIME數據列插值時,需用時間的完整寫法,如12分30秒要寫成“00:12:30”。
TIMESTAMP數據列類型
TIMESTAMP數據列的格式是CCYYMMDDhhmmss,取值范圍從19700101000000開始,即1970年1月1號,最大到2037年。它的特點是能把數據行的創建或修改時間記錄下來:
如果把一個NULL值插入TIMESTAMP列,這個數據列就將自動取值為當前的日期和時間。
在創建和修改數據行時,如果沒有明確對TIMESTAMP數據列進行賦值,則它就會自動取值為當前的日期和時間。如果行中有多個TIMESTAMP列,只有第一個會自動取值。
如果對TIMESTAMP設置一個確定的日期和時間值,則會使TIMESTAMP的自動取值功能失效。
TIMESTAMP默認的列寬是14,可指定列寬,以改變顯示效果。但不論你指定的列寬如何,MySQL都是以4字節來存儲TIMESTAMP值,也總是以14位精度來計算。
如果需要把創建時間和最近一次修改時間同時記錄下來,可以用兩個時間戳來記錄,一個記錄創建時間,一個記錄修改時間。不過需記住兩件事,一是要把記錄修改時間的TIMESTAMP數據列放在最前面,這樣才會自動取值;二是創建一條新記錄時,要用now()函數來初始化創建時間TIMESTAMP數據列,這樣,該TIMESTAMP數據列就不會再變化。
YEAR
YEAR是一種單字節的數據列類型,YEAR(4)的取值范圍是1901~2155,YEAR(2)的取值范圍是1970~2069,但只顯示最後兩位數。MySQL能自動把兩位數字年份轉換成四位數字的年份,如97和14分被轉換成1997和2014。轉換規則是這樣的:
年份值00~69將被轉換成2000~2069;
年份值70~99將被轉換成1970~1999。
00被轉換成0000,而不是2000。因為數值00也就是0,而0值是YEAR的一個合法取值。 BLOB和TEXT
BLOB是二進制字符串,TEXT是非二進制字符串。兩者都可存放大容量的信息。
首頁 1 2 末頁