oracle本來就沒有int型別,為了與別的資料庫相容,新增了int型別作為number型別的子集。
int型別只能儲存整數;
number可以儲存浮點數,也可以儲存整數;
number(8,1)儲存小數位為1位,總長度為8的浮點數,如果小數位數不足,則用0補全;
number(8)儲存總長度為8的整數;
int相當於number(22),儲存總長度為22的整數。
舉例說明:
--建立表結構
sql>createtabletab(id0int,id1number,id2number(8,1),id3number(8));
tablecreated
sql>
--插入測試資料
sql>insertintotabselect1,1.5,1.6,8fromdual;
1rowinserted
sql>insertintotabselect1,1.55,1.6,8fromdual;
sql>insertintotabselect1,1.595,1,8fromdual;
sql>commit;
commitcomplete
sql>select*fromtab;
id0id1id2id3
---------------------------------------
11.51.68
11.551.68
11.5951.08
--查詢資料字典表dba_tab_columns
sql>selecttable_name,column_name,data_type,data_length,data_precision,data_scalefromdba_tab_columnsa
2wheretable_name="tab"
3andowner="netmax"
4orderbycolumn_id;
table_namecolumn_namedata_typedata_lengthdata_precisiondata_scale
-----------------------------------------------------------------------------------
tabid0number220
tabid1number22
tabid2number2281
tabid3number2280
在dba_tab_columns表中,
data_type表示欄位型別;
data_length表示欄位型別的長度;
data_precision表示欄位型別的精度的總長度,如果為null,表示精度的總長度不固定,最長為data_length;
data_scale表示欄位型別的精度範圍,如果為0,表示只能儲存為整數,
如果為null,表示可以儲存整數或者浮點數,浮點數位數不確定,
如果為整數,表示儲存的精度位數。
查詢dba_tab_columns表,發現tab表中id0欄位型別int已經被轉換為number(22)。
oracle本來就沒有int型別,為了與別的資料庫相容,新增了int型別作為number型別的子集。
int型別只能儲存整數;
number可以儲存浮點數,也可以儲存整數;
number(8,1)儲存小數位為1位,總長度為8的浮點數,如果小數位數不足,則用0補全;
number(8)儲存總長度為8的整數;
int相當於number(22),儲存總長度為22的整數。
舉例說明:
--建立表結構
sql>createtabletab(id0int,id1number,id2number(8,1),id3number(8));
tablecreated
sql>
--插入測試資料
sql>insertintotabselect1,1.5,1.6,8fromdual;
1rowinserted
sql>insertintotabselect1,1.55,1.6,8fromdual;
1rowinserted
sql>insertintotabselect1,1.595,1,8fromdual;
1rowinserted
sql>commit;
commitcomplete
sql>select*fromtab;
id0id1id2id3
---------------------------------------
11.51.68
11.551.68
11.5951.08
--查詢資料字典表dba_tab_columns
sql>selecttable_name,column_name,data_type,data_length,data_precision,data_scalefromdba_tab_columnsa
2wheretable_name="tab"
3andowner="netmax"
4orderbycolumn_id;
table_namecolumn_namedata_typedata_lengthdata_precisiondata_scale
-----------------------------------------------------------------------------------
tabid0number220
tabid1number22
tabid2number2281
tabid3number2280
sql>
在dba_tab_columns表中,
data_type表示欄位型別;
data_length表示欄位型別的長度;
data_precision表示欄位型別的精度的總長度,如果為null,表示精度的總長度不固定,最長為data_length;
data_scale表示欄位型別的精度範圍,如果為0,表示只能儲存為整數,
如果為null,表示可以儲存整數或者浮點數,浮點數位數不確定,
如果為整數,表示儲存的精度位數。
查詢dba_tab_columns表,發現tab表中id0欄位型別int已經被轉換為number(22)。