oracle怎么算入門(mén) oracle教程入門(mén)精通

Oracle數(shù)據(jù)庫(kù)入門(mén)之函數(shù)/類(lèi)型

Oracle主要數(shù)據(jù)類(lèi)型

成都創(chuàng)新互聯(lián)公司專(zhuān)注于金壇網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供金壇營(yíng)銷(xiāo)型網(wǎng)站建設(shè),金壇網(wǎng)站制作、金壇網(wǎng)頁(yè)設(shè)計(jì)、金壇網(wǎng)站官網(wǎng)定制、小程序開(kāi)發(fā)服務(wù),打造金壇網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供金壇網(wǎng)站排名全網(wǎng)營(yíng)銷(xiāo)落地服務(wù)。

概述 各種數(shù)據(jù)庫(kù)所支持的數(shù)據(jù)類(lèi)型大同小異 與標(biāo)準(zhǔn)SQL語(yǔ)言中的數(shù)據(jù)類(lèi)型可能略有出入

類(lèi)型 varchar 可以在聲明字段時(shí)設(shè)置它的長(zhǎng)度上限 而且使用它之后 就不必再考慮空格的存在

若插入的字符串的長(zhǎng)度低于長(zhǎng)度上限 系統(tǒng)就會(huì)自動(dòng)將其縮減為字符串的真實(shí)長(zhǎng)度

number(m n) 既可以用來(lái)表示整型 也可以表示浮點(diǎn)型 但m不可以超過(guò) 如果n為 或者省略n 就代表它是整數(shù)

date 用來(lái)存放日期和時(shí)間

blob 通常是在應(yīng)用程序中使用到它 而不是在數(shù)據(jù)庫(kù)中利用SQL指令直接使用

比如通過(guò)JDBC技術(shù)訪問(wèn)數(shù)據(jù)庫(kù) 讀寫(xiě)blob或clob類(lèi)型的字段 即讀寫(xiě)長(zhǎng)的字符串信息等等

char 它是一種定長(zhǎng)的字符類(lèi)型 在Oracle數(shù)據(jù)庫(kù)不區(qū)分字符和字符串 它們被統(tǒng)稱(chēng)為字符型或文本型

所謂定長(zhǎng)的字符型是指 插入的字符串若沒(méi)有達(dá)到約定的字段長(zhǎng)度 系統(tǒng)就會(huì)在字符串尾部自動(dòng)補(bǔ)空格

同樣 讀取時(shí)的字段長(zhǎng)度永遠(yuǎn)是聲明時(shí)的字段長(zhǎng)度 而且在比較字符串內(nèi)容的時(shí)候 也需要考慮到空格的過(guò)濾

nchar 它也是定長(zhǎng)的字符串類(lèi)型 它是SQL語(yǔ)言標(biāo)準(zhǔn)中規(guī)定的 通常采用Unicode編碼來(lái)保存不同國(guó)家或不同語(yǔ)言的字符

varchar SQL標(biāo)準(zhǔn)在定義varchar時(shí)并沒(méi)有保證能夠向前和向后兼容 即有可能隨著語(yǔ)言標(biāo)準(zhǔn)的修改而產(chǎn)生不兼容的問(wèn)題

所以O(shè)racle定義了同varchar型類(lèi)似的varchar 型 就是為了在Oracle以后的版本中 都永遠(yuǎn)支持varchar 類(lèi)型

Oracle這么做就是為了確保此類(lèi)型向前后兼容 以達(dá)到能夠在Oracle系列數(shù)據(jù)庫(kù)中進(jìn)行數(shù)據(jù)的導(dǎo)入和導(dǎo)出的目的

long 它和varchar 的差別在于 它不支持對(duì)字符串內(nèi)容進(jìn)行檢索 即查詢(xún)時(shí)不可以對(duì)它的內(nèi)容進(jìn)行條件查詢(xún)

