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