首頁 常見問題 oracle的資料型別有哪些

oracle的資料型別有哪些

Jun 05, 2023 am 11:40 AM
oracle oracle資料庫

oracle的資料類型包括:1、字串類型,char和varchar2,可表達任何字串;2、數字類型,number(m,n),可表達任何數字;3、日期類型, date,存放日期和時間;4、clob類型,存放單字節字串或多位元組字串資料;5、blob類型,存放非結構化的二進位資料;6、rowid類型,存放表中記錄在資料庫中的實體位址;7、其它資料型態。

oracle的資料型別有哪些

本文的操作環境:Windows10系統、Oracle 19c版本、dell g3電腦。

Oracle的資料型別有以下幾種:

1、字串型別:char和varchar2,可表達任何字串。

2、數字類型:number(m,n),可表達任何數字,m是數字的總長度,n是小數點後的位數,如果n為0則表示是整數。

3、日期類型:date,存放日期和時間,包括年(yyyy)、月(mm)、日(dd)、小時(hh24)、分(mi)、秒(ss)。

4、clob類型,存放單字節字串或多位元組字串數據,如文字檔、xml檔。

5、blob類型,存放非結構化的二進位數據,如圖片、音訊、視訊、office文件等。

6、rowid類型,存放表中記錄在資料庫中的實體位址。

7、其它資料型態。

一、字串型別

在C/C 語言中用,字串用雙引號包含起來,在Oracle資料庫中,字串用單引號包含起來的,如下:

'www.freecplus.net'

'碼農有道'

'一隻傻傻鳥'

1 、固定長度的字串

固定長度字串用char表示,當存入資料內容的長度不夠時,Oracle會在資料內容後面自動填充空格以達到其固定的長度,例如char(10 )總是包含10位元組資訊。

char欄位最多可以儲存2000位元組的內容。

2、變長度的字串

變長度字串用varchar2表示,與char型別不同,Oracle不會在資料內容後面填入任何內容。

varchar2欄位最多可以儲存4000位元組的內容,從Oracle 12c版本開始,可以儲存32767位元組的內容。

3、char和varchar2的比較

char(10),如果存入'freecplus',在資料庫中將儲存'freecplus ',在最後補了一個空格。

varchar2(10),如果存入'freecplus',在資料庫中將儲存'freecplus',什麼也不會補。

在實際應用中,我們並不希望Oracle為字串後面補空格,那麼是不是可以棄用char型別呢?不是,我們一般用char類型存放固定大小的資料內容,例如身分證號碼,固定是18位的,用char(18)就非常合適,能用varchar2(18)可以存放身分證號碼嗎?當然可以,但是,char(18)的效率比varchar2(18)的效率高很多。

總結一下,如果確定、肯定、一定、保證存入字串的長度是固定不變的,例如性別、身分證號碼、手機號碼,用char類型,否則用varchar2類型,例如姓名、學歷、地址、興趣愛好等,char雖然死板,但效率高。

4、漢字的儲存

每個漢字佔多少位元組要看具體的編碼方式,如UTF-8(1-3位元組)、GB2312(2位元組)、 GBK(2位元組)、GB18030(1、2、4位元組)。

二、數字型別

Oracle用number型別來存放數字,該型別能儲存精度最多達38位,遠高於程式語言中常規的long int和double型別。

number( m,n),m表示總長度,n表示小數位的精度,如果存入的資料的小數位的精度超過了n,則取四捨五入後的值。

例如:number(10,3),10是總長度,3是小數後的位數,如123.456。

如果存入123.4567,實際際將是123.457。

如果存入12345679.899,總長度超出了10,Oracle將提示錯誤。

如果打算存入整數,用number(m)就可以了,m表示可以存入資料的最大位數。

三、日期類型

Oracle採用date類型表示日期和時間,這是一個7位元組的固定寬度的資料類型,有7個屬性,包括:世紀、世紀中哪一年、月份、月中的哪一天、小時、分鐘、秒。

對程式語言來說,日期和時間是用字串來顯示和書寫的,Oracle提供了to_date和to_char兩個函數在date類型和字串類型之間轉換。

