1.1 整數型別
tinyint(8) ,smallint(16) , mediumint(24) , int(32) , bigint(64) ,儲存範圍從-2(n-1)次方到2(n-1)次方-1,其中n是儲存的位數
整數unsigned表示正整數,不允許為負數取值範圍為0-255,比有符號整數(-128-127)儲存要大。
整數指定寬度,在大多應用中是沒有意義的,不會限制範圍,也就是說int(1)和int(20)在儲存和計算上面是沒有區別的。
1.2 實數型別
實數是帶小數點的數字,float(4位元組) ,double(8位元組), decimal(指定),盡量只在小數進行精度計算的時候使用decimal,資料量比較大的時候可以使用bigint儲存(將小數字放大後儲存),decimal計算代價高的為題可以得到解決。
1.3 字串型別
varchar(不定長), char(定長),varchar儲存時需要使用1-2個額外位元組儲存長度(超過255需要2個位元組),char定長不需要額外的字元記錄長度,適合定長的字串,不足的位用空串填充,對於定長字串char比varcahr儲存更效率。
在innodb引擎上面的,varchar和char儲存字串char會把後面的空格去掉。是否擷取取決於資料庫引擎,處理在服務層處理的。
類似的型別還有binary和varbinary,他們儲存的是二進位制字串,二進位制字串儲存的是位元組碼,不是字元。填充也不同,binary採用\0(零位元組)填充。
binary和varbinary適用於儲存二進位制資料,並且位元組碼進行比較的時候,binary按每個位元組比較,根據位元組的數值比較,比字串比較要快。
1.4 blob和text型別
分別分為2類:
字串儲存:tinytext, smalltext, text, mediumtext, longtext。
二進位制儲存:tinyblob, smallblob, blob, mediumblob, longblob。
innodb在blob和text值太大的時候回使用外部儲存,每個值需要1-4個位元組來儲存指標。
1.5日期和時間型別
datetime:儲存從1001-2023年的時間,精確到秒,與時區無關,整數方式儲存,使用八個位元組的儲存空間,格式yyyymmddhhmmss。
儲存毫秒級別的日期可以使用bigint或者double儲存。
1.6位資料型別
bit: 最大儲存位64位,因引擎而異,myisam 會打包bit列,沒有null的情況下17位只需要3位儲存,mysql將其作為字串儲存,檢索bit(1)的值時結果是二級制的1和0,。
set: 用於儲存多個值,在mysql中使用一系列打包的位的集合表示,有效的利用了儲存空間,缺點在於改變列的代價較高。
1.7 選擇標誌符(identfier)
整數型別:整數型別是最好的選擇,並且可以自增,enum和set是最壞的選擇。
字串型別:應該避免使用該型別,因為他對空間消耗比較大,並且查詢速度比數字慢。
1.8特殊型別資料
mysql中整數型別 MySQL中整數型別使用
mysql中整數型別使用 bigint 從 2 63 9223372036854775808 到 2 63 1 9223372036854775807 的整型資料 所有數字 儲存大 mysql中整數型別使用 bigint 從 2 63 9223372036854775808 到 2 63 1 922...
mysql中的ENUM型別
enum 是乙個字串物件,其值來自表建立時在列規定中顯式列舉的一列值。在某些情況下,enum 值也可以為空字串 或null 如果你將乙個非法值插入enum 也就是說,允許的值列之外的字串 將插入空字串以作為特殊錯誤值。該字串與 普通 空字串不同,該字串有數值值0 後面有詳細討論。如果將enum 列宣...
mysql中的decimal型別
今天除錯程式,系統丟擲這個異常 out of range value adjusted for column bodyweight 進資料庫看見這個欄位的型別是decimal 4,2 錄入三位數就出異常。decimal m d zerofill 乙個未壓縮 unpack 的浮點數字。不能無符號。行為...