Oracle數據庫常見字段類型大全以及超詳細解析
前言
在工作期間會遇到數據庫建表的業(yè)務,經常會使用復制粘帖等操作,而不清楚數據庫的字段類型。本文記錄了 Oracle 數據庫常見字段類型,根據不同的數據需求,可以選擇不同的字段類型來存儲數據。
一、字符類型(Character)
1、CHAR:定長字符數據類型
存儲固定長度的字符串,最大長度為2000字節(jié),如果存儲的字符串長度小于定義的長度,Oracle會自動用空格填充至指定長度。
CREATE TABLE example_table (
example_column CHAR(10)
);
使用 CHAR(n) 是存儲長度固定為 n 個字節(jié),如果存儲的數據長度小于 n,則使用空格填充,n 的取值范圍是 1 到 2000。當插入數據時,example_column 列將始終占用 10 個字節(jié)的存儲空間,無論實際存儲的字符長度是多少。
2、VARCHAR2:變長字符數據類型
存儲可變長度的字符串,最大長度為4000字節(jié),該類型在實際使用中非常靈活,因為它只占用實際字符串所需的存儲空間,而不需要額外的空格填充。
CREATE TABLE example_table (
example_column VARCHAR2(20)
);
此列僅存儲實際輸入字符所需的字節(jié)數,最大不超過 20 個字節(jié),最大長度為 n 個字節(jié)。n 的取值范圍是 1 到 4000。
3、NCHAR:存儲Unicode字符集的固定長度字符串
存儲 Unicode 字符集的固定長度字符串,最大長度為2000字節(jié)(在某些版本中可能為1000字節(jié)),適用于需要存儲國際化字符集的數據。
CREATE TABLE example_table (
nchar_column NCHAR(10)
);
定義一個長度為 10 的 NCHAR 類型的列,用于存儲定長的 Unicode 字符數據。存儲的字符將根據數據庫的國家字符集進行編碼,通常用于存儲多語言數據。
4、NVARCHAR2:存儲Unicode字符集的可變長度字符串
存儲 Unicode 字符集的可變長度字符串,最大長度為4000字節(jié)(在某些版本中可能為1000字節(jié)),同樣適用于國際化字符集的數據存儲。
CREATE TABLE example_table (
nvarchar2_column NVARCHAR2(20)
);
定義一個長度為 20 的 NVARCHAR2 類型的列,用于存儲變長的 Unicode 字符數據。
二、數值類型(Numeric)
1、NUMBER:用于存儲整型或浮點型數值。
用于存儲整型或浮點型數值,可以指定精度(有效數字的位數)和小數位數。如果沒有指定精度,Oracle將使用 38 作為默認精度。NUMBER 可以存儲非常精確的數值,適合需要精確計算的場景(如金融計算)。
創(chuàng)建時常用 NUMBER(p, s) ,存儲精度為 p 、小數位數為 s 的數值,即 p 表示數字的總長度,取值范圍是1到38,s 表示小數位數,取值范圍是-84到127。
- 如果p和s都未指定,則NUMBER可以存儲任意精度和小數點后的位數的數值。
- 如果指定了p但未指定s,則默認為整數(s=0)。
- 如果指定了p和s,則表示該數值的總位數為p,小數點后的位數為s。
CREATE TABLE example_table (
numeric_column NUMBER(10, 2)
);
可以存儲最大長度為 10 位的數字,其中包含 2 位小數,如 1234567.89。
2、DECIMAL:存儲數字,是NUMBER的一個別名
在Oracle數據庫中,DECIMAL和NUMBER是兩種常用的數值類型,它們都用于存儲數字,但在語法和使用上有一些細微的差別。實際上,DECIMAL在Oracle中是NUMBER的一個別名,它們在功能上幾乎是等價的。
CREATE TABLE example_table (
numeric_column DECIMAL(10, 2)
);
與NUMBER的語法完全相同,p和s的含義也相同。
- DECIMAL(5):與NUMBER(5)等價。
- DECIMAL(5, 2):與NUMBER(5, 2)等價。
由于DECIMAL和NUMBER在Oracle中是完全等價的,你可以根據個人習慣或團隊規(guī)范選擇使用哪一個。在實際開發(fā)中,建議統一使用NUMBER,因為它是 Oracle 官方推薦的數據類型,且在文檔和社區(qū)中更常見。
3、INTEGER 或 INT :整數類型
是NUMBER的一個子集,用于存儲小的整數,等同于 NUMBER(38) 。
CREATE TABLE example_table (
integer_column INTEGER
);
CREATE TABLE example_table (
integer_column INT
);
4、FLOAT:浮點數類型
是NUMBER的一個特殊表示,用于存儲雙精度浮點數。
CREATE TABLE example_table (
float_column FLOAT
);
float_column FLOAT:存儲單精度浮點數。
5、REAL:實數類型
同樣是NUMBER的一個特殊表示,但精度更高,可達63位。
CREATE TABLE example_table (
real_column REAL
);
存儲單精度浮點數,比 FLOAT 精度稍低,是 ANSI SQL 兼容的數據類型。
三、日期和時間類型(Date and Time)
1、DATE:存儲日期和時間,精確到秒
儲日期和時間,包括年、月、日、時、分、秒,精確到秒,范圍從公元前 4712 年 1 月 1 日到公元 9999 年 12 月 31 日。Oracle在內部使用7個字節(jié)來保存日期數據。
CREATE TABLE example_table (
date_column DATE
);
2、TIMESTAMP:時間戳數據類型
存儲日期和時間,精確到秒的小數部分,可精確到納秒,提供了比 DATE 更高的精度。
CREATE TABLE example_table (
timestamp_column TIMESTAMP
);
3、INTERVAL:用于表示兩個時間點之間的時間間隔
用于表示兩個時間點之間的時間間隔
CREATE TABLE example_table (
interval_column INTERVAL DAY TO SECOND
);
存儲時間間隔,精確到秒,范圍從天到秒。
四、二進制大對象類型(Binary Large Object)
1、BLOB:存儲二進制對象
存儲二進制大對象,可存儲多達 4GB 的二進制數據,適用于存儲圖片、音頻、視頻等二進制文件。
CREATE TABLE example_table (
binary_data_column BLOB
);
2、CLOB:存儲大文本數據
用于存儲大量字符數據,可存儲多達 4GB 的字符數據,適用于存儲較長的文本,如文章、文檔等。
CREATE TABLE example_table (
large_text_column CLOB
);
3、NCLOB:存儲Unicode字符集的字符大對象
用于存儲Unicode字符集的字符大對象數據,最大長度同樣為4GB。
CREATE TABLE example_table (
nclob_column NCLOB
);
存儲大量的 Unicode 字符數據,類似于 CLOB,但使用國家字符集。
五、其他類型
1、RAW:存儲原始二進制數據
用于存儲原始二進制數據,如多媒體圖像、聲音等。最大長度為2000字節(jié)。
CREATE TABLE example_table (
raw_data_column RAW(10)
);
存儲二進制數據,最大長度為 n 字節(jié),n 的取值范圍是 1 到 2000。常用于存儲加密數據或 Oracle 內部使用的數據。
2、LONG:存儲超長字符串數據
用于存儲超長字符串數據,最大長度為2GB。但在現代Oracle版本中,建議使用 CLOB 或 NCLOB 替代 LONG 類型。
CREATE TABLE example_table (
long_column LONG
);
定義一個 LONG 類型的列,用于存儲較長的字符數據,最大長度為 2GB,但使用時需要注意其性能和功能限制,因為它不支持很多字符操作函數。
3、LONG RAW:存儲可變長度的二進制數據
用于存儲可變長度的二進制數據,最大長度為2GB。同樣在現代Oracle版本中,建議使用 BLOB 替代 LONG RAW 類型。
CREATE TABLE example_table (
long_raw_column LONG RAW
);
存儲二進制數據,最大長度也是 2GB,適合存儲一些大型的二進制數據,但功能也比較受限,例如不支持很多二進制操作函數。
4、ROWID:用于唯一標識數據庫中的行
用于唯一標識數據庫中的行,是一個二進制數據類型,占用固定的10個字節(jié)。
CREATE TABLE example_table (
row_id_column ROWID
);
存儲數據庫中行的物理地址,用于唯一標識行,長度為 18 個字節(jié)。
5、BFILE:在數據庫外部存儲大型二進制對象文件
用于在數據庫外部存儲大型二進制對象文件,最大長度為4GB。Oracle可以讀取和查詢BFILE,但不能直接寫入。
CREATE TABLE example_table (
external_file_column BFILE
);
存儲指向外部文件的指針,文件存儲在數據庫服務器的文件系統中,而不是數據庫內部。
6、BOOLEAN:布爾類型
布爾類型,用于存儲真或假兩種狀態(tài)。
CREATE TABLE example_table (
boolean_column NUMBER(1) CHECK (boolean_column IN (0, 1))
);
由于 Oracle 沒有內置的 BOOLEAN 類型,使用 NUMBER(1) 并通過 CHECK 約束來模擬布爾值,其中 1 表示 TRUE,0 表示 FALSE。
7、XML:用于存儲XML文檔數據。
CREATE TABLE example_table (
xml_column XMLTYPE
);
存儲 XML 數據,使用 XMLTYPE 數據類型。
8、用戶自定義類型(User Defined Type)
允許用戶根據自己的需求定義新的數據類型。
六、數據類型選擇的注意事項
1、字符類型
- 當數據長度固定時,使用
CHAR。 - 當數據長度不固定時,使用
VARCHAR2以節(jié)省空間。 - 對于大量文本數據,使用
CLOB。
2、數值類型
- 對于整數,可使用
INTEGER或NUMBER。 - 對于小數,使用
NUMBER(p, s),根據精度需求確定p和s的值。
3、日期和時間類型
- 對于一般的日期和時間存儲,使用
DATE。 - 對于需要更高精度的日期和時間,使用
TIMESTAMP。
總結
到此這篇關于Oracle數據庫常見字段類型大全以及超詳細解析的文章就介紹到這了,更多相關Oracle數據庫字段類型大全內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Oracle監(jiān)聽器被優(yōu)化大師掛掉后的完美解決方法
這篇文章主要介紹了Oracle監(jiān)聽器被優(yōu)化大師掛掉后的完美解決方法,需要的朋友可以參考下2017-08-08
Oracle利用errorstack追蹤tomcat報錯ORA-00903 無效表名的問題
這篇文章主要介紹了Oracle利用errorstack追蹤tomcat報錯ORA-00903 無效表名,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06
部署Oracle 12c企業(yè)版數據庫( 安裝及使用)
這篇文章主要介紹了部署Oracle 12c企業(yè)版數據庫( 安裝及使用),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-11-11

