Oracle第二章——Oracle資料類型

來源:互聯網
上載者:User

標籤:無法查詢   長度   clob   大於   文檔   float   自然數   規則   字元類型   

當建立一個表時,需要為表的各個列指定資料類型,Oracle的資料類型主要有5種,字元類型、數實值型別、日期時間類型、LOB類型和偽列。

一、字元類型

  1、CHAR類型

    定長字串,長度為1~2000位元組,如果定義時未指定大小,預設為1,使用時,若儲存的值大小小於指定的長度,則用空格填充剩餘長度,

    若大於指定長度,則報錯。樣本:CHAR(20),若此時儲存一個長度為10的字串,則還是佔用20個位元組的空間。(此外,還可以用

    CHAR(20CHAR)的方式進行定義,這種方式的意思是儲存多少個字元,而不是位元組)。

  2、VARCHAR2類型

    可變字串,長度為1~4000位元組,定義時需指定大小,使用時,若儲存的值大小小於指定的長度,則長度縮小為值的大小,若大於指定長度,

    則報錯。(Oracle也有VARCHAR類型,但該類型有可能會被在未來的版本中被重新定義,所以不推薦使用)樣本:VARCHAR2(20),

    若此時儲存一個長度為10的字串,則佔用10個位元組的空間。(也可以使用VARCHAR2(20CHAR)的方式定義,意思同CHAR類型)。

  3、NCHAR類型

    儲存Unicode字元的定長字串,既儲存雙位元組字元類型資料,每個字元佔用2個位元組,其他特性與CHAR類型相似。樣本:NCHAR(20),

    若此時儲存一個長度為10的字串,則佔用40個位元組的空間。

  4、NVARCHAR2類型

    儲存Unicode字元的可變字串,其他特性與VARCHAR2類型相似。樣本:NVARCHAR2(20),若此時儲存一個長度為10的字串,

    則佔用20個位元組的空間。

二、數實值型別

  1、NUMBER類型

    NUMBER類型可以儲存正數、負數、0、定點數和浮點數。格式為NUMBER(P,S),其中P為精度,表示數值的有效位元(從左邊第一個不為0

    的數字算起,不包括小數點和負號為有效位元),在1~38之間。S為範圍,表示小數點右邊數位位元,在-84~127之間。使用規則:

    將值精確到小數點右邊S位並四捨五入,判斷有效位元是否<=P。以下結合幾個樣本進行說明:

    (1)、NUMBER(3):當要儲存的值是100時,精確到小數點右邊0位並四捨五入後值為100,有效位元為3,可以儲存。當值是3.563時,

        精確到小數點右邊0位並四捨五入後值為4,有效位元為1,可以儲存。當值是2350.5時,精確到小數點右邊0位並四捨五入後值為2351,

        有效位元為4,不可以儲存。

    (2)、NUMBER(3,2):當要儲存的值是100時,精確到小數點右邊2位並四捨五入後值為100.00,有效位元為5,不可以儲存。當值是3.563時,

        精確到小數點右邊2位並四捨五入後值為3.56,有效位元為3,可以儲存。當值是2350.5時,精確到小數點右邊2位並四捨五入後

        值為2350.50,有效位元為6,不可以儲存。

    (3)、NUMBER(3,-2):當S為負數時,較為特殊,會將值左邊|S|(|S|為S的絕對值)位的值進行四捨五入後取0且不計入有效位元,

        如:當要儲存的值是100時,實際值為100,有效位元為1,可以儲存。當值是3.5時,實際值為0,有效位元為1,可以儲存。

        當值是2350.5時,實際值為2400,有效位元為2,可以儲存。

  2、INTEGER類型

    是NUMBER的子類型,等同於NUMBER(38,0),用於儲存整數。

  3、FLOAT類型

    是NUMBER的子類型,格式為FLOAT(n),n在1~126之間,這個值是二進位的精度,最大值126轉換為十進位大概為38。

三、日期時間類型

  1、DATE類型

    儲存日期和時間的類型,使用7個位元組的固定長度,儲存世紀、年、月、日、時、分、秒,最小時間為公元前4712年1月1日,最大時間為

    公元9999年12月31日。可以使用SYSDATE函數擷取目前時間的DATE類型。

  2、TIMESTAMP類型

    儲存日期和時間的類型,使用7到12位元組長度,秒數精確到小數秒(不指定精度的情況下為小數點後6位,指定精度可以達到9位),

    且包含時區資訊。可以使用SYSTIMESTAMP函數擷取目前時間的TIMESTAMP類型。

四、LOB類型

  1、CLOB類型

    儲存大量字元資料,可以儲存單位元組字元資料和多位元組字元資料,主要用於儲存非結構化XML文檔。

  2、BLOB類型

    儲存二進位對象,片、視頻和音樂。

  3、BFILE類型

    儲存一個定位器,該定位器指向一個伺服器檔案系統的二進位檔案,最大為4G。

  4、NCLOB類型

    與CLON類似,不過NCLON可同時支援固定寬度字元集和可變寬度字元集,最大為4G。

  操作LOB類型資料可以使用PL/SQL提供的DBMS_LOB程式包來完成,使用LOB類型要合理分配好資料表空間,否則會對效能造成影響。

五、偽列

  偽列的定義:類似於表中的列,但並未實際儲存在表中,無法對偽列進行增刪改。

  1、ROWID

    表中的每一行都有一個地址,可以唯一的標識資料庫中的一行,ROWID可以返回這個地址,可以用來作為查詢條件查詢唯一行,提高查詢效率,

    還可以查看行在表中是如何儲存的。

  2、ROWNUM

    ROWNUM偽列可以為查詢結果從1開始進行排序,可以用來限制返回行數,Oracle的分頁就是使用ROWNUM實現的。需注意,使用ROWNUM

    必須包含1,否則無法查出資料,也就是說,ROWNUM=1可以查詢出結果集中第一行的資料,但ROWNUM=2是無法查詢任何資料的,

    還有ROWNUM>2也是無法查詢出任何資料的,但使用ROWNUM<2就可以查詢出兩條資料,這是因為ROWNUM是一個從1開始的偽列,

    Oracle認為ROWNUM>n(n為大於1的自然數)的條件不成立,所有無法查出資料。

  (關於偽列的更多資料可以查看官方文檔:http://docs.oracle.com/cd/E11882_01/server.112/e41084/pseudocolumns.htm#SQLRF0025)

Oracle第二章——Oracle資料類型

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.