Oracle數據類型 簡要說明 字元類型 char和varchar2,可表達任何字元串 數字類型 number(m,n),可表達任何數字,m是數字的精度,n是小數點後的位數,如果n為0則表示是一個整數。 日期類型 date,存放日期和時間,包括年(yyyy)、月(mm)、日(dd)、小時(hh24) ...
Oracle數據類型 | 簡要說明 |
---|---|
字元類型 | char和varchar2,可表達任何字元串 |
數字類型 | number(m,n),可表達任何數字,m是數字的精度,n是小數點後的位數,如果n為0則表示是一個整數。 |
日期類型 | date,存放日期和時間,包括年(yyyy)、月(mm)、日(dd)、小時(hh24)、分(mi)、秒(ss) |
clob類型 | 存放單位元組字元串或多位元組字元串數據,如文本文件、xml文件 |
blob類型 | 存放非結構化的二進位數據,如圖片、音頻、視頻、office文檔等 |
rowid類型 urowid類型 |
存放表中記錄在資料庫中的物理地址 |
字元類型
字元類型 | 定長/變長 | 是否必須指定長度 | 預設值 | 位元組 | unicode字元集 |
---|---|---|---|---|---|
char | 定長字元類型(未達到指定長度時,自動在末尾用空格補全) | 否 | 1 | 最大2000位元組 | 非unicode |
nchar | 定長字元類型(未達到指定長度時,自動在末尾用空格補全) | 否 | 1 | 最大1000位元組,所有字元都占兩個位元組 | 根據unicode |
varchar2 | 變長字元類型(未達到指定長度時,不自動補全空格) | 是 | 最大4000位元組 | 非unicode | |
nvarchar2 | 變長字元類型(未達到指定長度時,不自動補全空格) | 是 | 最大2000位元組 | 根據unicode |
-
最大xxx位元組,位元組而非字元個數,如char(1)就連一個漢字都不能存放。
-
unicode字元集是為瞭解決字元集不相容的問題而產生的,所有字元都用兩個位元組表示,即英文字元也用兩個位元組表示。
創建表驗證字元類型
create table char_table( char_column char, nchar_column nchar(2), varchar2_column varchar2(4000), nvarchar2_column nvarchar2(4) );
插入數據
insert into char_table values ('1', '太一', '亞古獸進化', '暴龍獸');
查詢數據
select * from char_table;
數字類型
oracle中的數字類型主要為三種:number,float,binary_*,其他的類型基本上都是number類型或者float類型的子類型。
數字類型 | 使用頻率 | 說明 |
---|---|---|
number(p,s) | 常用 | 略 |
float | 不常用 | 二進位精度,需要進行精度轉換 |
binary_float binary_double |
不常用 | 表示範圍更大可用於科學計算,精度沒有number類型高(可用於金融數據) |
number(p,s)類型
22個位元組的存儲空間
字母 | 釋義 | 說明 | 取值範圍 | 預設值 | 其它 |
---|---|---|---|---|---|
p | DBA_TAB_COLUMNS表的DATA_PRECISION(精度) | 包括小數在內的總共有效位數 | [1~38] |
若沒有指定,預設為38 | 當整數部分的長度大於p時,報錯 |
s | DBA_TAB_COLUMNS表的DATA_SCALE(小數位) | 精確到多少位小數 | [-84~127] |
若沒有指定,預設為0 | 當小數位數大於s時,並四捨五入 當s取負數時,將小數點左邊的s置為0,並四捨五入 |
官方文檔給出的幾個例子如下:
輸入數據 | 定義類型 | 存儲結果 |
---|---|---|
1,234,567.89 | NUMBER | 1234563.89 |
1,234,567.89 | NUMBER(*,1) | 1234563.9 |
1,234,567.89 | NUMBER(9) | 1234564 |
1,234,567.89 | NUMBER(9,2) | 1234563.89 |
1,234,567.89 | NUMBER(9,1) | 1234563.9 |
1,234,567.89 | NUMBER(6) | 報錯,超精度 |
1,234,567.89 | NUMBER(7,-2) | 1234600 |
number類型的子類型
number類型的子類型 | 簡要說明 |
---|---|
integer | 等同於number(38) |
smallint | 同於number(38) |
decimal | 可以使用decimal(p,s),若p,s未指定,等同於number(38) |
float類型
字母 | 釋義 | 說明 | 取值範圍 | 預設值 |
---|---|---|---|---|
float(b) | 二進位精度(binary precision | b表示二進位進度 | [1,126] |
126 |
b是一個二進位精度(binary precision),而不是我們通常說的十進位精度(decimal precision)
需要進行以下的轉換:binary precision=int(b*0.30103)
舉例來說:當b=2,則對應的十進位精度為int(2*0.30103)=0
,即小數點後精度為0。
eg:56.2存儲到float(2)變為60。計算過程:56.2=5.62*10^1
,因為精度為0只能取到整數,5.62四捨五入後為6,最後取值為6*10^1=60
float類型的子類型
float類型的子類型 | 簡要說明 |
---|---|
real | 等同於float(63) |
binary_float和binary_double類型
數據類型 | 說明 | 位元組長度 |
---|---|---|
binary_float | 32位單精度浮點數數據類型 | 5個位元組(4位元組+1個長度位元組)支持至少6位精度 |
binary_double | 64位雙精度浮點數數據類型 | 9個位元組(8位元組+1個長度位元組) |
創建表驗證數字類型
create table num_table( number1 number, number2 number(38), number3 number(9,2), int4 int, smallint1 smallint, decimal1 decimal(5,2), float1 float, float2 float(2), real1 real, binary_float1 binary_float, binary_double1 binary_double );
插入數據
insert into num_table values (1.23, 123, 1234567.89, 573, 34, 673.43, 34.1264, 56.2, 23.231, 12.34f, 34.56d);
查詢數據
select * from num_table;
日期類型
未完待續...
long類型
未完待續...
blob & clob & nclob大對象數據類型
未完待續...
rowid & urowid類型
未完待續...
I have a dream : Sandy beach B-J-N.