關於oracle中的sql資料型別

dbhelper發表於2014-11-26
資料型別對於每一種程式語言而言都是資料儲存的基礎,對於程式語言的實現功能而言也是一個標尺,有些程式語言可能資料型別很豐富,比如java,c,在資料計算方面的支援很全面,有些程式設計比較精簡,更側重於實現特定的功能,資料型別也就簡單得多。比如說shell。
對於oracle中的sql來說,資料型別的支援非常全面,無論是資料計算還是複雜的業務邏輯封裝需要,資料型別的支援都是內建和可擴充套件的。可以根據需要來選擇。
目前oracle的資料型別分類大體有如下的結構。
使用者自定義型別,基本上都是由type來實現,可以根據需要來靈活定製。
內建資料型別是主要的應用方向。大體分為了標量,集合,關係型
關於oracle中的sql資料型別
關於自定義資料型別有必要多說一些。
一個簡單的例子如下,我們建立測試表test_datatype來簡單的說明。

create table test_datatype(id number,name varchar2(100),memo varchar2(1000));

create or replace type t_test_datatype as
object
(
id number,
name varchar2(100)
)
/

create or replace type tt_test_datatype as table of t_test_datatype
/

create table new_test_datatype
(
object_id number,
other_columns tt_test_datatype
)
nested table other_columns store as other_columns_nt
/

而對於內建資料型別,簡單的總結和描述總結成了表格。

資料型別 長度 說明
CHAR(n BYTE/CHAR) 預設1位元組,n值最大為2000 末尾填充空格以達到指定長度,超過最大長度報錯。預設指定長度為位元組數,字元長度可以從1位元組到四位元組。
NCHAR(n) 預設1字元,最大儲存內容2000位元組 末尾填充空格以達到指定長度,n為Unicode字元數。預設為1位元組。
NVARCHAR2(n) 最大長度必須指定,最大儲存內容4000位元組 變長型別。n為Unicode字元數
VARCHAR2(n BYTE/CHAR) 最大長度必須指定,至少為1位元組或者1字元,n值最大為4000 變長型別。超過最大長度報錯。預設儲存的是長度為0的字串。



NUMBER(p[,s]) 1-22位元組。 儲存定點數,值的絕對值範圍為1.0 x 10 -130至1.0 x 10 126。值大於等於1.0 x 10 126時報錯。p為有意義的10進位制位數,正值s為小數位數,負值s表示四捨五入到小數點左部多少位。
P取值範圍1到38
S取值範圍-84到127
BINARY_FLOAT 5位元組,其中有一長度位元組。 32位單精度浮點數型別。
符號位1位,指數位8位,尾數位23位。
BINARY_DOUBLE 9位元組,其中有一長度位元組。 64位雙精度浮點數型別。

對於一些資料樣例,總結如下:
輸入資料 資料型別 儲存結果
7,456,123.89 NUMBER 7456123.89
7,456,123.89 NUMBER(*,1) 7456123.9
7,456,123.89 NUMBER(9) 7456124
7,456,123.89 NUMBER(9,2) 7456123.89
7,456,123.89 NUMBER(9,1) 7456123.9
7,456,123.89 NUMBER(6) (not accepted, exceeds precision)
7,456,123.89 NUMBER(7,-2) 7456100

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23718752/viewspace-1339501/,如需轉載,請註明出處,否則將追究法律責任。

相關文章