例如:

insert into T_GIRL(name,birthday) values('西施',to_date('2000-01-01 01:12:35','yyyy-mm-dd hh24:mi:ss'));
select name,to_char(birthday,'yyyy-mm-dd hh24:mi:ss') from T_GIRL where name='西施';
登入後複製

四、clob和blob類型

clob類型,變長的字串大對象,最長可達4GB, clob可以儲存單字節字串或多字節字串數據,clob被認為是一個更大的字串。當資料庫的字元集發生轉換時,clob類型會受到影響。

blob類型,變長的二進位大對象,最長可達4GB,blob主要用於保存帶格式的非結構化數據,如圖片、音訊、視訊、Office文件等。當資料庫的字元集發生轉換時,blob類型不會受到影響,Oracle資料庫不關心存放的是什麼內容。

五、rowid類型

Oracle資料庫中每個表的每行記錄都有一個儲存的實體位置,即表的rowid偽列,採用rowid作為where條件的存取效率最高。

rowid的存取效率雖然是最高的,但是,在實際應用中要謹慎,需要注意兩個問題:

1)rowid存放的是表記錄的物理位置,在數據整理、資料備份和遷移的時候,記錄的實體位置會改變;

2)rowid是Oracle資料庫專有的資料類型,與其它的資料庫不相容。

六、其它資料類型

在在上面的內容中,介紹了Oracle最常用的資料類型,可以滿足99%以上的應用場景。

Oracle提供了22不同的SQL資料型,其它的資料型別不一定實用,但我還是把它們全部列出來,大家了解一下,不必深入研究。二十年來,其它的資料類型我從未使用過。

char:定長字串,會用空格填滿來達到最大長度。非null的char(10)包含10個位元組資訊。 char欄位最多可以儲存2000個位元組資訊。

nchar:包含unicode格式資料的定長字串。 nchar欄位最多可儲存2000位元組的資訊。

varchar2:是varchar的同義詞。這是一個變長字串,與char類型不同,它不會用空格將欄位或變數填入最大長度。 varchar(10)可能包含0~10位元組的信息,最多可儲存4000位元組資訊。從12c起,可以儲存32767位元組資訊。

nvarchar2:包含unicode格式資料的變長字串。最多可儲存4000位元組資訊。從12c起,可以儲存32767位元組資訊。

raw:一種變長二進位資料類型,採用這種資料類型所儲存的資料不會發生字元集轉換。

number:能儲存精度最多高達38位元的數字。這種類型的資料會以變長方式來存儲,長度在0~22位元組。

binary_float:32位元單精度浮點數,可以支援至少6位元精度,佔用磁碟上5個位元組的儲存空間。

binary_double:64位元雙精度浮點數,可以支援至少15位元精度,佔用磁碟上9個位元組的儲存空間。

long:這種類型能儲存最多2GB的字元資料

long raw:long raw類型能儲存多達2GB的二進位資訊

date:這是一個7位元組的定寬日期/時間資料類型,其中包含7個屬性:世紀、世紀中的哪一年、月份、月中的哪一天、小時、分鐘、秒。

timestamp:這是一個7位元組或11位元組的定寬日期/時間資料類型,它包含小數秒。

timestamp with time zone:這是一個13位元組的timestamp,提供了時區支援。

timestamp with local time zone:這是一個7位元組或11位元組的定寬日期/時間資料類型,在資料的插入和讀取時會發生時區轉換。

interval year to month:這是一個5位元組的定寬資料類型,用於儲存一個時段。

interval day to second:這是一個11位元組的定寬資料類型,用來儲存一個時段。將時段儲存為天/小時/分鐘/秒數,還可以有9位小數秒。

blob:這種類型能夠儲存最多4GB的資料。

clob:這種類型能夠儲存最多4GB的資料。當字元集發生轉換時,這種類型會受到影響。

nclob:這種類型能夠儲存最多4GB的資料。當字元集發生轉換時,這種類型會受到影響。

bfile:這種資料類型可以在資料庫列中儲存一個oracle目錄物件和一個檔名,我們可以透過它來讀取這個檔案。

