OCP認證之Oracle的資料型別

2021-07-25 14:51:54 字數 3968 閱讀 3088

1.四種基本的常用資料型別

1.1字元型

char 固定長度,最長2000個

varchar2 可變長字元,最長4000個,最小值是1

nchar/nvarchar2 nchar/nvarchar2型別的列使用國家字符集

raw/long raw 固定/可變長度的二進位制資料長度,最大2g,可存放多**影象聲音等(老型別,逐步淘汰)

long 可變長的字串型別,最長2g,long具有varchar2 列的特性,乙個表最多乙個long列(老型別,逐步淘汰)

1.2數值型

number(p,s) 實數型,以可變長度的內部格式來儲存數字。這個內部格式精度可以高達38位。

int 整數型,number的字型別,範圍同上

1.3日期型

date 日期的普通刑事,表示精度只能到秒級

timestamp 日期的擴充套件形式,表示精度可達秒後小數點9位(10億分之1秒)

timestamp with timezone 帶時區

timestamp with local timezone 時區轉換成本地日期

系統安裝後,預設日期格式是dd-mon-rr,rr和yy都是表示兩位年份,但rr是有世紀認知的,它將制定日期的年份和當前年份比較後確定年份是上個世紀還是本世紀(如下:)

當前年份 指定日期    rr格式   yy格式

-----------------------------------

1995 27-oct-95 1995 1995

1995 27-oct-17 2017 1917

2001 27-oct-17 2017 2017

2013 27-oct-95 1995 2095

1.4lob型:

大物件是10g引入的,在11g又重新定義,在乙個表的字段裡儲存大容量資料,所有大物件最大都可能達到4g.

clob,nclob,blob都是內部的lob型別,沒有long只能有一列的限制

儲存或電影使用blob最好、如果是**則使用clob最好。

雖然long raw也可以使用,但long是oracle將要廢棄的型別,因此建議用lob。

說將要廢棄,但還沒有完全廢棄,比如oracle 11g裡的重要檢視dba_views,對於text(檢視定義)仍然沿用了long型別。

oracle 11g重新設計了大物件,推出securefile lobs的概念,相關的引數是db_securefile,採用 securefile lobs 的前提條件是 11g 以上版本,assm 管理等,符合這些條件的 basicfile lobs 也可以轉換成 securefile lobs。較之過去的 basicfile lobs,securefile lobs 有幾項改進:

1)壓縮,2)去重,3)加密。

當 create table 定義 lob 列時,也可以使用 lob_storage_clause 指定 securefile lobs 或basicfile lobs而 lob 的資料操作則使用 oracle 提供的 dbms_lob 包,通過編寫 pl/sql 塊完成 lob 資料的管理。

2.資料型別的轉換

隱性型別轉換和顯性型別轉換
2.1 隱性型別轉換:

是指oracle自動完成的型別轉換。在一些帶有明顯意圖的字面值上,可以由oracle自主判段進行資料型別的轉換。

--empno本來是數值型的,這裡字元『7788』隱性轉成數值7788

sql> select empno,ename from emp where empno='7788';

empno ename

----- ----------

7788 scott

--將date型隱轉成字元型後計算長度

sql> select length(sysdate) from dual;

length(sysdate)

---------------

9--將字元型『12.5』隱轉成數字型再求和

sql>select '12.5'+11 from dual;

'12.5'+11

----------

23.5

--將數字型11隱轉成字元與『12.5』合併,其結果再隱轉成數字型與10求和

sql> select 10+('12.5'||11) from dual;

10+('12.5'||11)

---------------

22.511

2.2顯性型別轉換

顯性型別轉換是強制完成型別轉換,轉換函式形式有三種:

* to_char

* to_date

* to_number

2.2.1日期轉字元

sql>  select ename, hiredate, to_char(hiredate, 'dd-mon-yy') month_hired from emp

2where ename='scott';

ename hiredate month_hired

---------- ----------- --------------

scott 1987/4/19

19-4月 -87

--fm 壓縮空格或左邊的『0』

sql> select ename, hiredate, to_char(hiredate, 'dd-mon-yy') month_hired from emp

where ename='scott';

ename hiredate month_hired

---------- ------------------- --------------

scott 1987-04-19

00:00:00

19-4 月 -87

其實 dd-mm-yy 是比較糟糕的一種格式,因為當日期中天數小於 12 時,dd-mm-yy 和 mm-dd-

yy 容易造成混亂。

2.2.2數字轉字元

9表示數字,l本地化貨幣字元

sql> select ename,to_char(sal,'l99,999.99') salary from emp where ename = 'scott';

ename salary

---------- --------------------

scott ¥3,000.00

2.2.3字元轉日期
sql> select to_date('1983-11-12','yyyy-mm-dd') tmp_date from dual;

tmp_date

-----------

1983/11/12

2.2.4字元轉數字
sql> select to_number('$123.45','$9999.99') result

from dual;

result

----------

123.45

使用to_number時如果使用較短的格式掩碼轉換數字,就會返回錯誤。不要混淆to_number和to_char轉換例如:

sql> select to_number('$123.46','$9999.9') from dual;

select to_number('$123.46','$9999.9') from dual

ora-01722: 無效數字

sql> select to_char(123.46,'999.9') from dual;

to_char(123.46,'999.9')

-----------------------

123.5

ORACLE學習經驗之我的OCP認證之路

過了oca ocp 後一直都想總結下自己學習的一些經驗但一直都沒動起筆來。今天就簡單的談一下我的oracle 學習之路。話說回到2006年,我在乙個計算機培訓學校裡接受了oracle資料庫的培訓,從此開始了我的oracle學習生涯。在眾多的計算機領域我為什麼選擇了oracle 之所以我選擇oracl...

ocp認證考試報名 Oracle認證證書怎麼考?

oracle認證是由oracle公司頒布並實施的一項權威的服務與支援。獲得oracle認證,證明您在行業內的專業資格,可以從事oracle資料庫伺服器的資料操作和管理等工作,通過對oracle產品的熟練應用,您將獲得業界普遍的認可,從而使個人或企業更具競爭實力。oracle認證證書怎麼考 對於想要獲...

OCP認證考試指南(5) 管理Oracle程序

1 啟動sql plus 啟動用sql plus都會啟動了,這種方式合適正常的終端使用者使用,作為管理員我們有另一種變化形式nolog開關。copy to clipboard view code bash sqlplus nolog 2 啟動isql plus 由於不是主要學這個,前一篇也提過這個了...