而varchar 和char nchar型等等都可以在查詢(xún)的時(shí)候直接檢索字符串的內(nèi)容

補(bǔ)充 select * from v$nls_parameters;數(shù)據(jù)庫(kù)的配置信息以數(shù)據(jù)表的形式存在 通常稱(chēng)其為關(guān)于數(shù)據(jù)的數(shù)據(jù)或數(shù)據(jù)字典

實(shí)際上它查詢(xún)的是數(shù)據(jù)字典中的一個(gè)視圖 其中NLS_CHARACTERSET對(duì)應(yīng)的是當(dāng)前的數(shù)據(jù)庫(kù)字符集

缺省均為使用數(shù)據(jù)庫(kù)字符集 教程中使用的是安裝時(shí)默認(rèn)的ZHS GBK字符集 即漢字占 個(gè)字節(jié) 英文占 個(gè)字節(jié)

而NLS_NCHAR_CHARACTERSET對(duì)應(yīng)的是nchar或nvarchar 類(lèi)型所采用的輔助字符集 即AL UTF 字符集

實(shí)際上AL UTF 是一種 位定長(zhǎng)的Unicode編碼的字符集 而數(shù)據(jù)庫(kù)字符集以及這種國(guó)家字符集都可以修改

但數(shù)據(jù)庫(kù)字符集修改后可能會(huì)面臨很?chē)?yán)重的后果 除非是數(shù)據(jù)庫(kù)管理員 普通用戶(hù)不必對(duì)這方面進(jìn)行深究

數(shù)據(jù)庫(kù)中的數(shù)據(jù)導(dǎo)入導(dǎo)出的時(shí)候 如果源數(shù)據(jù)庫(kù)和目標(biāo)數(shù)據(jù)庫(kù)所采用的字符集不同 也很容易出問(wèn)題

函數(shù)

概述 函數(shù)可以認(rèn)為是能夠完成相對(duì)獨(dú)立的功能的一段代碼的集合 Oracle函數(shù)相當(dāng)于其它語(yǔ)言中的方法或過(guò)程

Oracle函數(shù)可以分為單行函數(shù)和多行函數(shù)兩大類(lèi) Oracle函數(shù)都是有返回值的

所謂的單行函數(shù)是針對(duì)查詢(xún)結(jié)果中的每一行都起作用 都會(huì)返回一個(gè)結(jié)果

多行函數(shù)也就是所謂分組函數(shù) 是針對(duì)一組查詢(xún)的記錄 或者說(shuō)多行 返回一個(gè)結(jié)果

單行 操作數(shù)據(jù)項(xiàng) 接受參數(shù)并返回處理結(jié)果 對(duì)每一返回行均起作用 可修改數(shù)據(jù)類(lèi)型 可嵌套使用

單行函數(shù)分為字符函數(shù) 數(shù)值函數(shù) 日期函數(shù) 轉(zhuǎn)換函數(shù) 通用函數(shù)

多行 也稱(chēng)分組函數(shù) 即對(duì)一組數(shù)據(jù)進(jìn)行運(yùn)算 針對(duì)一組數(shù)據(jù)(多行記錄)只能返回一個(gè)結(jié)果

多行函數(shù)包括avg() count() max() min() sum()等

比如select avg(sal) max(sal) min(sal) sum(sal) max(hiredate) min(hiredate) from emp;

續(xù)一 使用Oracle的系統(tǒng)函數(shù)中的單行函數(shù)可實(shí)現(xiàn)諸多功能 如對(duì)數(shù)據(jù)進(jìn)行計(jì)算 控制數(shù)據(jù)的輸出格式

設(shè)置和改變?nèi)掌诘娘@示格式 進(jìn)行數(shù)據(jù)類(lèi)型轉(zhuǎn)換 使用NVL等函數(shù)處理空值 實(shí)現(xiàn)IF THEN ELSE多路分支邏輯等等