rowid:實際上是資料庫表中行的位址,它有10位元組長。

urowid:是一個通用的rowid,沒有固定的rowid的表。

以上是oracle的資料型別有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

oracle打不開怎麼辦 oracle打不開怎麼辦 Apr 11, 2025 pm 10:06 PM

Oracle 打不開的解決辦法包括:1. 啟動數據庫服務;2. 啟動監聽器;3. 檢查端口衝突;4. 正確設置環境變量;5. 確保防火牆或防病毒軟件未阻止連接;6. 檢查服務器是否已關閉;7. 使用 RMAN 恢復損壞的文件;8. 檢查 TNS 服務名稱是否正確;9. 檢查網絡連接;10. 重新安裝 Oracle 軟件。

oracle游標關閉怎麼解決 oracle游標關閉怎麼解決 Apr 11, 2025 pm 10:18 PM

解決 Oracle 游標關閉問題的方法包括:使用 CLOSE 語句顯式關閉游標。在 FOR UPDATE 子句中聲明游標,使其在作用域結束後自動關閉。在 USING 子句中聲明游標,使其在關聯的 PL/SQL 變量關閉時自動關閉。使用異常處理確保在任何異常情況下關閉游標。使用連接池自動關閉游標。禁用自動提交,延遲游標關閉。

oracle怎麼循環創建游標 oracle怎麼循環創建游標 Apr 12, 2025 am 06:18 AM

Oracle 中,FOR LOOP 循環可動態創建游標, 步驟為:1. 定義游標類型;2. 創建循環;3. 動態創建游標;4. 執行游標;5. 關閉游標。示例:可循環創建游標,顯示前 10 名員工姓名和工資。

oracle數據庫怎麼停止 oracle數據庫怎麼停止 Apr 12, 2025 am 06:12 AM

要停止 Oracle 數據庫,請執行以下步驟:1. 連接到數據庫;2. 優雅關機數據庫(shutdown immediate);3. 完全關機數據庫(shutdown abort)。

oracle數據庫如何分頁 oracle數據庫如何分頁 Apr 11, 2025 pm 08:42 PM

Oracle 數據庫分頁利用 ROWNUM 偽列或 FETCH 語句實現:ROWNUM 偽列用於通過行號過濾結果,適用於復雜查詢。 FETCH 語句用於獲取指定數量的第一行,適用於簡單查詢。

HDFS配置CentOS需要哪些步驟 HDFS配置CentOS需要哪些步驟 Apr 14, 2025 pm 06:42 PM

在CentOS系統上搭建Hadoop分佈式文件系統(HDFS)需要多個步驟,本文提供一個簡要的配置指南。一、前期準備安裝JDK:在所有節點上安裝JavaDevelopmentKit(JDK),版本需與Hadoop兼容。可從Oracle官網下載安裝包。環境變量配置:編輯/etc/profile文件,設置Java和Hadoop的環境變量,使系統能夠找到JDK和Hadoop的安裝路徑。二、安全配置:SSH免密登錄生成SSH密鑰:在每個節點上使用ssh-keygen命令

oracle動態sql怎麼創建 oracle動態sql怎麼創建 Apr 12, 2025 am 06:06 AM

可以通過使用 Oracle 的動態 SQL 來根據運行時輸入創建和執行 SQL 語句。步驟包括:準備一個空字符串變量來存儲動態生成的 SQL 語句。使用 EXECUTE IMMEDIATE 或 PREPARE 語句編譯和執行動態 SQL 語句。使用 bind 變量傳遞用戶輸入或其他動態值給動態 SQL。使用 EXECUTE IMMEDIATE 或 EXECUTE 執行動態 SQL 語句。

oracle日誌寫滿怎麼辦 oracle日誌寫滿怎麼辦 Apr 12, 2025 am 06:09 AM

Oracle 日誌文件寫滿時,可採用以下解決方案:1)清理舊日誌文件;2)增加日誌文件大小;3)增加日誌文件組;4)設置自動日誌管理;5)重新初始化數據庫。在實施任何解決方案前,建議備份數據庫以防數據丟失。