ORACLE的数据类型
ORACLE的概述:
oracle基本上分為:字符串類型,數字類型,日期類型,大對象類型等幾種。
1 字符串類型:用單引號引起來的字符序列。?
? 字符串數據類型還可以依據存儲空間分為固定長度類型(CHAR/NCHAR) 和可變長度類型(VARCHAR2/NVARCHAR2)兩種.
1.1:CHAR類型 CHAR(size [BYTE | CHAR])
CHAR類型,定長字符串,會用空格填充來達到其最大長度。非NULL的CHAR(12)總是包含12字節信息。CHAR字段最多
可以存儲2,000字節的信息。如果創建表時,不指定CHAR長度,則默認為1。另外你可以指定它存儲字節或字符,
例如 CHAR('字' BYTYE) CHAR('字' CHAR).一般來說默認是存儲字節,可以查看數據庫參數NLS_LENGTH_SEMANTICS的值。
注:儲存類型可以分為:字符和字節,如果要申明為字符,需要在size后面申明,默認是存儲字節。
ORACLE數據庫漢字占用幾個字節,要根據ORACLE中字符集編碼決定,可以通過查詢字符集知道:
注:字符集分為:AL32UTF8和ZHS16GBK
查看漢字所占的字符和字節數:
所以,一個漢字在oracle中占幾個字節可以總結為:
當NLS_CHARACTERSET=AL32UTF8時() NLS_LENGTH_SEMANTICS=BYTE時,一個漢字代表三個字節 NLS_LENGTH_SEMANTICS=CHAR時,一個漢字代表一個字節 當NLS_CHARACTERSET=ZHS16GBK時(字符集為字節) NLS_LENGTH_SEMANTICS=BYTE時,一個漢字代表一個字節 NLS_LENGTH_SEMANTICS=CHAR時,一個漢字代表兩個字節1.2:NCHAR類型
NCHAR類型 長度固定且只儲存Unicode字符集,如果儲存的數據沒有達到定義的長度時,數據庫會自動補足空格,
最多儲存2000個字節,如果不指定長度,最大的長度為1.
NCHAR和CHAR之間是不能直接互相兼容的,而是要通過Oracle的函數或者語法進行轉換,比如說從NCHAR轉成CHAR是要用TO_CHAR函數進行轉換,
而CHAR轉換為NCHAR,比如說'ABCDE'這個CHAR字符串,則要通過N'ABCDE'來進行表示,也就是說前面要有一個N這個特殊字符,表示是NCHAR類型。
1.3:VARCHAR類型
不要使用VARCHAR數據類型。使用VARCHAR2數據類型。雖然VARCHAR數據類型目前是VARCHAR2的同義詞,VARCHAR數據類型將計劃被重新定義為一個單獨的數據類型用于可變長度的字符串相比,具有不同的比較語義,VARCHAR2把空串等同于null處理,而varchar仍按照空串處理;
varchar只對漢字和全角等字符占兩字節,數字,英文字符等都是一個字節;。1.4: VARCHAR2類型
變長字符串,與CHAR類型不同,它不會使用空格填充至最大長度。VARCHAR2最多可以存儲4,000字節的信息。
但存儲效率沒有CHAR高。如果一個字段可能的值是不固定長度的,我們只知道它不可能超過10個字符,把它定義為 varchar2(10)是最合算的。varchar2類型的實際長度是它的值的實際長度+1。為什么“+1”呢?這一個字節用于保存實際使用了多大的長度。從空間上考慮,用varchar2合適;從效率上考慮,用char合適,關鍵是根據實際情況找到權衡點。
1.5: NVARCHAR2類型
這是一個包含UNICODE格式數據的變長字符串。 NVARCHAR2最多可以存儲4,000字節的信息。
二. 數字類型
2.1 NUMBER類型
NUMBER(P,S)是最常見的數字類型,可以存放數據范圍為10^130~10^126(不包含此值),需要1~22字節(BYTE)不等的存儲空間。
P 是Precison的英文縮寫,即精度縮寫,表示有效數字的位數,最多不能超過38個有效數字
S是Scale的英文縮寫,可以使用的范圍為-84~127。Scale為正數時,表示從小數點到最低有效數字的位數,它為負數時,表示從最大有效數字到小數點的位數
2.2 INTEGER類型
INTEGER是NUMBER的子類型,它等同于NUMBER(38,0),用來存儲整數。若插入、更新的數值有小數,則會被四舍五入。
三.?日期類型
? 3.1 DATE:存儲日期和時間,精確到秒。Oracle 存儲以下信息: 世紀、 年、 月、 日期、 小時、 分鐘和秒。一般占用7個字節的存儲空間。
?
? ? ? ? ? ? ? ?默認存放格式:“DD-MON-YYYY”?
?
? ? ? ? ? ? ? ?默認顯示格式:“DD-MON-YY?
?
? ? ? ? ? ? 3.2 TIMESTAMP[(seconds_precision)]:存儲日期、時間和時區信息,帶小數位的秒。時間戳?
?
? ? ? ? ? ? ? ?如:TIMESTAMP(3) ? 秒后面小數點為3位。(最多可9位)?
四.?LOB類型
內置的LOB數據類型包括BLOB、CLOB、NCLOB、BFILE(外部存儲)的大型化和非結構化數據,如文本、圖像、視屏、空間數據存儲。BLOB、CLOB、NCLOB類型,最大存儲128TB?
?
4.1 CLOB 數據類型
?? 它存儲單字節和多字節字符數據。支持固定寬度和可變寬度的字符集。CLOB對象可以存儲最多 (4 gigabytes-1) * (database block size) 大小的字符
4.2 NCLOB 數據類型
?? 它存儲UNICODE類型的數據,支持固定寬度和可變寬度的字符集,NCLOB對象可以存儲最多(4 gigabytes-1) * (database block size)大小的文本數據。
4.3 BLOB 數據類型
?? 它存儲非結構化的二進制數據大對象,它可以被認為是沒有字符集語義的比特流,一般是圖像、聲音、視頻等文件。BLOB對象最多存儲(4 gigabytes-1) * (database block size)的二進制數據。
4.4 BFILE 數據類型
???二進制文件,存儲在數據庫外的系統文件,只讀的,數據庫會將該文件當二進制文件處理
轉載于:https://www.cnblogs.com/t0404/p/10290970.html
總結
以上是生活随笔為你收集整理的ORACLE的数据类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 剑指Offer之栈的压入、弹出序列
- 下一篇: tfs填坑那些事