標籤:
1. 字元類型
資料類型 |
長度 |
說明 |
CHAR(n) |
預設1位元組,n值最大為2000 |
末尾填充空格以達到指定長度,超過最大長度報錯。預設指定長度為位元組數,字元長度可以從1位元組到四位元組。 |
NCHAR(n) |
預設1字元,最大儲存內容2000位元組 |
末尾填充空格以達到指定長度,n為Unicode字元數。預設為1位元組。 |
NVARCHAR2(n) |
最大長度必須指定,最大儲存內容4000位元組 |
變長類型。n為Unicode字元數 |
VARCHAR2(n) |
最大長度必須指定,至少為1位元組或者1字元,n值最大為4000 |
變長類型。超過最大長度報錯。預設儲存的是長度為0的字串。 |
VARCHAR |
同VARCHAR2 |
不建議使用 |
2. 數字類型
資料類型 |
長度 |
說明 |
NUMBER(p[,s]) |
1-22位元組。 P取值範圍1到38 S取值範圍-84到127 |
儲存定點數,值的絕對值範圍為1.0 x 10 -130至1.0 x 10 126。值大於等於1.0 x 10 126時報錯。p為有意義的10進位位元,正值s為小數位元,負值s表示四捨五入到小數點左部多少位。 |
BINARY_FLOAT |
5位元組,其中有一長度位元組。 |
32位單精確度浮點數類型。 符號位1位,指數位8位,尾數位23位。 |
BINARY_DOUBLE |
9位元組,其中有一長度位元組。 |
64位雙精確度浮點數類型。 |
3. 時間、時間間隔類型
時間欄位可取值範圍:
時間欄位 |
時間類型有效值 |
時間間隔類型有效值 |
YEAR |
-4712至9999,包括0 |
任何整數 |
MONTH |
01至12 |
0至11 |
DAY |
01至31 |
任何整數 |
HOUR |
00 至 23 |
0 至 23 |
MINUTE |
00 至 59 |
0至 59 |
SECOND |
00 to 59.9(n),9(n)不適用與DATE類型 |
0 to 59.9(n) |
TIMEZONE_HOUR |
-1至14,不適用與DATE和TIMESTAMP類型 |
不可用 |
TIMEZONE_MINUTE |
00至59,不適用與DATE和TIMESTAMP類型 |
不可用 |
TIMEZONE_REGION |
|
不可用 |
TIMEZONE_ABBR |
|
不可用 |
時間、時間間隔類型:
資料類型 |
長度 |
說明 |
DATE |
7位元組 |
預設值為SYSDATE的年、月,日為01。包含一個時間欄位,若插入值沒有時間欄位,則預設值為:00:00:00 or 12:00:00 for 24-hour and 12-hour clock time。沒有分秒和時間區。 |
TIMESTAMP [(fractional_seconds_precision)] |
7至11位元組 |
fractional_seconds_precision為Oracle儲存秒值小數部分位元,預設為6,可選值為0到9。沒有時間區。 |
TIMESTAMP [(fractional_seconds_precision)] WITH TIME ZONE |
13位元組 |
使用UTC,包含欄位YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, TIMEZONE_ HOUR, TIMEZONE_MINUTE |
TIMESTAMP [(fractional_seconds_precision)] WITH LOCAL TIME ZONE |
7至11位元組 |
存時使用資料庫時區,取時使用回話的時區。 |
INTERVAL YEAR [(year_precision)] TO MONTH |
5位元組 |
包含年、月的時間間隔類型。year_precision是年欄位的數字位元,預設為2,可取0至9。 |
INTERVAL DAY [(day_precision)] TO SECOND [(fractional_seconds_precision)] |
11位元組 |
day_precision是月份欄位的數字位元,預設為2,可取0至9。 |
TO_DATE()、DATE使用的時間欄位值都是午夜值。或者使用TRUNC()函數進行過濾,確保時間欄位為午夜值。
時間和時間間隔類型操作規則:
在DATE和TIMESTAMP(會被轉化為DATE類型值)類型上加、減NUMBER類型常量,該常量單位為天數。
所有TIMESTAMP類型運算都以UTC時間為準。即對於TIMESTAMP WITH LOCAL TIME ZONE來說,先轉化為UTC時間,計算完成後再轉化回來。
INTERVAL YEAR TO MONTH常量:
INTERVAL‘year-month’YEAR/MONTH(precision) TO MONTH
year位元超過precision時,返回一個錯誤。
其中precision為最大的位元,預設為2,可取0到9。
例子:INTERVAL ‘123-2‘ YEAR(3) TO MONTH 、
INTERVAL ‘123‘ YEAR(3) 、
INTERVAL ‘300‘ MONTH(3)。
INTERVAL DAY TO SECOND常量:
INTERVAL ‘n/time_expr/n time_expr’ DAY/HOUR/MINUTE(leading_precision) TO HOUR/MINUTE/SECOND(fractional_second_precision)
INTERVAL ‘n/time_expr’ SECOND(leading_precision, fractional_second_precision)
time_expr格式:HH[:MI[:SS[.n]]] or MI[:SS[.n]] or SS[.n] 若n大於分秒精度,則四捨五入n。
只有當第一個欄位是DAY時,才可以使用n time_expr。
leading_precision預設為2,可取0至9。
4. 大物件類型
資料類型 |
長度 |
說明 |
BLOB |
最大為(4GB-1)*資料庫塊大小 |
儲存非結構化二進位檔案。支援交易處理。 |
CLOB |
最大為(4GB-1)*資料庫塊大小 |
儲存單位元組或者多位元組字元資料。支援交易處理。 |
NCLOB |
最大為(4GB-1)*資料庫塊大小 |
儲存Unicode資料。支援交易處理。 |
BFILE |
最大為2 32-1位元組 |
LOB地址指向檔案系統上的一個二進位檔案,維護目錄和檔案名稱。不參與交易處理。只支援唯讀操作。 |
LOB列包含一個LOB地址,指向資料庫內或者資料庫外的LOB類型值。
5. 其他類型
資料類型 |
長度 |
說明 |
LONG |
最大為2GB |
變長類型,儲存字串。建立表時不要使用該類型。 |
RAW(n) |
最大2000位元組,n為位元組數,必須指定n |
變長類型,字元集發生變化時不會改變值。 |
LONG RAW |
最大為2GB |
變長類型,不建議使用,建議轉化為BLOB類型,字元集發生變化時不會改變值。 |
ROWID |
10位元組 |
代表記錄的地址。顯示為18位的字串。用於定位元據庫中一條記錄的一個相對唯一地址值。通常情況下,該值在該行資料插入到資料庫表時即被確定且唯一。 |
UROWID(n) |
|
|
ROWID:資料對象編號32位(6個字元)、檔案編號10位(3個字元)、塊編號22位(6個字元)、行編號16位(3個字元)
使用dqms_rowid包獲得ROWID資訊:
select dbms_rowid.rowid_object(rowid) object_id, dbms_rowid.rowid_relative_fno(rowid) file_id, dbms_rowid.rowid_block_number(rowid) block_id, dbms_rowid.rowid_row_number(rowid) num from dept;
ORACLE基礎資料型別 (Elementary Data Type)總結