續(xù)二 轉(zhuǎn)換函數(shù)不會(huì)改變表中數(shù)據(jù)的字段類(lèi)型和值 它就相當(dāng)于將數(shù)據(jù)復(fù)制了一份 所轉(zhuǎn)換的是復(fù)制之后的數(shù)據(jù)

數(shù)據(jù)類(lèi)型轉(zhuǎn)換包括隱含轉(zhuǎn)換和顯式轉(zhuǎn)換兩種方式 建議使用顯式的數(shù)據(jù)類(lèi)型轉(zhuǎn)換 確保SQL語(yǔ)句的可靠性

續(xù)三 通用函數(shù)適用于包括空值在內(nèi)的任何類(lèi)型數(shù)據(jù) 通常用來(lái)實(shí)現(xiàn)空值的處理 空值的過(guò)濾或設(shè)置缺省值等

通用函數(shù)包括nvl() nvl () nullif() coalesce() case表達(dá)式 decode()等

嵌套 單行函數(shù)可以嵌套使用 嵌套層次無(wú)限制 分組函數(shù)最多可嵌套兩層 嵌套函數(shù)的執(zhí)行順序是由內(nèi)到外

單行比如select empno lpad(initcap(trim(ename)) ) 姓名 job sal from emp;

多行比如select max(avg(sal)) from emp group by deptno; 其實(shí)這里再使用分組函數(shù)就沒(méi)有意義了

說(shuō)明 通常數(shù)據(jù)庫(kù)層面提供的函數(shù) 只是進(jìn)行數(shù)據(jù)的簡(jiǎn)單的處理 或者說(shuō)是只能實(shí)現(xiàn)極為常規(guī)的功能

所以就不應(yīng)該 或者說(shuō)是不要指望在數(shù)據(jù)庫(kù)查詢(xún)的層面來(lái)實(shí)現(xiàn)特別復(fù)雜的業(yè)務(wù)邏輯

如果應(yīng)用程序的邏輯跟數(shù)據(jù)庫(kù)混在一起的話(huà) 會(huì)不利于代碼的維護(hù)和更新

而且也不利于數(shù)據(jù)庫(kù)的管理 包括數(shù)據(jù)移植 數(shù)據(jù)庫(kù)導(dǎo)入導(dǎo)出等等

日期類(lèi)型

概述 在計(jì)算機(jī)操作系統(tǒng)或者各種高級(jí)編程語(yǔ)言中 日期通常會(huì)被保存成一個(gè)長(zhǎng)整數(shù) 通常記錄的是毫秒

Oracle內(nèi)部以數(shù)字格式存儲(chǔ)日期和時(shí)間信息 世紀(jì) 年 月 日 小時(shí) 分鐘 秒

缺省的日期格式是DD—MON—YY 可使用sysdata函數(shù)獲取當(dāng)前系統(tǒng)日期和時(shí)間

運(yùn)算 日期型數(shù)據(jù)可以直接加或減一個(gè)數(shù)值 結(jié)果認(rèn)為日期 約定的該數(shù)值代表的是相加減的天數(shù)

兩個(gè)日期型數(shù)據(jù)可以相減 結(jié)果為二者相差多少天 二者不能 因?yàn)槿掌谙嗉邮菦](méi)有意義的

NVL()函數(shù)

概述 它用于將空值null替換為指定的缺省值 適用于字符 數(shù)字 日期等類(lèi)型數(shù)據(jù)

格式 NVL(exp exp ) 如果表達(dá)式exp 值為null 則返回exp 值 否則返回exp 值

舉例 select empno ename sal m sal+nvl(m ) from emp;

select empno ename job nvl(job No job yet ) from emp;

NVL ()函數(shù)

概述 它用于實(shí)現(xiàn)條件表達(dá)式功能

格式 NVL (exp exp exp ) 如果表達(dá)式exp 值不為null 則返回exp 值 否則返回exp 值

舉例 select empno ename sal m nvl (m sal+m sal) 總收入 from emp;

NULLIF()函數(shù)

