oracle的資料類型包括:1、字串類型,char和varchar2,可表達任何字串;2、數字類型,number(m,n),可表達任何數字;3、日期類型, date,存放日期和時間;4、clob類型,存放單字節字串或多位元組字串資料;5、blob類型,存放非結構化的二進位資料;6、rowid類型,存放表中記錄在資料庫中的實體位址;7、其它資料型態。
本文的操作環境: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中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 Linux新版
SublimeText3 Linux最新版

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

Atom編輯器mac版下載
最受歡迎的的開源編輯器