整數類型 | 字節 | 最小值 | 最大值 |
tinyint | 1 | 有符號-128 無符號0 |
有符號127 無符號255 |
smallint | 2 | 有符號-32768 無符號0 |
有符號32767 無符號65535 |
mediumint | 3 | 有符號-8388608 無符號0 |
有符號8388607 無符號1677215 |
int、integer | 4 | 有符號-2147483648 無符號0 |
有符號2147483647 無符號4294967295 |
bigint | 8 | 有符號-9223372036854775808 無符號0 |
有符號9223372036854775807 無符號18446744073709551615 |
浮點數類型 | 字節 | 最小值 | 最大值 |
float | 4 | ±1.175494351E-38 | ±3.402823466E+38 |
double | 8 | ±2.2250738585072014E-308 | ±1.7976931348623157E+308 |
定點數類型 | 字節 | 描述 |
dec(m,d) / decimal(m,d) | m+2 | 最大取值范圍與double相同,給定decimal的有效取值范圍由m和d決定 |
位類型 | 字節 | 最小值 | 最大值 |
bit(m) | 1-8 | bit(1) | bit(64) |
一、對於整數類型,Mysql支持在類型后面的小括號內指定顯示寬度 例如:int(5) 表示當前數值寬度小於5位的時候在數字前面填滿寬度。
1.如果不指定顯示寬度,則默認為int(11)
2. 配合zerofill使用:在數字位數不夠的空間用字符"0"填滿。 eg:修改表字段為 id1 int zerofill;
//創建表 id1為int,不設置顯示寬度 id2為int,設置顯示寬度為6 id3為tinyint 不設置顯示寬度 create table t1( id1 int zerofill, id2 int(6) zerofill, id3 tinyint zerofill );
//都插入相同數值1 insert into t1 values(1,1,1);
3.設置寬度限制后,如果插入大於寬度限制的值,會正常插入。此時寬度格式已經沒有意義。
二、對於整數類型,都有可選屬性unsigned(無符號)
1.用於保存保存非負數或者需要較大上限的值
2.取值范圍:下限是0,上限是原值的2倍。 eg: tinyint 有符號范圍是-128~127 無符號范圍是0~255
3.如果一個列指定為zerofill,則MySQL自動為該列添加unsigned屬性
二、對於整數類型,都有可選屬性auto_increment
1.自增屬性,一般從1開始,每插入一條數據該字段都會+1。用於產生唯一標識符或順序值。
2.在插入null到一個auto_increment列時,MySQL會插入一個比該列中當前最大值大1的值。
3.對於任何想要使用auto_increment的列,應該定義為not null,並定義為primary key或定義為unique鍵。
小數
1.對於小數的表示,分為浮點數和定點數。浮點數包括float(單精度)和double(雙精度),定點數只有decimal一種表示。
2.定點數在MySQL內部以字符串的形式存放,比浮點數更精確,適合用來表示貨幣等精度高的數據。
3.小數類型都可以在類型名稱后加"(m,d)",表示該值一共顯示m位數字(整數位加小數位),其中d位位於小數點后面,m和d又稱為精度和標度。 eg:float(7,4) 插入999.00009,保存結果為999.0001。四舍五入
4.float和double在不指定精度時,默認會按照實際的精度來顯示。若指定,則會自動將四舍五入的結果插入。
5.decimal在不指定精度時,默認為(10,0),如果數據超越了精度和標度,系統則會報錯。
位
1.bit(m)用來存放多位二進制數,m的范圍是1~64。
2.對於位字段,直接使用select命令將不能看到結果,可以用bin()(顯示為二進制格式)、hex()(顯示為十六進制格式)函數進行讀取。