概述 它用于數(shù)據(jù)等價(jià)性比較并根據(jù)比較結(jié)果返回null或其中一個(gè)被比較的數(shù)值 實(shí)際開(kāi)發(fā)中應(yīng)用并不是很多

格式 nullif(exp exp ) 如果表達(dá)式exp 與exp 的值相等 則返回null 否則返回exp 的值

舉例 select name 原名 nullif(pen_name name) 化名 from author;

COALESCE()函數(shù)

概述 它用于實(shí)現(xiàn)數(shù)據(jù)“接合”功能

格式 coalesec(exp exp ) 依次考察各參數(shù)表達(dá)式 遇到非null值即停止并返回該值

若表達(dá)式均為null值 則返回null 通常最后一個(gè)表達(dá)式都是能確保不是空值的字段

舉例 select empno ename sal m coalesec(sal+m sal ) 總收入 from emp;

CASE表達(dá)式

概述 它用于實(shí)現(xiàn)多路分支結(jié)構(gòu)

格式 case exp when parison_exp then return_exp

[when parison_exp then return_exp

when parison_expn then return_expn

else else_exp]

end

舉例 select empno ename sal

case deptno when then 財(cái)務(wù)部

when then 研發(fā)部

when then 銷(xiāo)售部

else 未知部門(mén)

end 部門(mén)

from emp;

說(shuō)明 CASE中的每一個(gè)表達(dá)式(如deptno 財(cái)務(wù)部等)都可以是復(fù)合而成的

這種對(duì)齊方式的書(shū)寫(xiě)是為了增加可讀性 當(dāng)然也可以把代碼寫(xiě)在同一行上

其中case到end之間的整體就相當(dāng)于普通查詢(xún)中的一個(gè)字段 end后面的“部門(mén)”是別名

DEDODE()函數(shù)

概述 和case表達(dá)式類(lèi)似 它也用于實(shí)現(xiàn)多路分支結(jié)構(gòu)

格式 decode(col|expression search result

[ search result ]

[ default])

舉例 select empno ename sal

decode(deptno 財(cái)務(wù)部

研發(fā)部

銷(xiāo)售部

未知部門(mén) )

部門(mén)

from emp;

COUNT()函數(shù)

格式 count(*)返回組中總記錄數(shù)目

count(exp)返回表達(dá)式exp值非空的記錄

count(distinct(exp))返回表達(dá)式exp值不重復(fù)的 非空的記錄數(shù)目

舉例 select count(*) from emp; 缺省的情況下 整個(gè)表就是一組

select count(m) from emp; 返回emp表中m字段不為空的記錄(行)數(shù)目

select count(distinct(deptno)) from emp; 查找deptno值為非空且不重復(fù)的記錄數(shù)目

分組函數(shù)與空值

概述 分組函數(shù)省略列中的空值 可使用NVL()函數(shù)強(qiáng)制分組函數(shù)處理空值

舉例 select avg(m) from emp; 等價(jià)于sum(m)/count(m)

select sum(m) from emp; 計(jì)算表中非空的m值的總和

select avg(nvl(m )) from emp; 等價(jià)于avg(nvl(m ))/count(*)

GROUP BY子句

概述 它用于將表中數(shù)據(jù)分成若干小組

格式 select column group_function(column)

from table

[where condition]

[group by group_by_expression]

[order by column];

舉例 select deptno avg(sal) from emp group by deptno;

說(shuō)明 出現(xiàn)在SELECT列表中的字段 如果不是包含在組函數(shù)中 那么該字段必須同時(shí)在GROUP BY子句中出現(xiàn)

包含在GROPY BY子句中的字段則不必須出現(xiàn)在SELECT列表中 子句執(zhí)行順序是where→group by→order by缺省按升序排列

補(bǔ)充 select deptno job avg(sal) from emp group by deptno job order by deptno desc; 基于多個(gè)字段的分組

select deptno avg(sal) from emp; 非法

