mysql 整型 字元型 列舉型字段操作

2021-06-22 15:40:38 字數 4832 閱讀 3071

· 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'到2023年。

timestamp列用於insert或update操作時記錄日期和時間。如果你不分配乙個值,表中的第乙個timestamp列自動設定為最近操作的日期和時間。也可以通過分配乙個null值,將timestamp列設定為當前的日期和時間。

timestamp值返回後顯示為'yyyy-mm-dd hh:mm:ss'格式的字串,顯示寬度固定為19個字元。如果想要獲得數字值,應在timestamp 列新增+0。

· time

時間。範圍是'-838:59:59'到'838:59:59'。mysql以'hh:mm:ss'格式顯示time值,但允許使用字串或數字為time列分配值。

· year[(2|4)]

兩位或四位格式的年。預設是四位格式。在四位格式中,允許的值是1901到2155和0000。在兩位格式中,允許的值是70到69,表示從2023年到2023年。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值在內部用整數表示。

整型 字元型和浮點型

1.整型資料型別 c定義了5種整型資料型別。整型資料型別表 序號型別名稱 說明位元組數 取值範圍 1signed char 有符號的單位元組整數型別 1 128 127 2short int 短整型2 32768 32767 3int整型4 2147438648 2147438647 4long i...

C語言基礎 整型 字元型和浮點型

1.整型資料型別 c定義了5種整型資料型別。整型資料型別表 序號型別名稱 說明位元組數 取值範圍 1signed char 有符號的單位元組整數型別 1 128 127 2short int 短整型2 32768 32767 3int整型4 2147438648 2147438647 4long i...

mysql 邏輯型字段 MySQL 字段約束

字段約束 mysql的字段約束共四種 約束名關鍵字 描述主鍵約束 primary key 字段值唯一,且不能為null 非空約束 not null 字段值不能為null 唯一約束 unique 字段值唯一,但可以為null 外來鍵約束 foreign key 保持關聯資料的邏輯性 關於主鍵約束 主鍵...