版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第一章Oracle數(shù)據(jù)庫基礎(chǔ)
Oracle的SQL*PLUS是設(shè)計(jì)所有應(yīng)用系統(tǒng)的基礎(chǔ)工具。要想將應(yīng)用系統(tǒng)設(shè)計(jì)成一個(gè)健
壯的、性能優(yōu)越的系統(tǒng)。最關(guān)鍵的是要理解RDBMS的真正含義和結(jié)構(gòu),理解Oracle
SQL*PLUS的特點(diǎn)和核心,弄清關(guān)系數(shù)據(jù)庫與桌面數(shù)據(jù)庫的差別。比如理解數(shù)據(jù)的完整性、
一致性、索引、視圖等。只有這樣才能設(shè)計(jì)出符合Oracle特點(diǎn)的應(yīng)用系統(tǒng)。從而保證系統(tǒng)
在
提供使用后不會(huì)出現(xiàn)一致性、性能等問題。
§1.1理解關(guān)系數(shù)據(jù)庫系統(tǒng)(RDBMS)
CODASYL(數(shù)據(jù)系統(tǒng)語言協(xié)會(huì))是數(shù)據(jù)庫任務(wù)組(DatabaseTaskGroup,DBTG)創(chuàng)建的
一種數(shù)據(jù)庫標(biāo)準(zhǔn),這是種基于COBOL的網(wǎng)絡(luò)數(shù)據(jù)庫標(biāo)準(zhǔn)。
§1.1.1關(guān)系模型
一個(gè)描述兩個(gè)集合的元素如何相互聯(lián)系或如何一一對應(yīng)的數(shù)學(xué)概念,對于數(shù)據(jù)庫來說,
關(guān)系只是一個(gè)帶有一些特殊屬性的表。所以有:
數(shù)據(jù)的基礎(chǔ)項(xiàng)是關(guān)系
在這些表上的操作只產(chǎn)生關(guān)系
一個(gè)關(guān)系表必須符合某些特定條件,才能成為關(guān)系模型的一部分
儲(chǔ)存在單元中的數(shù)據(jù)必須是原子的。每個(gè)單元只能存儲(chǔ)一條數(shù)據(jù),叫信息原則
(Information
Principle)o如果存儲(chǔ)多條則違反信息原則。特舒情況下可能需要違反信息原則。
儲(chǔ)存在列下的數(shù)據(jù)必須具有相同的數(shù)據(jù)類型。
每一行是唯一的(沒有完全相同的行)。
列沒有順序。
行沒有順序
列有一個(gè)唯一性的名稱。
關(guān)系模型的另一個(gè)是完整性原則。它包括實(shí)體完整性原則(Entityintegrityrule)和引用
完整性原則(Referentialintegrityrule),如:
主鍵(Primarykey)是能唯一標(biāo)識行的一列或一組列的集合。
由多個(gè)列構(gòu)成的主鍵稱為連接鍵(Concatenatedkey)、組合鍵(Compoundkey),或稱
作
為復(fù)合鍵(Compositykey)。
另外就是外部鍵(Foreignkey)是一個(gè)表中的一列或一組列,它們在其它表中作為主鍵而
存
在。一個(gè)表中的外部鍵被認(rèn)為是對另外一個(gè)表中主鍵的引用。實(shí)體完整性原則簡潔地表明主
鍵不能全部或部分地空缺或?yàn)榭?,引用完整性原則簡潔地表明一個(gè)外鍵必須為空或者它所引
數(shù)據(jù)庫培訓(xùn)教材
培訓(xùn)ORACLE請聯(lián)系/p>
16
用的主鍵當(dāng)前存在值相一致。
§1.1.2Codd十二法則
Oracle數(shù)據(jù)庫系統(tǒng)是一個(gè)完美的完全符合數(shù)據(jù)庫技術(shù)的關(guān)系數(shù)據(jù)庫系統(tǒng)。要想你的應(yīng)用
設(shè)計(jì)按照數(shù)據(jù)庫原理來進(jìn)行,最重要的就是理解Oracle的結(jié)構(gòu)、語句和命令。Codd提出的
十二條法則在Oracle系統(tǒng)中都可以找到:
1)信息法則。
2)授權(quán)存儲(chǔ)法則,每一個(gè)數(shù)據(jù)項(xiàng)都通過“表名+行主鍵+列名”的組合形成訪問。
3)必須以一致的方法使用空值。
4)一個(gè)活躍的、在線數(shù)據(jù)字典應(yīng)作為關(guān)系型表被儲(chǔ)存
5)必須提供數(shù)據(jù)存取語言進(jìn)行存取訪問。
6)所有能被更新的視圖應(yīng)當(dāng)是可被更新的。
7)必須有集合級的插入、更新和刪除。
8)物理數(shù)據(jù)的獨(dú)立性。即應(yīng)用不依賴物理結(jié)構(gòu)。
9)邏輯數(shù)據(jù)的獨(dú)立性。如果一個(gè)表被分成兩個(gè)部分,則應(yīng)用視圖連接在一起,以便不會(huì)對應(yīng)
用產(chǎn)生影響。
10)完整性的獨(dú)立性。完整性規(guī)則應(yīng)該儲(chǔ)存在數(shù)據(jù)字典中。
11)分布獨(dú)立性。一個(gè)數(shù)據(jù)庫即使被分布,也應(yīng)該能工作。
12)非破壞性原則。如果允許低級存取,一定不能繞過安全性和完整性原則。
§1.2關(guān)系數(shù)據(jù)庫系統(tǒng)(RDBMS)的組成
RDBMS由兩部分組成,即數(shù)據(jù)庫系統(tǒng)內(nèi)核(軟件)和數(shù)據(jù)字典(內(nèi)核用于管理數(shù)據(jù)庫系
統(tǒng)的數(shù)據(jù)結(jié)構(gòu))兩部分。
§1.2.1RDBMS內(nèi)核
RDBMS就是用來控制數(shù)據(jù)訪問的操作系統(tǒng)。它的任務(wù)是按照一定的規(guī)則存儲(chǔ)數(shù)據(jù)、檢
索數(shù)據(jù)及保護(hù)數(shù)據(jù)。
§1.2.2數(shù)據(jù)字典概念
數(shù)據(jù)自動(dòng)存放數(shù)據(jù)庫中所有對象(如表,索引,視圖等)所需的信息。Oracle8i的數(shù)
據(jù)字典是存放數(shù)據(jù)庫系統(tǒng)信息的一組表,從數(shù)據(jù)字典中的信息可以確認(rèn)數(shù)據(jù)庫中數(shù)據(jù)對象的
基本信息及存放位置。
數(shù)據(jù)庫培訓(xùn)教材
培訓(xùn)ORACLE請聯(lián)系/p>
17
§1.3SQL、SQL*Plus及PL/SQL
下面用簡單的語言解釋Oracle的常用產(chǎn)品所包含的SQL*PLUS和PL/SQL的關(guān)系。
§1.3.1SQL和SQL*PLUS的差別
SQL是標(biāo)準(zhǔn)結(jié)構(gòu)查詢語言,而SQL*PLUS實(shí)際是包括標(biāo)準(zhǔn)的SQL和Oracle公司的一些命令組
成的產(chǎn)品,因而Oracle公司將其取名為SQL*PLUS。下面是它們的解釋。
1.SQL(StructuredQueryLanguage)
SQL有許多關(guān)鍵字,以下語句是常用于開頭的語句:
AlterInsert
AuditLock
CommitNoaudit
CommentRename
CreateRevoke
DeleteSelect
DropUpdate
GrantValidate
注:
1.Oracle的SQL緩沖區(qū)一次只能存放?條SQL命令;
2.Validate(使生效)在oracle中跟Enable一起用,但可以省去Validate,所以許
多資
料都不介紹Validate的用法。其語法如:
Enable{[Validate][Novalidate]}{[UNIQUE][PRIMARYKEY]...}...
2.SQL*PLUS
除SQL外,SQL*PLUS還包括稱為SQL*PLUS命令的附加命令,這些命令主要用于形成復(fù)雜
報(bào)表,編輯SQL命令,提供幫助信息,維護(hù)系統(tǒng)等。SQL*PLUS包括的命令如下:
@Connect
HostSet
#Copy
InputShow
$Define
ListSpool
/Del
NewpageSqlplus
AcceptDescribe
PauseStart
AppendDisconnect
數(shù)據(jù)庫培訓(xùn)教材
培訓(xùn)ORACLE請聯(lián)系/p>
18
QuitTiming
BreakDocument
RemarkTtitle
BtitleEdit
PromptUndefine
ChangExecute
PrintSave
ClearExit
RunColumn
GetRunform
ComputeHelp
3.DDL(DataDefineLanguage)
對于結(jié)構(gòu)查詢語言(有時(shí)稱SQL命令),可以將它們分成兩組,一組是數(shù)據(jù)定義語言(DDL);
另一組是數(shù)據(jù)操縱語言(DML)。其中用于數(shù)據(jù)定義的語言如下:
Alterprocedure重編譯過程
Altertable修改表的屬性
Analyze統(tǒng)計(jì)數(shù)據(jù)庫對象性能值
AltertableaddConstraint對已有的表加約束
Createtable建立表結(jié)構(gòu)
Createindex建立索引
Droptable刪除表實(shí)體及相關(guān)的索引
Dropindex刪除索引
Grant授權(quán)給用戶或角色
Truncate刪除表中的所有行
Revoke從用戶或角色收回權(quán)限
4.DML(DataManipulationLanguage)
對于結(jié)構(gòu)查詢語言的另一組是數(shù)據(jù)操縱語言(DML)。DML其中用于數(shù)據(jù)操縱的命令如下:
Insert
Delete
Update
Select
Commitwork
Rollback
數(shù)據(jù)庫培訓(xùn)教材
培訓(xùn)ORACLE請聯(lián)系/p>
19
§1.3.2PL/SQL語言
PL/SQL是OracleRDBMS(Oracle6之后版本)的一個(gè)組成部分,PL是“過程化語言
(ProcedureLanguage)”的縮寫。PUSQL語言是在SQL語言中結(jié)合了結(jié)構(gòu)化過程語言成
分
的準(zhǔn)第四代語言。
使用PL/SQL的目的:
由于大多數(shù)PUSQL是在服務(wù)端來運(yùn)行,這樣可減少由客戶端運(yùn)行程序時(shí)所需的網(wǎng)絡(luò)數(shù)
據(jù)流量。
可以使用PL/SQL的地方:
PL/SQL可以單獨(dú)進(jìn)行程序的編寫,完成一般的處理功能;
在高級語言中可嵌入PL/SQL塊;
在4GL中可以嵌入PL/SQL塊;
在PL/SQL程序中可以嵌入HTML利XML。
§1.4登錄至USQL*PLUS
我們創(chuàng)建任何對象,如創(chuàng)建表、索引等都需要連接到Oracle中,這里用“登錄”主要是
Oracle的界面提供的是Login這樣的叫法。其實(shí)就是連接的意思。在Client/Server結(jié)構(gòu)
下,
Oracle提供兩種方式連接SQL*PLUS,其中SQL*NETV2.x版本(目前版本不再使用SQL*NET
V2.x)提供在字符方式下連接到SQL*PLUS,SQL*NETV2.x版本提供在圖形方式(Window)
使用,目前版本的0RACLE8/8i都使用NET8連接.(NET8不再支持字符終端)
§1.4.1UNIX環(huán)境
在UNIX下,要確??蛻舳嘶蚍?wù)器端與Oracle服務(wù)器系統(tǒng)進(jìn)行連接,必須保證
tnsnames.ora和listener,ora兩個(gè)參數(shù)文件的正確配置。詳細(xì)的配置解釋在DBA章節(jié)里解
釋。下面是tnsnames.ora和listener,ora兩個(gè)參數(shù)文件的內(nèi)容顯示。
1.tnsnames.ora參數(shù)文件:
INST1_HTTP=
(DESCRIPTION=
(Al)DRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=dbsvr)(PORT=1521))
)
(CONNECT_DATA=
(SERVER=SHARED)
(SERVICE_NAME=s450)
(PRESENTATION=http://admin)
)
數(shù)據(jù)庫培訓(xùn)教材
培訓(xùn)ORACLE請聯(lián)系/p>
20
)
EXTPROC^CONNECT10N_DATA=
(DESCRIPTION=
(ADDRESSLIST=
(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC))
)
(CONNECT_DATA=
(SID=PLSExtProc)
(PRESENTATION=RO)
)
)
S450=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=dbsvr)(PORT=1521))
)
(CONNECT_DATA=
(SERVICE_NAME=s450)
)
)
2.listener,ora參數(shù)文件:
LISTENER=
(DESCRIPTIONLIST=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=dbsvr)(PORT=1521))
)
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC))
)
)
)
SIDJJST_LISTENER=
(SID_LIST=
(SID_DESC=
(SIDNAME=PLSExtProc)
(ORACLEHOME=/home/orac1e/app/orac1e/product/8.1.7)
(PROGRAM=extproc)
)
(SID^DESC=
數(shù)據(jù)庫培訓(xùn)教材
培訓(xùn)ORACLE請聯(lián)系/p>
21
(GLOBAL_DBNAME=s450)
(ORACLEHOME=/home/orac1e/app/orac1e/product/8.1.7)
(SID_NAME=s450)
)
)
如果安裝后己經(jīng)正確地對上面的兩個(gè)參數(shù)文件進(jìn)行配置,則可以按照下面步驟進(jìn)行登錄:
1)先啟動(dòng)服務(wù)器端監(jiān)聽器:
Isnrctlstart
2)用下面命令顯式登錄到SQL*PLUS:
$sqlplususername/password
或
$SQLPLUSusername/password@connect_string
3)用下面命令隱式登錄到SQL*PLUS:
$sqlplus[enter]
Enterusername:scott
Enterpassword:******
§1.4.2WindowsNT和WINDOWS/2000環(huán)境
在NT/2000環(huán)境下,要使客戶端能與Oracle服務(wù)器進(jìn)行連接,tnsnames.ora和
listener.ora參數(shù)文件的配置如下:
1.tnsnames.ora參數(shù)文件:
0RA816.TAIJI.COM.CN=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=zhao)(PORT=1521))
)
(CONNECT_DATA=
(SERVICE_NAME=ora816)
)
)
EXTPROC_CONNECTION_DATA.TAIJI.COM.CN=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1))
)
數(shù)據(jù)庫培訓(xùn)教材
培訓(xùn)ORACLE請聯(lián)系/p>
22
(CONNECT_DATA=
(Sil)=PLSExtProc)
(PRESENTATION=RO)
)
)
S450=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=dbsvr)(PORT=1521))
)
(CONNECT_DATA=
(SERVICE_NAME=s450)
)
)
2.listener,ora參數(shù)文件:
LISTENER=
(DESCRIPTION」IST=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPR0C1))
)
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=zhao)(PORT=1521))
)
)
(DESCRIPTION=
(PROTOCOL_STACK=
(PRESENTATION=GIOP)
(SESSION=RAW)
)
(ADDRESS=(PROTOCOL=TCP)(HOST=zhao)(PORT=2481))
)
)
S1D_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(SIDNAME=PLSExtProc)
(ORACLE_HOME=D:\oracle)
(PROGRAM=extproc)
)
(SIDDESC=
數(shù)據(jù)庫培訓(xùn)教材
培訓(xùn)ORACLE請聯(lián)系/p>
23
(GLOBAL_DBNAME=ora816)
(ORACLEJOME=D:\oracle)
(SID_NAME=ora816)
)
)
WindowsNT/2000字符方式登錄步驟:
1)先啟動(dòng)服務(wù)器端監(jiān)聽器:
Isnrctlstart
2)用下面命令顯式登錄到SQL*PLUS:
$sqlplususername/password
或
$SQLPLUSusername/password@connect_string
WindowsNT/2000圖形方式登錄步驟:
1)點(diǎn)擊"開始"=》"程序"=》"Oracle-0raHome92"=》**ApplicationonDevelopment"
=》
“SQLPlus"進(jìn)入如下屏幕:
在WINDOWSNT/98/2000上的登錄界面(sqlplus圖)
可以在用戶名框內(nèi)輸入用戶、口令及主機(jī)字串;也可以分別進(jìn)行輸入。
數(shù)據(jù)庫培訓(xùn)教材
培訓(xùn)ORACLE請聯(lián)系/p>
24
§1.5常用SQL*PLUS附加命令簡介
Oracle公司提供的附加語句(或稱命令),可以滿足程序人員和管理員的一些特殊操作要
求。比如,在顯示超過上百行記錄信息時(shí),可以采用每屏“暫?!眮韺?shí)現(xiàn)。要達(dá)到這樣的目
的,就要在SQL>下發(fā)setpauseon命令。由于SQL*PLUS命令較多,下面僅給出最常用的
幾個(gè)命令的說明,詳細(xì)的請參考附錄。
§1.5.1登錄至USQL*PLUS
可以用下面命令登錄到SQLTLUS,SQL*PLUS命令的簡單語法如下:
SQLPLUS[[logon]|[start]]
/ogo”可以是:
{username[/password][@connect_identifier]\/}[AS{SYSOPER|SYSDBA)]
|/NOLOG
注7:SQU^US主要是在命令方式下使用,在NT、WINDOWS/2000.UN/X的用法都一
樣。
注2:如果在U/V/X下,SQLPLUS命令不被識別(不存在),則問題在環(huán)境變量相丁H沒
有設(shè)
置正確或者沒有設(shè)置。SQLPLUS可執(zhí)行程序在$。玦。_之HOME/加目錄下。
§1.5.2EXIT和QUIT
可以用exit或quit來終止SQL*PLUS的操作(會(huì)話)。語法如下:
{EXITIQUIT}[SUCCESSIFAILURE|WARNING]
{EXIT|QUIT}可以用exit或quit,目前它們的功能一樣。
SUCCESS正常退出
FAILURE帶提示錯(cuò)誤代碼的退出
WARNING帶提示警告代碼的退出
COMMIT退出前將未提交進(jìn)行保存
例如:
SQL>exit
數(shù)據(jù)庫培訓(xùn)教材
培訓(xùn)ORACLE請聯(lián)系/p>
25
§1.5.3DESCRIBE(顯示表、視圖結(jié)構(gòu))
DESCR舊E可以用(只要用DESC即可)來顯示表、視圖的列的定義,也可以顯示同義詞、函
數(shù)或存儲(chǔ)過程的說明。語法如下:
DESCfRIBE]{{schema.]object[@connect_identifier]}
Schema;用戶名,如果省去,則為對象的所有者。
object
可以是表(table),視圖(view),類型(type),存儲(chǔ)過程(procedure),函數(shù)(function),
包(package)或同義詞(synonym)
@connect_identifier
數(shù)據(jù)庫連接字串
例:顯示emp表的結(jié)構(gòu):
SQL>descemp
§1.5.4LIST(列出)命令
可以用LIST命令來列出當(dāng)前SQL緩沖區(qū)中的一行或多行命令語句。
L[IST][n\nmln*\nLASTI*I*nl*LASTILAST]
n列出第n行
nm列出n到m行
n*列出第n行到當(dāng)前行
nLAST列出第n行到最末行
*列出所有行
*n列出當(dāng)前行到第n行
*LAST列出當(dāng)前行到最末行
LAST列出最末行
例:
SQL>LIST
1SELECTENAME,DEPTNO,JOB
數(shù)據(jù)庫培訓(xùn)教材
培訓(xùn)ORACLE請聯(lián)系/p>
26
2FROMEMP
3WHEREJOB=,CLERK,
4*ORDERBYDEPTNO
§1.5.5Change(替換字符串)命令
可以用Change命令來改變字符串(即替換字符串)。語法如下:
C[HANGEJsepcharold[sepchar[new[sepchar]]]
Sepchar為分隔符,可以是“/"或請使用者特別注意
Old舊字串
New新字串
例:將除號(/)改為乘號(*),則需要命令為c!/!*!。即:
SQL>1
1*selectsal,sal/100fromemp
SQL>c!/!*!
提醒:對于修改/字符的只能用!來作分隔符(上例)。
例:將乘號(*)改為加號(+),則需要命令為c!/!*!。即:
SQL>1
1*selectsal,sal*100fromemp
SQL>c/*/+/
1*selectsal,sal+100fromemp
SQL>
§1.5.6Append(追加字符串)命令
可以用Append命令來完成在當(dāng)前行的末尾追加字符串。語法如下:
A[PPEND]text
Text所要求追加的字符串
數(shù)據(jù)庫培訓(xùn)教材
培訓(xùn)ORACLE請聯(lián)系/p>
27
例:在當(dāng)前行selectsal,sal+100fromemp后加wheresal>=2000,則:
SQL>1
1*selectsal,sal+100fromemp
SQL>awheresal>=2000
1*selectsal,sal+100fromempwheresal>=2000
SQL>
§1.5.7Save保存當(dāng)前緩沖區(qū)命令到文件
可以用SAVE命令將當(dāng)前的命令行保存到操作系統(tǒng)的文件中。語法如下:
SAVLEJfilename[.extj[CRE[ATE]IREP[LACE]IAPP[END]]
其中:
filename:你將把緩沖區(qū)中的內(nèi)容存入到操作系統(tǒng)目錄的文件名。
ext:若使用文件后綴,缺省的文件后綴為SQL。
例:
SQL>selecttable_namefromdietwheretable_namelike'%ROLE%';
SQL>savec:\get_role
§1.5.8GET將命令文件讀到緩沖區(qū)
可以用GET命令將操作系統(tǒng)的目錄下的命令文件讀到緩沖區(qū)(但不執(zhí)行)。語法如下:
GETfilename[.extjILISLTJINOLIISTJJ
其中:
filename:希望加載到SQL緩沖區(qū)的文件名
ext:文件的擴(kuò)展名,缺省為SQL.
例:
SQL>getc:\get_role
§1.5.9SPOOL將信息記錄到文件中
Oracle的SPOOL命令可以實(shí)現(xiàn)將屏幕所出現(xiàn)的一切信息記錄到操作系統(tǒng)的文件中直到
數(shù)據(jù)庫培訓(xùn)教材
培訓(xùn)ORACLE請聯(lián)系/p>
28
SPOOLOFF為止。語法如下:
SPO[OL][filename[.ext]IOFFIOUTJ
其中:
filename:你想輸出(spool)的文件名。
ext:文件的后綴。缺省的后綴是LST(或LIS)。
SQL>coltable_namefora20
SQL>colcommentsfora80
SQL>setlinesize110
SQL>SP001c:\all_dict
SQL>selecttablename,commentsfromdiet;
(系統(tǒng)查詢信息)
SQL>SPOOLOFF
§1.5.10再運(yùn)行當(dāng)前緩沖區(qū)的命令
在SQL>方式下,如果希望在運(yùn)行當(dāng)前的命令,可用Run(或R)或用/來實(shí)現(xiàn),如:
SQL>setlin120
SQL>selecttablenamefromdietwheretablenamelike'%ROLE%';
TABLE_NAME
DBA_ROLES
DBAROLEPRIVS
USER_ROLE_PRIVS
ROLEROLEPRIVS
ROLE_SYS_PRIVS
ROLETABPRIVS
SESSION_ROLES
已選擇7行。
SQL>1
1*selecttablenamefromdietwheretablenamelike'%ROLE%'
SQL>/
TABLENAME
DBAROLES
DBA_ROLE_PRIVS
數(shù)據(jù)庫培訓(xùn)教材
培訓(xùn)ORACLE請聯(lián)系/p>
29
USER_ROLE_PRIVS
ROLE_ROLE_PRIVS
ROLE_SYS_PRIVS
ROLE_TAB_PRIVS
SESSION_ROLES
已選擇7行。
§1.6常用數(shù)據(jù)字典簡介
ORACLE提供許多內(nèi)部數(shù)據(jù)字典,用以管理系統(tǒng)的各種信息和參數(shù)(即數(shù)據(jù)庫對象),下
面列出幾個(gè)常用的數(shù)據(jù)字典供初學(xué)者參考,其它方面的數(shù)據(jù)字典將在DBA管理中介紹。
ORACLE數(shù)據(jù)字典的命名說明:
USER為前綴一一記錄用戶的所有對象信息
ALL為前綴——記錄包括USER記錄和授權(quán)給PUBLIC或該用
戶的所有對象的信息。
DBA為前綴一一記錄關(guān)于數(shù)據(jù)庫對象(非用戶對象)的信息.
V$公共系統(tǒng)動(dòng)態(tài)視圖,用于系統(tǒng)優(yōu)化和調(diào)整參考.
V$動(dòng)態(tài)性能視圖,你可用CATALOG.SQL腳本建立動(dòng)態(tài)視圖建立同義詞。
GV$新(oracle8)的附加的固定視圖(GlobalV$).在并行環(huán)境下反應(yīng)的是
V$視圖的信息。如:
SELECT*FROMGV$LOCKWHEREINST_ID=2ORINST_ID=5;
返回的是instances2和5的丫$的信息。所以GV$反應(yīng)一"組Instances的參數(shù).GV$視圖的
限制是參數(shù)PARALLEL_MAX_SERVERS必須大于0。
詳見OracleEnterpriseManagerAdministrator'sGuide.
注:請注意下面的總結(jié):
一般DBA_的視圖內(nèi)容都包含USER一和ALL一為前綴的視圖;
DBA為前綴的視圖的內(nèi)容基本上是大寫;
以V$_為前綴的視圖的內(nèi)容基本上是小寫。
1.USER_TABLEs(=TABS)用戶的所有表的信息。
2.USERTABCOLUMNS(=COLS)有關(guān)各表的列(字段)的信息
3.USER_VIEWS用戶的所有視圖
4.USERSYNONYMS(=SYN)用戶同義詞
5.USER_SEQUENCES(=SEQ)用戶序列
6.USERCONSTRAINTS記錄創(chuàng)建表結(jié)構(gòu)時(shí)建立的限制。
7.USER_TAB_COMMENTS表的注釋。如:
數(shù)據(jù)庫培訓(xùn)教材
培訓(xùn)ORACLE請聯(lián)系/p>
30
Commentontableempis'職工表’;
8.USER_COL_COMMENTS列(字段)注釋。如:
Commentoncolumnemp.enameis'姓名';
9.USER_INDEXES(=IND)用戶索引的簡要信息
10.USER_IND_COLUMNS用戶索引的列信息
11.USER_TRIGGERS用戶觸發(fā)器信息
12.USER_SOURCE用戶存儲(chǔ)過程
13.USER_TABLESPACE用戶可以使用的表空間信息
14.USER_TS_QUOTAS用戶使用系統(tǒng)資源的信息
15.USER_SEGMENTS用戶對象所使用空間信息
16.USER_EXTENTS用戶的擴(kuò)展段信息
17.USER_OBJECTS用戶對象
=USER_TABLES+USER_VIEWS+USER_INDEXES+
USER_SOURCE+USER_TRIGGERS+USER_JAVA
18.USER_PART_TABLES用戶分區(qū)信息
19.USER_TAB_PARTITIONS
20.USER_PART_COL_STATISTICS
21.USER_IND_PARTITIONS
22.USER_FREE_SPACE
23.CAT(=USER_CATALOG)用戶可以訪問的所有的基表。
24.TAB用戶創(chuàng)建的所有基表,視圖,同義詞等。
25.DICT(=DICTIONARY)構(gòu)成數(shù)據(jù)字典的所有表的信息。
提示:雖然。mc/eCommentoncolumntablename.columnis'xxxx';等來實(shí)現(xiàn)對
表
或列進(jìn)行注釋,但不建議設(shè)計(jì)者采用這樣的工作方式。而建議將注釋寫到腳本中更為直
觀。
§1.7ORACLE數(shù)據(jù)類型
Oracle數(shù)據(jù)庫的數(shù)據(jù)類型與其它的數(shù)據(jù)庫系統(tǒng)相比,它的數(shù)據(jù)類型不多,Oracle在表示
數(shù)據(jù)方面比其他數(shù)據(jù)庫系統(tǒng)來說要省去許多關(guān)鍵字。Oracle只用NUMBER(m,n)就可以表示
任何復(fù)雜的數(shù)字?jǐn)?shù)據(jù)。其它如日期類型等也簡單得多,只DATE就表示日期和時(shí)間。下面
以
列表形式給出各個(gè)版本的Oracle系統(tǒng)數(shù)據(jù)類型的表示方法。下面給出Oracle舊版本的數(shù)據(jù)
類
型的目的是讓讀者了解Oracle的變化,另外就是你在對舊版本進(jìn)行升級或數(shù)據(jù)轉(zhuǎn)換時(shí)要注
,息
各個(gè)版本的差別。
0RACLE5、ORACLE6數(shù)據(jù)類型
數(shù)據(jù)類型說明
數(shù)據(jù)庫培訓(xùn)教材
培訓(xùn)ORACLE請聯(lián)系/p>
31
Char可變長字符型,W254
Varchar2可變長字符型,W2000
Number(m,n)數(shù)字類型,含整數(shù)、小數(shù)等
Date日期型,含時(shí)間,缺省格式為mmm-dd-yyyyhh:mi:ss(占7字節(jié))
Long存儲(chǔ)大型可變長字符串,W2GB
Raw存儲(chǔ)短二進(jìn)制串,<2GB
Longraw存儲(chǔ)長二進(jìn)制串,W2GB
0RACLE7數(shù)據(jù)類型
數(shù)據(jù)類型說明
Char定長字符,<255個(gè)字符
Varchar變長字符,W2000個(gè)字符
Varchar2變長字符,W2000個(gè)字符
Number(m,n)數(shù)字類型,含整數(shù)、浮點(diǎn)、雙精度等
Long存儲(chǔ)大型可變長字符串,W2GB
Raw存儲(chǔ)可變短二進(jìn)制數(shù),W2000
Longraw存儲(chǔ)大型可變長二進(jìn)制數(shù),W2GB
0RACLE8/8i數(shù)據(jù)類型
數(shù)據(jù)類型說明
Char定長字符,W2000個(gè)字符
Varchar(同Varchar2)可變字符,<4000個(gè)字符
Varchar2變長字符,W4000個(gè)字符
Date固定長度(7字節(jié))的日期型
Number數(shù)字型,可存放實(shí)型利整型
Long可變字符,W2GB個(gè)字符
Raw可變二進(jìn)制數(shù)據(jù),W4000字節(jié)
Longraw可變二進(jìn)制數(shù)據(jù),W2GB
MLSLABEL僅TrustedOracle用長度在2~5字節(jié)間
Blob大二進(jìn)制對象,W4GB
Clob大字符串對象,W4GB
Nclob多字節(jié)字符集的Clob,W4GB
Bfile外部二進(jìn)制文件,大小由OS決定
CHAR?size?
定長字符型(在0racle5、0racle6是變長),字符長度不夠自動(dòng)在右邊加空格符號。當(dāng)
字
符長度超出2000個(gè)則錯(cuò)誤。不指定大小缺省為1。
VARCHAR?size?
可變字符型,當(dāng)前與VARCHAR2(〈size>)相同。
VARCHAR2?SIZE?
數(shù)據(jù)庫培訓(xùn)教材
培訓(xùn)ORACLE請聯(lián)系/p>
32
可變字符型,當(dāng)前與VARCHAR(〈size>)相同。VARCHAR2類型的字段(列)可存放4000個(gè)字
符;但是VARCHAR2變量可以存放32,767個(gè)字符。大小必須指定。
NCHAR?size?和NVARCHAR2?size?
NCHAR和NVARCHAR2分別與CHAR和VARCHAR2有相同的大小。并用于于存放National
LanguageSupport(NLS)數(shù)據(jù),Oracle允許以本地語言存放數(shù)據(jù)和查詢數(shù)據(jù)。
如果將列名聲明成NCHAR、NVARCHAR2這樣的類型,則insert和select等語句中的具體值
前加N,不能直接按照普通字符類型進(jìn)行操作。看下面例子:
SQL>createtablenchar_tst(namenchar(6),addrnvarchar2(16),salnumber(9,2));
表已創(chuàng)建。
SQL>insertintonchar_tstvalues(N‘趙元杰',N'北京市海淀區(qū)',9999.99);
已創(chuàng)建1行。
SQL>select*fromnchar_tstwherenamelikeN'趙%';
NAMEADDRSAL
趙元杰北京市海淀區(qū)9999.99
SQL>select*fromnchar_tstwherenamelike'趙%';
select*fromnchar_tstwherenamelike'趙/'
*
ERROR位于第1行:
ORA-12704:字符集不匹配.
提示:雖然Oracle可以使用nchar,nvarchar2類型來存放字符數(shù)據(jù),但建議設(shè)計(jì)者不
要使
用NCHAR和NVARCHAR2。因?yàn)镃HAR和VARCHAR2就能存放漢字。
NUMBER?p>,<s?
<p>是數(shù)據(jù)的整數(shù)部分,〈s>是數(shù)據(jù)的精度(即小數(shù))部分,注意,<s>部分可以表示負(fù)的精度。
用<S>可以表示從小數(shù)點(diǎn)往右或往左保留多少位。如下表:
實(shí)際值數(shù)據(jù)類型存儲(chǔ)值
1234567.89Number1234567.89
1234567.89Number(8)1234568
1234567.89Number(6)出錯(cuò)
1234567.89Number(9,1)1234567.9
1234567.89Number(9,3)出錯(cuò)
1234567.89Number(7,2)出錯(cuò)
1234567.89Number(5,-2)1234600
數(shù)據(jù)庫培訓(xùn)教材
培訓(xùn)ORACLE請聯(lián)系/p>
33
1234511.89Number(5,-2)1234500
1234567.89Number(5,-4)1230000
1234567.89Number(*,1)1234567.9
Salnumber(7,2),一表示5位整數(shù),2位小數(shù).
DATE
Oracle的日期型用7個(gè)字節(jié)表示,每個(gè)日期型包含如下內(nèi)容:
Century(世紀(jì))
Year(年)
Month(月)
Day(天)
Hour(小時(shí))
Minute(分)
Second(秒)
II期型字段有下面特點(diǎn):
II期型字段的插入和更新可以數(shù)據(jù)型或字符并帶to_date函數(shù)說明即可。
缺省的日期格式有NLS_DATE_FORMAT參數(shù)控制,它的缺省格式為DD-M0N-YY。
缺省的時(shí)間是夜里00:00:00(即0點(diǎn)0分0秒)。
sysdate返回的是服務(wù)器的時(shí)間,見下面例子。
日期格式的顯示可以設(shè)置,見下面例子。
日期型可以運(yùn)算,見下面例子。見下面例子。
世紀(jì)用cc表示;年用yyyy表示,月用mm表示,II用dd表示,小時(shí)用hh24表示,分
用
mi表示,秒用ss表示。
例子:
SQL>createtablesave_info(per_idvarchar2(20),namevarchar2(20),tran_datedate,
2tran_valnumber(12,2));
表已創(chuàng)建。
SQL>insertintosave_infovalues('110105540609811'趙元杰',
2to_dateC2001.06.18','yyyy.mm.dd"),12345.66):
已創(chuàng)建1行。
SQL>select*fromsaveinfo;
PERIDNAMETRANDATETRANVAL
110105540609811趙元杰18-6月-011234.66
數(shù)據(jù)庫培訓(xùn)教材
培訓(xùn)ORACLE請聯(lián)系/p>
34
SQL>selectper_id,name,to_char(tran_date,,yyyy/mm/dd,),tran_valfromsave_info;
PERIDNAMETOCHAR(TRTRAN_VAL
110105540609811趙元杰2001/06/1812345.66
SQL>showparameternls_date_format
NAMETYPEVALUE
n1s_date_formatstring
SQL>altersessionsetn1s_date_format=
2'〃公元〃yyyy〃年〃mm〃月〃dd〃||〃’;
會(huì)話已更改。
SQL>selectsysdatefromdual;
SYSDATE
公元2001年05月18日
SQL>selectto_char(sysdate,?ccyyyy.mm.dd')fromdual;
TO_CHAR(SYSDA
212001.05.18
關(guān)于日期型的使用方法詳細(xì)請參考《0racle8iNationalLanguageSupportGuide》。
BLOB
大二進(jìn)制對象,每條記錄可存儲(chǔ)達(dá)4GB的數(shù)據(jù),詳細(xì)見后面章節(jié)。
CLOB
大字符對象,每條記錄可存儲(chǔ)達(dá)4GB的數(shù)據(jù),詳細(xì)見后面章節(jié)。
BFILE
外部二進(jìn)制文件,每條記錄可存儲(chǔ)達(dá)4GB的數(shù)據(jù)(與OS有關(guān)),詳細(xì)見后面章節(jié)。
數(shù)據(jù)庫培訓(xùn)教材
培訓(xùn)ORACLE請聯(lián)系/p>
35
RAW
非結(jié)構(gòu)的二進(jìn)制數(shù)據(jù),這些數(shù)據(jù)不被數(shù)據(jù)庫系統(tǒng)解釋。RAW可以存儲(chǔ)達(dá)2,000字節(jié)。
LONGRAW
大的二進(jìn)制類型數(shù)據(jù),LONGRAW是非結(jié)構(gòu)的二進(jìn)制數(shù)據(jù),這些數(shù)據(jù)不被數(shù)據(jù)庫系統(tǒng)解釋。
LONGRAW可以存儲(chǔ)達(dá)2GB字節(jié)。LONGRAW不能被索引,而RAW可以被索引。
ROWID
ROWID在Oracle數(shù)據(jù)庫中是一個(gè)虛的列,即系統(tǒng)用的特殊的列,不是我們建立的列。用于
對
數(shù)據(jù)庫中的每條記錄進(jìn)行定位。詳細(xì)見“Rowid的使用”章節(jié)。
UROWID
UR0WID是UniversalROWID的意思。即全球ROWID,它支持邏輯和物理ROWID,也作為外部
表的(通過getway訪問的非Oracle表)的ROWID。UROWID類型可以存儲(chǔ)所有的ROWID類型
的數(shù)據(jù)。
%TYPE類型的匹配:
books_printednumber(6);
bookssoldbooksprinted%TYPE;
books_sold的數(shù)據(jù)類型與book_printed的類型,?致;
(%TYPE類型在PL/SQL中介紹)。
空值與字符型、數(shù)字型的運(yùn)算:
null+<數(shù)字>=null(空值+數(shù)字仍是空值)
null><數(shù)字>=null(空值與數(shù)字比較結(jié)果為空值)
null||'字符串‘二字符串
number類型與以下類型具有同等的值域:
DEC
Decimal
DoublePREcision
Float
Integer
Int
Numeric
Real
Smallint
提示:雖然Oracle可以使用上面的子數(shù)據(jù)類型,但建議還是采用NUMBER(n,m)為好。因
為如
果使用子數(shù)據(jù)類型定義字段類型不當(dāng),可能引起數(shù)據(jù)在運(yùn)算方面的問題。
Long數(shù)據(jù)類型的限制:
數(shù)據(jù)庫培訓(xùn)教材
培訓(xùn)ORACLE請聯(lián)系/p>
36
select中可以用long;
update中可以用select子句;
insert中可以用Valus子句;
每個(gè)表只能允許一個(gè)long歹ij;
long列不能列出完整性約束(null、notnull除外);
long列不能被索引;
過程或存儲(chǔ)函數(shù)不能接收long型函數(shù);
存儲(chǔ)函數(shù)不能返回long型值。
long目前不能出現(xiàn)在以下情況中:
select中的Where,Groupby,orderby,Connectby,distinct;
不能對long列作substr,instr;
發(fā)達(dá)式或條件:
子查詢或集合中不能用long;
Createtable...asselect中不能用long;
§1.8SQL語句基礎(chǔ)
下面給出SQL語句的基本介紹,更詳細(xì)的描述見后面的章節(jié)。
§1.8.1SQL語句所用符號
操作符用途例子
+-表示正數(shù)或負(fù)數(shù),正數(shù)可省去+-1234.56
+將兩個(gè)數(shù)或表達(dá)式進(jìn)行相加A=c+b
-將兩個(gè)數(shù)或表達(dá)式進(jìn)行相減34-12
*將兩個(gè)數(shù)或表達(dá)式進(jìn)行相乘12*34
/除以一個(gè)數(shù)或表達(dá)式18*11
NULL空值判斷Wherenameisnull;
II字符串連接“01-1ltel_num
=等于測試Select*fromemp
wherename='趙元杰';
!=或o或八=不等于測試Select*fromemp
wherename!=’趙元杰';
<小于測試Select*fromemp
Wheresal<5000;
>大于測試Select*fromemp
Wheresal>5000;
<=小于等于測試Select*fromemp
Wheresal<=5000;
>=大于等于測試Select*fromemp
Wheresal>=5000;
數(shù)據(jù)庫培訓(xùn)教材
培訓(xùn)ORACLE請聯(lián)系/p>
37
Notin測試某值是否在一個(gè)指定的結(jié)果集中Selectname,addrfromexpert
wherelocalnotin,北京,,'上
海');
ANY將一個(gè)值與一組值進(jìn)行比較,返回滿足條
件的結(jié)果。必須跟!=,〈>,<=,>=
selectename,salfromemp
wheresal<=any(selectsalfrom
empwheredeptno=10)
SOME同ANY,必須*艮!
ALL將一個(gè)值與一組值比較,返回滿足條件的
所有列值。必須跟!=<>,<=,>=
Selectname,salfromemp
Wheresal<=
all(500,800,1200);
Notbetween
AandB
判斷某個(gè)值是否界于兩者之間。Selectname,salfromempWhere
salbetween500and1200;
(notjexists判斷某個(gè)列是否存在于一組值中。selectdname,deptnofrom
deptwhereexists
(select*fromempwhere
dept.deptno=emp.deptno)
A(not]likeb
[Escape4char,]
比較兩個(gè)模式是否相似,當(dāng)使用like語句
時(shí)Oracle不去訪問索引。
Select*fromemp
Whereenamelike'TH%';
Is[not]null測試值是否為空。Selectename,deptnofromemp
Wherecomm.Isnullor
comm.=0;
Not對結(jié)果的否定。Select*fromemp
Wheresalnot(sal<1000);等價(jià)
于
selectename,salfromemp
wheresal>=1000;
AND用于判斷兩個(gè)條件十分都滿足。Select*fromempwhere
Ename=,SIMTH,and
sal>=1000;
OR用于判斷兩個(gè)條件中是否有一個(gè)滿足。Select*fromempwhere
Ename=,SIMTH,or
ename=,SCOTT,;
UNION用于返回(組合)兩個(gè)查詢中所有唯一的
行。
Selectenamefromempunion
Selectenamefromemp;
UNIONALL用于返回(組合)兩個(gè)查詢中所有所有的
行。
INTERSECT用于返回兩個(gè)查詢中相同的行。Selectenamefromemp1
intersectselectenamefrom
emp2;
MINUS用于返回兩個(gè)查詢中的不同的行。
§1.8.2簡單select查詢
當(dāng)我們可以用SQL*PLUS登錄到SQL>下后,我們可以用DESC顯示某表的結(jié)構(gòu),也可以
用
select語句簡單查詢表中的一些列的內(nèi)容。
例:要查詢EMP表中員工的姓名、工資及出生日期,則:
SQL>selectename,sal,hiredatefromemp;
數(shù)據(jù)庫培訓(xùn)教材
培訓(xùn)ORACLE請聯(lián)系/p>
38
§1.9偽列及偽表
Oracle系統(tǒng)為了實(shí)現(xiàn)完整的關(guān)系數(shù)據(jù)庫功能,系統(tǒng)專門提供了一組稱為偽列
(Pseudocolumn)的數(shù)據(jù)庫列,這些列不是在建立對象(如建表)時(shí)由我們完成的,而是
在我們建立對象時(shí)由自動(dòng)Oracle完成的。Oracle目前有以下的偽列:
CURRVALandNEXTVAL使用序歹(I號的保留字
LEVEL查詢數(shù)據(jù)所對應(yīng)的級
ROWID記錄的唯?標(biāo)識
ROWNUM限制查詢結(jié)果集的數(shù)量
有關(guān)偽列的詳細(xì)解釋和使用見相關(guān)章節(jié)。
Oracle還提供了一個(gè)DUAL的偽表,該表主要目的是保證在使用SELECT語句中語句
的完整性而提供的,如:我們要查詢當(dāng)前的系統(tǒng)H期及時(shí)間,而系統(tǒng)的II期和時(shí)間并是放在
一個(gè)指定的表里。所以在from語句后就沒有表名給出。為了使用from后有個(gè)表名,我們
就用DUAL代替。如:
例1:查詢Oracle系統(tǒng)日期及時(shí)間:
SQL>selectto_char(sysdate,'yyyy.mm.ddhh24:mi:ss')fromDUAL;
TO_CHAR(SYSDATE;YY
2001.06.0207:28:09
例2:計(jì)算一下5000+5000*0.1的結(jié)果是多少,則:
SQL>select5000+5000*0.1fromDUAL;
5000+5000*0.1
5500
§1.10使用SQLWorksheet工作
在新的Oracle版本里,系統(tǒng)提供了一個(gè)叫SQLWorksheet的圖形SQL工作環(huán)境,它是
ORACLEEnterpriseManager的一部分。使用它可以免去在SQL>下編輯行命令的不便。它
士
兀
全是在圖形方式進(jìn)行。它的啟動(dòng)有以下幾種方法:
從ORACLEEnterpriseManager中啟動(dòng)
從Administrtor工具中啟動(dòng)
從操作系統(tǒng)中啟動(dòng)
下面給出在操作系統(tǒng)下啟動(dòng)SQLWorksheet工具工作的步驟:
數(shù)據(jù)庫培訓(xùn)教材
培訓(xùn)ORACLE請聯(lián)系/p>
39
1)點(diǎn)擊SQLWorksheet圖標(biāo),即選擇開始->程序->Oracle-OraHome81->database
Administration->SQLPLUSWorksheet?選中SQLPLUSWorksheet后出現(xiàn)如下畫面:
圖1.10-1使用SQLWorksheet的登錄畫面
在用戶名、口令及服務(wù)輸入ORACLE的有效用戶名、口令及連接字串再點(diǎn)擊確定后進(jìn)入如圖
1.10-2所示的畫面。
2)當(dāng)進(jìn)入圖1.10-2所示的畫面后。你就可以工作了。目前的版本是在屏幕的上方輸入命令,
屏幕的下方是系統(tǒng)顯示結(jié)果。
3)我們將光標(biāo)點(diǎn)擊到屏幕上方,輸入SQL命令,如輸入:
selectename,salfromscott.emp;
輸入完成命令后,用光標(biāo)點(diǎn)擊左邊的執(zhí)行圖標(biāo),Oracle會(huì)結(jié)果顯示在屏幕的下方:
數(shù)據(jù)庫培訓(xùn)教材
培訓(xùn)ORACLE請聯(lián)系一】3705091575
40
圖h10-2登錄成功后的畫面
圖1.10-3查詢命令及顯示結(jié)果畫面
數(shù)據(jù)庫培訓(xùn)教材
培訓(xùn)ORACLE請聯(lián)系/p>
41
從SQLWorksheet工具中可以看出,該工具提供了相當(dāng)豐富的功能。下面給出個(gè)功能的簡
要
說明:
1.文件:
改變數(shù)據(jù)庫連接:可以連接到另外的用戶和數(shù)據(jù)庫上去;
打開:可以打開現(xiàn)有文件;
將輸入另存為:將當(dāng)前命令存為一個(gè)文件;
將下方顯示的結(jié)果存為一個(gè)文件。
2.編輯:
剪切:將當(dāng)前選中字符進(jìn)行剪切;
復(fù)制:將選中字符進(jìn)行剪切;
粘貼:將緩沖區(qū)字符進(jìn)行粘貼;
全選:對當(dāng)前畫面所有字符全選;
全部清除:清除目前的所有內(nèi)容。
3.工作單:
執(zhí)行:執(zhí)行當(dāng)前的命令;
運(yùn)行本地腳本:運(yùn)行操作系統(tǒng)下某個(gè).SQL文件(點(diǎn)擊后提示輸入文件名);
命令歷史記錄:查看命令歷史記錄;
上一條命令:顯示上一條命令。
提示:如果你的SQL顯示的不是漢字(出現(xiàn)亂字符),請你將你的N7Z2OOO/98
環(huán)
境下的漢字變量設(shè)置與服務(wù)器的一樣就好了。在WINDOWSNT環(huán)境設(shè)置漢字變量步驟:
用regedif修改注冊表中的所有ORACLE字符集項(xiàng),如:
“點(diǎn)擊:開始=》運(yùn)行=》輸入reged”;
2)點(diǎn)擊“HEY_LOCAL_MACH1NE”左邊的“+”以展開目錄;
3)點(diǎn)擊aSOFTWARE"左邊的"+”以展開目錄;
4)點(diǎn)擊aORACLE"項(xiàng);
5)修改。心1CLE樹下所有“NLS”變量與pr%就中的一致。
關(guān)于漢字環(huán)境變量的設(shè)置,請參閱《Oracle8i/9I初級數(shù)據(jù)庫管理》。
數(shù)據(jù)庫培訓(xùn)教材
培訓(xùn)ORACLE請聯(lián)系/p>
42
第二章查詢基礎(chǔ)
下面給出查詢的一些基本的操作描述,如果你是位Oracle老手則可以跳這?章。
§2.1SELECT語句
在關(guān)系數(shù)據(jù)庫中,使用頻率最高要算SELECT語句了。盡管SELECT語句的使用非常
簡單,但確很有學(xué)問。下面簡單介紹有關(guān)SELECT語句的常用方法。
1.命令語法:
SELECT的簡單語法:
SELECT[DISTINCTIALL]{*Icolumn1[,column2]...}
FROM{table_lI(subquery)}[alias]
[,{table_2I(subquery)}[alias]]...
[WHEREcondition]
[CONNECTBYcondition[STARTWITHcondition]
[GROUPBYexpnj[HAVINGexpnj
[{UNION[ALL]IINTERSECTIMINUS}SELECT...]
IORDERBYlexpnJ[ASCIDESCJ
(FORUPDATE[OF[userjtableIview]column]
[NOWAITJ
詳細(xì)語法結(jié)構(gòu)需查閱最新ORACLE原版《ORACLE8iSQLREFERENCEMANUAL》或
?ORACLE9iSQLREFERENCEMANUAL》
§2.2SQL中的單記錄函數(shù)
許多資料(包括Oracle的資料)把Oracle的SQL語句中用到的函數(shù)分為單值函數(shù)和多
值函數(shù),單值函數(shù)又分為字符函數(shù)和數(shù)字函數(shù)。卜面分別介紹它們。
§2.2.1單記錄字符函數(shù)
函數(shù)說明
ASCII返回對應(yīng)字符的十進(jìn)制值
CHR給出十進(jìn)制返回字符
數(shù)據(jù)庫培訓(xùn)教材
培訓(xùn)ORACLE請聯(lián)系/p>
43
CONCAT拼接兩個(gè)字符串,與II相同
INITCAT將字符串的第一個(gè)字母變?yōu)榇髮?/p>
INSTR找出某個(gè)字符串的位置
INSTRB找出某個(gè)字符串的位置和字節(jié)數(shù)
LENGTH以字符給出字符串的長度
LENGTHB以字節(jié)給出字符串的長度
LOWER將字符串轉(zhuǎn)換成小寫
LPAD使用指定的字符在字符的左邊填充
LTRIM在左邊裁剪掉指定的字符
RPAD使用指定的字符在字符的右邊填充
RTRIM在右邊裁剪掉指定的字符
REPLACE執(zhí)行字符串搜索和替換
SUBSTR取字符串的子串
SUBSTRB取字符串的子串(以字節(jié))
SOUNDEX返回?個(gè)同音字符串
TRANSLATE執(zhí)行字符串搜索和替換
TRIM裁剪掉前面或后面的字符串
UPPER將字符串變?yōu)榇髮?/p>
NVL以?個(gè)值來替換空值
ASCII(<cl>)
?1>是字符串。返回與指定的字符對應(yīng)的十進(jìn)制數(shù)。
SQL>selectascii('A')A,ascii('a')a,ascii('O')zero,ascii('')spacefromdual;
AaZEROSPACE
65974832
SQL>selectascii('趙')zhao,length('趙')lengfromdual;
ZHAOLENG
547401
CHR(<I>[NCHAR])
給出整數(shù),返回對應(yīng)字符。如:
SQL>selectchr(54740)zhao,chr(65)chr65fromdual;
ZHC
趙A
CONCAT(<cl>,<c2>)
數(shù)據(jù)庫培訓(xùn)教材
培訓(xùn)ORACLE請聯(lián)系/p>
44
SQL>selectconcatfO10-',
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- Windows Server網(wǎng)絡(luò)管理項(xiàng)目教程(Windows Server 2022)(微課版)3.2 DHCP-任務(wù)1 安裝DHCP服務(wù)器
- 醫(yī)院感控新視野-從理論到實(shí)踐的全面掌握
- 高中語文第4單元古代傳記第11課廉頗藺相如列傳課件新人教版必修
- 2024-2025學(xué)年八年級上學(xué)期地理期中模擬試卷(湘教版+含答案解析)
- 江蘇省揚(yáng)州市寶應(yīng)縣2023-2024學(xué)年八年級上學(xué)期期中語文試卷(含答案解析)
- 小學(xué)假期安全教育教案
- 二級建造師施工管理課件第3章題
- 高中語文第6單元觀察與批判13林教頭風(fēng)雪山神廟裝在套子里的人課件新人教版必修下冊
- 高中語文唐宋詞5第十一課一蓑煙雨任平生-抒志詠懷課件語文版選修唐宋詩詞鑒賞
- 2024至2030年中國擦手紙盒數(shù)據(jù)監(jiān)測研究報(bào)告
- 剖宮產(chǎn)瘢痕妊娠護(hù)理查房
- 縫紉機(jī)的培訓(xùn)課件
- 半導(dǎo)體智能制造與自動(dòng)化技術(shù)
- 高速清障救援培訓(xùn)課件
- 民宿溫泉旅游可行性方案
- 電視劇導(dǎo)演職業(yè)規(guī)劃案例
- 投標(biāo)報(bào)價(jià)承諾書
- TLT軸流風(fēng)機(jī)液壓缸結(jié)構(gòu)及工作原理介紹
- 武術(shù)套路冬季訓(xùn)練計(jì)劃書
- 消防員心理培訓(xùn)課件
- ccu實(shí)習(xí)生出科個(gè)人小結(jié)
評論
0/150
提交評論