注意 如果沒(méi)有GROUP BY子句 SELECT列表中不允許出現(xiàn)字段(單行函數(shù))與分組函數(shù)混用的情況

WHERE中不允許使用分組函數(shù) 如select deptno avg(sal) from emp where avg(sal) group by deptno; 非法

這跟子句執(zhí)行的順序有關(guān) where子句最先執(zhí)行 在執(zhí)行where子句的時(shí)候還沒(méi)有執(zhí)行過(guò)group by子句

于是程序不知道這是在分組 也不曾計(jì)算過(guò)avg(sal)的組內(nèi)平均工資 所以在where子句中不允許使用分組函數(shù)

由于還沒(méi)有執(zhí)行過(guò)group by子句 所以此時(shí)就不確定如何怎么分組以及分多少個(gè)組

所以where子句中只能進(jìn)行初級(jí)過(guò)濾 此時(shí)可以使用HAVING子句實(shí)現(xiàn)對(duì)平均工資的過(guò)濾

HAVING子句

概述 它用于過(guò)濾分組

格式 select column group_function(column)

from table

[where condition]

[group by group_by_expression]

[having group_condition]

[order by column];

舉例 select deptno job avg(sal)

from emp

where hiredate = to_date( yyyy mm dd )

group by by deptno job

having avg(sal)

lishixinzhi/Article/program/Oracle/201311/19087

新手必須了解的oracle入門(mén)知識(shí)

oracle入門(mén)知識(shí)

一個(gè)表空間只能屬于一個(gè)數(shù)據(jù)庫(kù)每個(gè)數(shù)據(jù)庫(kù)最少有一個(gè)控制文件(建議 個(gè) 分別放在不同的磁盤(pán)上)

每個(gè)數(shù)據(jù)庫(kù)最少有一個(gè)表空間(SYSTEM表空間)

建立SYSTEM表空間的目的是盡量將目的相同的表存放在一起 以提高使用效率 只應(yīng)存放數(shù)據(jù)字典

每個(gè)數(shù)據(jù)庫(kù)最少有兩個(gè)聯(lián)機(jī)日志組 每組最少一個(gè)聯(lián)機(jī)日志文件

一個(gè)數(shù)據(jù)文件只能屬于一個(gè)表空間一個(gè)數(shù)據(jù)文件一旦被加入到一個(gè)表空間中 就不能再?gòu)倪@個(gè)表空間中移走 也不能再加入到其他表空間中

建立新的表空間需要建立新的數(shù)據(jù)文件

MIT后 數(shù)據(jù)不一定立即寫(xiě)盤(pán)(數(shù)據(jù)文件)

一個(gè)事務(wù)即使不被提交 也會(huì)被寫(xiě)入到重做日志中

oracle server可以同時(shí)啟動(dòng)多個(gè)數(shù)據(jù)庫(kù)

一套操作系統(tǒng)上可以安裝多個(gè)版本的ORACLE數(shù)據(jù)庫(kù)系統(tǒng)(UNIX可以 NT不可以)

lishixinzhi/Article/program/Oracle/201311/16610

oracle數(shù)據(jù)庫(kù)入門(mén)教程

oracle是塊結(jié)構(gòu)語(yǔ)言,oracle程序劃分成幾個(gè)部分,并在每個(gè)部分中寫(xiě)入邏輯代碼塊,每個(gè)塊由三個(gè)子部分組成。

聲明部分:此部分是以關(guān)鍵字DECLARE開(kāi)頭。這是一個(gè)可選部分,并定義了程序中要使用的所有變量,游標(biāo),子程序和其他元素。

可執(zhí)行命令部分:此部分包含在關(guān)鍵字BEGIN和END之間,這是一個(gè)強(qiáng)制性部分。由程序的可執(zhí)行oracle語(yǔ)句組成。應(yīng)該有至少一個(gè)可執(zhí)行代碼行,可以只是一個(gè)NULL命令,表示不執(zhí)行任何操作。

