mysql 整型 字元型 列舉型欄位操作
· BIT[(M)]
位欄位型別。M表示每個值的位數,範圍為從1到64。如果M被省略, 預設為1。
· TINYINT[(M)] [UNSIGNED] [ZEROFILL]
很小的整數。帶符號的範圍是-128到127。無符號的範圍是0到255。
· BOOL,BOOLEAN
是TINYINT(1)的同義詞。zero值被視為假。非zero值視為真。
在將來,將根據標準SQL引入完全布林型別的處理。
· SMALLINT[(M)] [UNSIGNED] [ZEROFILL]
小的整數。帶符號的範圍是-32768到32767。無符號的範圍是0到65535。
· MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]
中等大小的整數。帶符號的範圍是-8388608到8388607。無符號的範圍是0到16777215。
· INT[(M)] [UNSIGNED] [ZEROFILL]
普通大小的整數。帶符號的範圍是-2147483648到2147483647。無符號的範圍是0到4294967295。
· INTEGER[(M)] [UNSIGNED] [ZEROFILL]
這是INT的同義詞。
BIGINT[(M)] [UNSIGNED] [ZEROFILL]
大整數。帶符號的範圍是-9223372036854775808到9223372036854775807。無符號的範圍是0到18446744073709551615。
應清楚BIGINT列的下述內容:
o 使用帶符號的BIGINT或DOUBLE值進行所有演算法,因此除了位函式,不應使用大於9223372036854775807(63位)的無符號的大整數! 如果這樣做,結果中的最後幾位可能出錯,這是由於將BIGINT值轉換為DOUBLE進行四捨五入時造成的錯誤。
MySQL可以在以下情況下處理BIGINT:
§ 當使用整數在一個BIGINT列儲存大的無符號的值時。
§ 在MIN(col_name)或MAX(col_name)中,其中col_name指BIGINT列。
§ 使用操作符(+,-,*等等)並且兩個運算元均為整數時。
o 總是可以使用一個字串在BIGINT列中儲存嚴格整數值。在這種情況下,MySQL執行字串-數字轉換,其間不存在雙精度表示。
o 當兩個運算元均為整數值時,-、+和* 操作符使用BIGINT演算法。這說明如果乘兩個大整數(或來自返回整數的函式),當結果大於9223372036854775807時,會得到意想不到的結果。
· FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]
小(單精度)浮點數。允許的值是-3.402823466E+38到-1.175494351E-38、0和1.175494351E-38到3.402823466E+38。這些是理論限制,基於IEEE標準。實際的範圍根據硬體或作業系統的不同可能稍微小些。
M是小數縱位數,D是小數點後面的位數。如果M和D被省略,根據硬體允許的限制來儲存值。單精度浮點數精確到大約7位小數位。
如果指定UNSIGNED,不允許負值。
使用浮點數可能會遇到意想不到的問題,因為在MySQL中的所有計算用雙精度完成。
· DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]
普通大小(雙精度)浮點數。允許的值是-1.7976931348623157E+308到-2.2250738585072014E-308、0和2.2250738585072014E-308到 1.7976931348623157E+308。這些是理論限制,基於IEEE標準。實際的範圍根據硬體或作業系統的不同可能稍微小些。
M是小數總位數,D是小數點後面的位數。如果M和D被省略,根據硬體允許的限制來儲存值。雙精度浮點數精確到大約15位小數位。
如果指定UNSIGNED,不允許負值。
· DOUBLE PRECISION[(M,D)] [UNSIGNED] [ZEROFILL], REAL[(M,D)] [UNSIGNED] [ZEROFILL]
為DOUBLE的同義詞。除了:如果SQL伺服器模式包括REAL_AS_FLOAT選項,REAL是FLOAT的同義詞而不是DOUBLE的同義詞。
· FLOAT(p) [UNSIGNED] [ZEROFILL]
浮點數。p表示精度(以位數表示),但MySQL只使用該值來確定是否結果列的資料型別為FLOAT或DOUBLE。如果p為從0到24,資料型別變為沒有M或D值的FLOAT。如果p為從25到53,資料型別變為沒有M或D值的DOUBLE。結果列範圍與本節前面描述的單精度FLOAT或雙精度DOUBLE資料型別相同。
FLOAT(p)語法與ODBC相容。
· DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]
壓縮的“嚴格”定點數。M是小數位數(精度)的總數,D是小數點(標度)後面的位數。小數點和(負數)的‘-’符號不包括在M中。如果D是0,則值沒有小數點或分數部分。DECIMAL整數最大位數(M)為65。支援的十進位制數的最大位數(D)是30。如果D被省略, 預設是0。如果M被省略, 預設是10。
如果指定UNSIGNED,不允許負值。
所有DECIMAL列的基本計算(+,-,*,/)用65位精度完成。
· DEC[(M[,D])] [UNSIGNED] [ZEROFILL], NUMERIC[(M[,D])] [UNSIGNED] [ZEROFILL], FIXED[(M[,D])] [UNSIGNED] [ZEROFILL]
是DECIMAL的同義詞。FIXED同義詞適用於與其它伺服器的相容性。
11.1.2. 日期和時間型別概述
本節綜合討論了臨時列型別。
· DATE
日期。支援的範圍為'1000-01-01'到'9999-12-31'。MySQL以'YYYY-MM-DD'格式顯示DATE值,但允許使用字串或數字為DATE列分配值。
· DATETIME
日期和時間的組合。支援的範圍是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。MySQL以'YYYY-MM-DD HH:MM:SS'格式顯示DATETIME值,但允許使用字串或數字為DATETIME列分配值。
· TIMESTAMP[(M)]
時間戳。範圍是'1970-01-01 00:00:00'到2037年。
TIMESTAMP列用於INSERT或UPDATE操作時記錄日期和時間。如果你不分配一個值,表中的第一個TIMESTAMP列自動設定為最近操作的日期和時間。也可以通過分配一個NULL值,將TIMESTAMP列設定為當前的日期和時間。
TIMESTAMP值返回後顯示為'YYYY-MM-DD HH:MM:SS'格式的字串,顯示寬度固定為19個字元。如果想要獲得數字值,應在TIMESTAMP 列新增+0。
註釋:MySQL 4.1以前使用的TIMESTAMP格式在MySQL 5.1中不支援;關於舊格式的資訊參見MySQL 4.1 參考手冊。
· TIME
時間。範圍是'-838:59:59'到'838:59:59'。MySQL以'HH:MM:SS'格式顯示TIME值,但允許使用字串或數字為TIME列分配值。
· YEAR[(2|4)]
兩位或四位格式的年。預設是四位格式。在四位格式中,允許的值是1901到2155和0000。在兩位格式中,允許的值是70到69,表示從1970年到2069年。MySQL以YYYY 格式顯示YEAR值,但允許使用字串或數字為YEAR列分配值。
CHAR(M) 0-255
VARCHAR(M) 0-65,535
VARCHAR儲存時用一個位元組或兩個位元組長的字首+資料。如果VARCHAR列宣告的長度大於255,長度字首是兩個位元組。
TINYBLOB
最大長度為255(28–1)位元組的BLOB列。
VARCHAR儲存時用一個位元組或兩個位元組長的字首+資料。如果VARCHAR列宣告的長度大於255,長度字首是兩個位元組。
· BINARY(M)
BINARY型別類似於CHAR型別,但儲存二進位制位元組字串而不是非二進位制字串。
· VARBINARY(M)
VARBINARY型別類似於VARCHAR型別,但儲存二進位制位元組字串而不是非二進位制字串。
· TINYBLOB
最大長度為255(28–1)位元組的BLOB列。
· TINYTEXT
最大長度為255(28–1)字元的TEXT列。
· BLOB[(M)]
最大長度為65,535(216–1)位元組的BLOB列。
可以給出該型別的可選長度M。如果給出,則MySQL將列建立為最小的但足以容納M位元組長的值的BLOB型別。
· TEXT[(M)]
最大長度為65,535(216–1)字元的TEXT列。
可以給出可選長度M。則MySQL將列建立為最小的但足以容納M字元長的值的TEXT型別。
· MEDIUMBLOB
最大長度為16,777,215(224–1)位元組的BLOB列。
· MEDIUMTEXT
最大長度為16,777,215(224–1)字元的TEXT列。
· LONGBLOB
最大長度為4,294,967,295或4GB(232–1)位元組的BLOB列。LONGBLOB列的最大有效(允許的)長度取決於客戶端/伺服器協議中配置最大包大小和可用的記憶體。
· LONGTEXT
最大長度為4,294,967,295或4GB(232–1)字元的TEXT列。LONGTEXT列的最大有效(允許的)長度取決於客戶端/伺服器協議中配置最大包大小和可用的記憶體。
· ENUM('value1','value2',...)
列舉型別。只能有一個值的字串,從值列'value1','value2',...,NULL中或特殊 ''錯誤值中選出。ENUM列最多可以有65,535個截然不同的值。ENUM值在內部用整數表示。
· SET('value1','value2',...)
一個設定。字串物件可以有零個或多個值,每個值必須來自列值'value1','value2',...SET列最多可以有64個成員。SET值在內部用整數表示。