Oracle中常用的資料型別
整理自《OCP認證指南》
001
當建表時,每一列都分配一種資料型別,它決定了可以插入該列的值的特性。這些資料型別也用來指定PL/SQL過程和函式的引數的特性。在選擇資料型別時,必須考慮要儲存的資料和要在它上面執行的操作。空間也是需要考慮的事項:有些資料型別是固定長度的,不管其中是什麼資料,都佔用相同的位元組數;有些資料型別的長度則是可變的。如果沒有填充列,那麼Oracle根本不會給它提供任何空間。如果後面更新行來填充列,那麼行會變得更大,而不管資料型別是固定長度還是可變長度。
002
下面的資料型別適合於字母數字資料:
varchar2 可變長度的字元資料,從1B到4KB。資料儲存在資料庫字符集中。
nvarchar2 和varchar2一樣,但資料儲存在國家語言字符集(它是許可的unicode字符集之一)中。
char 固定長度的字元資料,從1B到2KB,它儲存在資料庫字符集中。如果資料不夠列的長度,就會用空格進行填充。
注意:為了符合ISO/ANSI,可以指定varchar資料型別,但這種型別的所有列都會自動轉換為varchar2。
003
下面的資料型別適合於數字資料,它們都是可變長度的:
number 數字資料,可以指定它的精度和小數位數。精度範圍是1-38,小數位數範圍是從-84到127.
float 這是一個ANSI資料型別,精度為126位二進位制、38位十進位制的浮點數。Oracle還提供binary_float和binary_double作為備選。
integer 相當於number,小數位數為0.
004 下面的資料型別適用於日期和時間資料,它們都是固定長度的:
date 它的長度為0(如果列為空)或者7個位元組。所有date資料都包含世紀、年、月、日、時、分和秒。其有效範圍為公元前4712年1月1日至公元9999年12月31日。
timestamp 如果列為空,那麼它的長度為0,或者達到11位元組(這取決於指定的精度)。與date類似,但對秒而言,其精度最多為9位,預設為6位。
timestamp with timezone 和timestamp一樣,但在儲存資料時可以指定時區。根據精度,長度可能達到13個位元組。該資料型別讓Oracle透過將兩個時區規範化為UTC來確定它們之間的差,即使這兩個時間在不同的時區。
timestamp with local timezone 和timestamp一樣,但資料在儲存時被規範化為資料庫時區。當檢索時,將其規範化為選擇它的使用者程式所在的時區。
interval year to month 用於記錄兩個date或timestamp之間以年和月為單位的時間間隔。
interval day to second 用於記錄兩個date或timestamp之間以天和秒為單位的時間間隔。
005 下面是大物件資料型別:
CLOB 儲存在資料庫字符集中的字元資料,大小沒有限制:4GB乘以資料庫塊的大小。
NCLOB 和CLOB一樣,但資料儲存在可選的國家語言字符集(它是許可的unicode字符集之一)中。
BLOB 和CLOB一樣,但二進位制資料不會被Oracle Net執行字符集轉換。
BFILE 定位器,它指向儲存在資料庫伺服器的作業系統上的檔案。檔案的大小限制為4GB。
LONG 資料庫字符集中的字元資料,大小可達到2GB。LONG的所有功能(甚至更多)都由CLOB提供,不能在現代資料庫中使用LONG,如果資料庫有這種型別的列,應該將它們轉換為CLOB。在表中只能有一個LONG列。
LONG RAW 和LONG一樣,但Oracle Net不會轉換二進位制資料。所有LONG RAW列都應該轉換為BLOB。
006 下面是RAW和ROWID資料型別:
RAW 可變長度的二進位制資料,從1B到4KB。和char和varchar2資料型別不同,在select時,Oracle Net不會將RAW資料從資料庫的字符集轉換為使用者程式的字符集,或者在insert時進行反向轉換。
ROWID 以64為基數編碼的值,它是一個指向表中行的位置的指標。它裡面是實體地址。ROWID是Oracle專有的資料型別,除非特別選擇,否則不可見。
007 補充
varchar2資料型別必須用一個數來限定,這個數表示列的最大長度。如果插入列的值小於這個值,那麼沒有問題:這個值只佔用必要的空間。如果這個值比最大值還要長,那麼insert會出現錯誤。如果將值更新為更長或更短的值,那麼列的長度(和行本身)也會相應改變。如果沒有輸入,或者更新為Null,那麼它根本不會佔用空間。
可以使用精度和小數位來限定number資料型別。精度設定數中的最大位數,小數位數表示小數點右邊有多少位。如果小數位數是負數,那麼會用0取代插入的數的最後幾位,它不佔用精度指定的位數。如果位數超過精度,那麼會出現錯誤;如果它在精度之內但在小數位之外,那麼數字會舍入為最小數位內最接近的值。
date資料型別總是包括世紀、年、月、日、時、分、秒——即使在插入時沒有指定所有這些元素。必須指定年、月、日。如果省略時、分、秒,那麼它們預設為午夜。
001
當建表時,每一列都分配一種資料型別,它決定了可以插入該列的值的特性。這些資料型別也用來指定PL/SQL過程和函式的引數的特性。在選擇資料型別時,必須考慮要儲存的資料和要在它上面執行的操作。空間也是需要考慮的事項:有些資料型別是固定長度的,不管其中是什麼資料,都佔用相同的位元組數;有些資料型別的長度則是可變的。如果沒有填充列,那麼Oracle根本不會給它提供任何空間。如果後面更新行來填充列,那麼行會變得更大,而不管資料型別是固定長度還是可變長度。
002
下面的資料型別適合於字母數字資料:
varchar2 可變長度的字元資料,從1B到4KB。資料儲存在資料庫字符集中。
nvarchar2 和varchar2一樣,但資料儲存在國家語言字符集(它是許可的unicode字符集之一)中。
char 固定長度的字元資料,從1B到2KB,它儲存在資料庫字符集中。如果資料不夠列的長度,就會用空格進行填充。
注意:為了符合ISO/ANSI,可以指定varchar資料型別,但這種型別的所有列都會自動轉換為varchar2。
003
下面的資料型別適合於數字資料,它們都是可變長度的:
number 數字資料,可以指定它的精度和小數位數。精度範圍是1-38,小數位數範圍是從-84到127.
float 這是一個ANSI資料型別,精度為126位二進位制、38位十進位制的浮點數。Oracle還提供binary_float和binary_double作為備選。
integer 相當於number,小數位數為0.
004 下面的資料型別適用於日期和時間資料,它們都是固定長度的:
date 它的長度為0(如果列為空)或者7個位元組。所有date資料都包含世紀、年、月、日、時、分和秒。其有效範圍為公元前4712年1月1日至公元9999年12月31日。
timestamp 如果列為空,那麼它的長度為0,或者達到11位元組(這取決於指定的精度)。與date類似,但對秒而言,其精度最多為9位,預設為6位。
timestamp with timezone 和timestamp一樣,但在儲存資料時可以指定時區。根據精度,長度可能達到13個位元組。該資料型別讓Oracle透過將兩個時區規範化為UTC來確定它們之間的差,即使這兩個時間在不同的時區。
timestamp with local timezone 和timestamp一樣,但資料在儲存時被規範化為資料庫時區。當檢索時,將其規範化為選擇它的使用者程式所在的時區。
interval year to month 用於記錄兩個date或timestamp之間以年和月為單位的時間間隔。
interval day to second 用於記錄兩個date或timestamp之間以天和秒為單位的時間間隔。
005 下面是大物件資料型別:
CLOB 儲存在資料庫字符集中的字元資料,大小沒有限制:4GB乘以資料庫塊的大小。
NCLOB 和CLOB一樣,但資料儲存在可選的國家語言字符集(它是許可的unicode字符集之一)中。
BLOB 和CLOB一樣,但二進位制資料不會被Oracle Net執行字符集轉換。
BFILE 定位器,它指向儲存在資料庫伺服器的作業系統上的檔案。檔案的大小限制為4GB。
LONG 資料庫字符集中的字元資料,大小可達到2GB。LONG的所有功能(甚至更多)都由CLOB提供,不能在現代資料庫中使用LONG,如果資料庫有這種型別的列,應該將它們轉換為CLOB。在表中只能有一個LONG列。
LONG RAW 和LONG一樣,但Oracle Net不會轉換二進位制資料。所有LONG RAW列都應該轉換為BLOB。
006 下面是RAW和ROWID資料型別:
RAW 可變長度的二進位制資料,從1B到4KB。和char和varchar2資料型別不同,在select時,Oracle Net不會將RAW資料從資料庫的字符集轉換為使用者程式的字符集,或者在insert時進行反向轉換。
ROWID 以64為基數編碼的值,它是一個指向表中行的位置的指標。它裡面是實體地址。ROWID是Oracle專有的資料型別,除非特別選擇,否則不可見。
007 補充
varchar2資料型別必須用一個數來限定,這個數表示列的最大長度。如果插入列的值小於這個值,那麼沒有問題:這個值只佔用必要的空間。如果這個值比最大值還要長,那麼insert會出現錯誤。如果將值更新為更長或更短的值,那麼列的長度(和行本身)也會相應改變。如果沒有輸入,或者更新為Null,那麼它根本不會佔用空間。
可以使用精度和小數位來限定number資料型別。精度設定數中的最大位數,小數位數表示小數點右邊有多少位。如果小數位數是負數,那麼會用0取代插入的數的最後幾位,它不佔用精度指定的位數。如果位數超過精度,那麼會出現錯誤;如果它在精度之內但在小數位之外,那麼數字會舍入為最小數位內最接近的值。
date資料型別總是包括世紀、年、月、日、時、分、秒——即使在插入時沒有指定所有這些元素。必須指定年、月、日。如果省略時、分、秒,那麼它們預設為午夜。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29067253/viewspace-2060362/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 資料型別Oracle資料型別
- Python常用的資料型別Python資料型別
- mysql 常用的資料型別MySql資料型別
- SQLServer的常用資料型別SQLServer資料型別
- Oracle的number資料型別Oracle資料型別
- 2.1 常用資料型別資料型別
- 【轉】ORACLE資料型別Oracle資料型別
- Oracle anydata資料型別Oracle資料型別
- ORACLE NUMBER資料型別Oracle資料型別
- Oracle資料型別對應Java型別Oracle資料型別Java
- MySQL基礎之----資料型別篇(常用資料型別)MySql資料型別
- Oracle OCP(19):資料型別Oracle資料型別
- 6. Oracle開發和應用——6.2. 常用資料型別Oracle資料型別
- Java中的基本資料型別與引用資料型別Java資料型別
- Python程式設計常用的資料型別Python程式設計資料型別
- Oracle字串資料型別簡述Oracle字串資料型別
- Java中的資料型別Java資料型別
- javascript中的資料型別JavaScript資料型別
- JAVA中基本資料型別和引用資料型別Java資料型別
- Python常用的組合資料型別彙總Python資料型別
- JS中其他資料型別轉為number資料型別的方法JS資料型別
- [20191219]oracle timestamp資料型別的儲存.txtOracle資料型別
- Oracle和sqlserver資料型別對應OracleSQLServer資料型別
- Oracle基本資料型別儲存格式淺析——RAW型別Oracle資料型別
- pandas中的series資料型別資料型別
- Hive中的集合資料型別Hive資料型別
- Redis 資料型別及常用命令Redis資料型別
- 資料型別與函式索引-Oracle篇資料型別函式索引Oracle
- JavaScript中的資料型別-儲存差別JavaScript資料型別
- 【OpenCV教程】OpenCV中的資料型別OpenCV資料型別
- PHP7中的資料型別PHP資料型別
- MySQL中資料型別的驗證MySql資料型別
- MySQL與Java常用資料型別的對應關係MySqlJava資料型別
- oracle資料庫事務transaction 不同的鎖lock型別Oracle資料庫型別
- Oracle BLOB型別的資料如何檢視和下載?Oracle型別
- [20241009]oracle timestamp with time zone資料型別的儲存.txtOracle資料型別
- js資料型別之基本資料型別和引用資料型別JS資料型別
- redis常用資料型別操作命令集錦Redis資料型別
- openGauss社群入門(openGauss-常用資料型別)資料型別