異常處理部分 :此部分以關(guān)鍵字EXCEPTION開(kāi)頭。這是一個(gè)可選部分,包含處理程序中錯(cuò)誤的異常。

每個(gè)oracle語(yǔ)句以分號(hào)(;)結(jié)尾。使用BEGIN和END可以將oracle塊嵌套在其他oracle塊中。以下是Poracle塊的基本結(jié)構(gòu)。

Hello World示例:

END;行表示oracle塊的結(jié)尾。要從oracle命令行運(yùn)行代碼,需要在代碼的最后一行之后鍵入/字符。當(dāng)上述代碼在oracle提示符下執(zhí)行時(shí),它會(huì)產(chǎn)生以下結(jié)果:

oracle標(biāo)識(shí)符:oracle標(biāo)識(shí)符是常量,變量,異常,過(guò)程,游標(biāo)和保留字。標(biāo)識(shí)符包括一個(gè)字母,可選地后跟多個(gè)字母,數(shù)字,美元符號(hào),下劃線(xiàn)和數(shù)字符號(hào),不得超過(guò)30個(gè)字符。

默認(rèn)情況下,標(biāo)識(shí)符不區(qū)分大小寫(xiě)。例如,可以使用integer或INTEGER來(lái)表示一個(gè)數(shù)值。 不能使用保留關(guān)鍵字作為標(biāo)識(shí)符。

擴(kuò)展資料

oracle注釋程序:注釋可以在編寫(xiě)的oracle代碼中包含的說(shuō)明性文字,并幫助其他人閱讀源代碼。所有編程語(yǔ)言都允許某種形式的注釋。

oracle支持單行和多行注釋。注釋中的所有字符都被oracle編譯器忽略。oracle單行注釋以分隔符開(kāi)頭 --(雙連字符),多行注釋由/*和*/括起來(lái)。

當(dāng)上述代碼在oracle提示符下執(zhí)行時(shí),會(huì)產(chǎn)生以下結(jié)果:

oracle變量的名稱(chēng)由可選的字母,數(shù)字,美元($)符號(hào),下劃線(xiàn)和數(shù)字符號(hào)組成,不能超過(guò)30個(gè)字符。 默認(rèn)情況下,變量名不區(qū)分大小寫(xiě)。不能將保留的oracle關(guān)鍵字用作變量名稱(chēng)。

oracle編程語(yǔ)言允許定義各種類(lèi)型的變量,如:日期時(shí)間數(shù)據(jù)類(lèi)型,記錄,集合等,我們將在后面的章節(jié)中介紹。 在本章中僅學(xué)習(xí)基本的變量類(lèi)型。

Oracle 學(xué)習(xí)中,哪些是入門(mén)的基礎(chǔ)知識(shí)

1.你得會(huì)安裝吧;

2.得會(huì)配置監(jiān)聽(tīng)程序和配置客戶(hù)端吧;

3.得會(huì)創(chuàng)建數(shù)據(jù)庫(kù)、表空間、用戶(hù)吧;

4.還得會(huì)數(shù)據(jù)庫(kù)導(dǎo)出(備份)、導(dǎo)入(還原);

5.SQL語(yǔ)句的掌握,比如建表、表數(shù)據(jù)的增刪改查、然后再逐步深入到函數(shù)、存儲(chǔ)過(guò)程、視圖、觸發(fā)器、作業(yè)等等

學(xué)會(huì)以上這些,你就算是正式入門(mén)了。

純手工敲打,望采納……

網(wǎng)站欄目:oracle怎么算入門(mén) oracle教程入門(mén)精通
標(biāo)題路徑:http://muchs.cn/article20/hhecjo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、企業(yè)網(wǎng)站制作、網(wǎng)站維護(hù)、App設(shè)計(jì)、微信小程序用戶(hù)體驗(yàn)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

營(yíng)銷(xiāo)型網(wǎng)站建設(shè)