關於Oracle中的sql資料類型
資料類型對於每一種程式設計語言而言都是資料存放區的基礎,對於程式設計語言的實現功能而言也是一個尺規,有些程式設計語言可能資料類型很豐富,比如java,c,在資料計算方面的支援很全面,有些編程比較精簡,更側重於實現特定的功能,資料類型也就簡單得多。比如說shell。
對於Oracle中的sql來說,資料類型的支援非常全面,無論是資料計算還是複雜的商務邏輯封裝需要,資料類型的支援都是內建和可擴充的。可以根據需要來選擇。
目前Oracle的資料類型分類大體有如下的結構。
使用者自訂類型,基本上都是由type來實現,可以根據需要來靈活定製。
內建資料類型是主要的應用方向。大體分為了標量,集合,關係型
關於自訂資料類型有必要多說一些。
Oracle PL/SQL複合資料型別
Oracle資料類型學習筆記
Oracle定義資料類型Type
Oracle DB 隱式和顯式資料類型轉換
Oracle常用資料類型和完整性條件約束
Oracle 4個大對象(lobs)資料類型介紹
一個簡單的例子如下,我們建立測試表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的字串。 |
VARCHAR |
同VARCHAR2 |
不建議使用 |
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 |