1. 程式人生 > >mysql 整型 字元型 列舉型欄位操作

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值在內部用整數表示。