oracle 10g 資料類型佔用位元組介紹

來源:互聯網
上載者:User

這篇文章的主要目的是分析建設系統所用的儲存空間,避免對存放裝置的過渡浪費,節省投資。同時也提高對oracle常用資料類型的認識。

介紹的類型如下:
·char
·varchar
·varchar2
·nvarchar
·nvarchar2
·number
·date

char的長度是固定的,比如說,你定義了char(20),即使你你插入abc,不足二十個位元組,資料庫也會在abc後面自動加上17個空格,以 補足二十個位元組;char是區分中英文的,中文在char中佔兩個位元組,而英文佔一個,所以char(20)你只能存20個字母或10個漢字;char適 用於長度比較固定的,一般不含中文的情況;CHAR的效率比VARCHAR2的效率稍高。

目前VARCHAR是VARCHAR2的同義字。工業標準的VARCHAR類型可以儲存Null 字元串,但是oracle自己開發了一個資料類型 VARCHAR2,這個類型不是一個標準的VARCHAR,它將在資料庫中varchar列可以儲存Null 字元串的特性改為儲存NULL值。如果你想有向後兼 容的能力,Oracle建議使用VARCHAR2而不是VARCHAR。

varchar和varchar2是長度不固定的,比如說,你定義了varchar(20),當你插入abc,則在資料庫中只佔3個位元組。中文佔兩個位元組。

varchar和varchar2最多儲存4000位元組。

nvarchar和nvarchar2是長度不固定的;nvarchar不區分中英文,比如說:你定義了nvarchar(20),你可以存入20 個英文字母/漢字或中英文組合,這個20定義的是字元數而不是位元組數;nvarchar2基本上等同於nvarchar,不同在於nvarchar2中存 的英文字母也佔兩個位元組;nvarchar/nvarchar2適用於存放中文。

NUMBER最多佔用22個位元組,最大可以儲存38個十進位位。
Number預設情況下,精度為38位,取值範圍1~38之間。它實際上是磁碟上的一個變長類型,會佔用0~22 位元組的儲存空間。 但定義的一個Number型欄位到底要佔用多少位元組呢?從網上找到了如下公式。
其實有公式可以計算:
number(p,s)佔用得空間為: 
length = floor((p+1)/2) + 1    
備忘:如果該數值為負數,需要再加一個位元組。
----------------
例如:NUMBER(14,4)的類型數值,儲存空間為
select floor((14+1)/2) + 1 from dual 
結果輸出為:8

DATE類型在oracle10g中佔用7個位元組。

在粗數量級估計一張表每條記錄佔用多少空間時,可以參考上述的規則,查詢資料字典也是一種途徑。

SELECT * FROM USER_TAB_COLUMNS WHERE TABLE_NAME='';

在查詢結果中,有一列叫DATA_LENGTH,記錄了佔用最大位元組數。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.