Oracle的使用入門課件_第1頁(yè)
Oracle的使用入門課件_第2頁(yè)
Oracle的使用入門課件_第3頁(yè)
Oracle的使用入門課件_第4頁(yè)
Oracle的使用入門課件_第5頁(yè)
已閱讀5頁(yè),還剩71頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Oracle數(shù)據(jù)庫(kù)設(shè)計(jì)入門第十章Oracle數(shù)據(jù)庫(kù)設(shè)計(jì)入門第十章1本章目標(biāo)理解數(shù)據(jù)庫(kù)設(shè)計(jì)的基本方法掌握創(chuàng)建用戶分配權(quán)限掌握序列掌握oracle常用函數(shù)本章目標(biāo)理解數(shù)據(jù)庫(kù)設(shè)計(jì)的基本方法2數(shù)據(jù)庫(kù)范式概念設(shè)計(jì)范式(范式,數(shù)據(jù)庫(kù)設(shè)計(jì)范式,數(shù)據(jù)庫(kù)的設(shè)計(jì)范式)是符合某一種級(jí)別的關(guān)系模式的集合。構(gòu)造數(shù)據(jù)庫(kù)必須遵循一定的規(guī)則。在關(guān)系數(shù)據(jù)庫(kù)中,這種規(guī)則就是范式。關(guān)系數(shù)據(jù)庫(kù)中的關(guān)系必須滿足一定的要求,即滿足不同的范式。目前關(guān)系數(shù)據(jù)庫(kù)有六種范式數(shù)據(jù)庫(kù)范式概念設(shè)計(jì)范式(范式,數(shù)據(jù)庫(kù)設(shè)計(jì)范式,數(shù)據(jù)庫(kù)的設(shè)計(jì)范3數(shù)據(jù)庫(kù)的范式第一范式

第一范式(1NF)是指數(shù)據(jù)庫(kù)表的每一列是不可分割的基本數(shù)據(jù)項(xiàng),同一列中不能有多個(gè)值,即實(shí)體中的某個(gè)屬性不能有多個(gè)值或者不能有重復(fù)的屬性 例如:張三這個(gè)實(shí)體不能在性別這個(gè)屬性上存在可男可女的情況.第二范式

第二范式(2NF)是在第一范式(1NF)的基礎(chǔ)上建立起來(lái)的,要求數(shù)據(jù)庫(kù)表中的每個(gè)實(shí)例或行必須可以被惟一地區(qū)分

例如:張三這個(gè)實(shí)體必須有被唯一標(biāo)識(shí)可用的屬性(學(xué)號(hào)或者身份證號(hào)).第三范式

滿足第三范式(3NF)必須先滿足第二范式(2NF)。簡(jiǎn)而言之,第三范式(3NF)要求一個(gè)數(shù)據(jù)庫(kù)表中不包含已在其它表中已包含的非主關(guān)鍵字信息 例如:張三的性別值沒(méi)有必要在多個(gè)表重復(fù)出現(xiàn).(可以允許主外鍵關(guān)聯(lián)) 一般設(shè)計(jì)只要求滿足到3NF就可以了數(shù)據(jù)庫(kù)的范式第一范式4PowerDesigner的使用PowerDesigner主要包括以下幾個(gè)功能部分:DataArchitect

這是一個(gè)強(qiáng)大的數(shù)據(jù)庫(kù)設(shè)計(jì)工具。

ProcessAnalyst

這部分用于創(chuàng)建功能模型和數(shù)據(jù)流圖,創(chuàng)建"處理層次關(guān)系"。

AppModeler

為客戶/服務(wù)器應(yīng)用程序創(chuàng)建應(yīng)用模型。

ODBCAdministrator

此部分用來(lái)管理系統(tǒng)的各種數(shù)據(jù)源。PowerDesigner的使用PowerDesigner主5PowerDesigner的界面PowerDesigner的界面6數(shù)據(jù)庫(kù)的ER模型數(shù)據(jù)庫(kù)的ER模型7數(shù)據(jù)庫(kù)的物理模型數(shù)據(jù)庫(kù)的物理模型8正向工程直接地從PDM產(chǎn)生一個(gè)數(shù)據(jù)庫(kù),或產(chǎn)生一個(gè)能在你的數(shù)據(jù)庫(kù)管理系統(tǒng)環(huán)境中運(yùn)行的數(shù)據(jù)庫(kù)腳本,這是正向工程。步驟: 1選擇Database->GenerateDatabase。

數(shù)據(jù)庫(kù)生成對(duì)話框出現(xiàn)。它顯示生成叁數(shù)。默認(rèn)叁數(shù)已經(jīng)被選擇。

2SQL的文件名稱框中鍵入PDM_TUTORIAL。

3在目錄框中,輸入一條路徑。

4選擇生成腳本的按鈕。

5選擇僅僅生成一個(gè)文件。

6點(diǎn)擊Selection定位鍵。

7點(diǎn)擊底部表定位鍵。

表頁(yè)列出模型中選擇可用的所有數(shù)據(jù)庫(kù)表。

8全部點(diǎn)擊選擇工具。這選擇所有的表復(fù)選框。

9切換Views和Domains選擇需要的視圖和域。

10點(diǎn)擊確定。正向工程直接地從PDM產(chǎn)生一個(gè)數(shù)據(jù)庫(kù),或產(chǎn)生一個(gè)能在你的9逆向工程2-1將已存在的數(shù)據(jù)庫(kù)進(jìn)新的PDM之內(nèi)。數(shù)據(jù)來(lái)源可能是從腳本文件或一個(gè)開(kāi)放數(shù)據(jù)庫(kù)連接數(shù)據(jù)來(lái)源,這是逆向工程。一般要先定義一個(gè)數(shù)據(jù)庫(kù)對(duì)象ODBC,然后再生成新的PDM。逆向工程來(lái)自一個(gè)腳本文件的數(shù)據(jù)庫(kù)對(duì)象步驟: 1選擇File->ReverseEngineer->Database顯示新的物理數(shù)據(jù)模型的對(duì)話框。

2點(diǎn)擊部份Radio按鈕。

3選擇下拉列表框的一個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)。

4點(diǎn)擊確定。數(shù)據(jù)庫(kù)逆向工程對(duì)話框出現(xiàn)。

5點(diǎn)擊使用腳本文件的Radio按鈕。

6瀏覽適當(dāng)?shù)哪夸涍x擇腳本文件。

7點(diǎn)擊選項(xiàng)定位鍵顯示選項(xiàng)頁(yè)。

8選擇逆向工程選項(xiàng)。

9點(diǎn)擊確定。逆向工程2-1將已存在的數(shù)據(jù)庫(kù)進(jìn)新的PDM之內(nèi)。數(shù)據(jù)來(lái)10逆向工程2-2逆向工程一個(gè)ODBC到新的PDM步驟: 1選擇File->ReverseEngineer->Database顯示新的物理數(shù)據(jù)模型的對(duì)話框。

2點(diǎn)擊Share單選框。

3選擇下拉列表框的一個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)。

4點(diǎn)擊確定。數(shù)據(jù)庫(kù)逆向工程對(duì)話框出現(xiàn)。。

5點(diǎn)擊使用一個(gè)ODBC單選框,選擇一個(gè)ODBC。

6點(diǎn)擊選項(xiàng)定位鍵顯示選項(xiàng)頁(yè)。

7選擇逆向工程選項(xiàng)。

8點(diǎn)擊確定。ODBC逆向工程對(duì)話框出現(xiàn)。

9在上面部份對(duì)話框的下拉列表框中選擇限定詞和擁有者。

10點(diǎn)擊一個(gè)對(duì)象類型定位鍵。

11點(diǎn)擊確定。

逆向工程2-211DDL概述DDL為數(shù)據(jù)定義語(yǔ)言以下為部分內(nèi)容創(chuàng)建數(shù)據(jù)庫(kù)創(chuàng)建用戶創(chuàng)建表空間建表建視圖建索引建過(guò)程函數(shù)包等。。。。建作業(yè)DDL概述DDL為數(shù)據(jù)定義語(yǔ)言以下為部分內(nèi)容12Linux下啟動(dòng)oracle首先在shell環(huán)境下輸入sqlplus“/assysdba”以管理員身份進(jìn)入在sql>提示符下敲入startup命令啟動(dòng)數(shù)據(jù)庫(kù)啟動(dòng)oracle監(jiān)聽(tīng)器lsnrctlstartLinux下啟動(dòng)oracle首先在shell環(huán)境下輸入sql13Winndow下訪問(wèn)linuxoracle首先windows下安裝oracle客戶端工具修改tnsname.ora文件,添加linux下oralce的ip地址等信息利用plsqldevpment工具連接到liunx中Winndow下訪問(wèn)linuxoracle首先window14Oracle邏輯結(jié)構(gòu)圖Oracle邏輯結(jié)構(gòu)圖15創(chuàng)建表空間創(chuàng)建表空間的語(yǔ)法是:createtablespacetablespacenamedatafile‘filename’[sizeinteger[K|M]][autoextend[OFF|ON]];創(chuàng)建表空間創(chuàng)建表空間的語(yǔ)法是:createtablespa16數(shù)據(jù)庫(kù)用戶概念數(shù)據(jù)庫(kù)系統(tǒng)安全需要控制和存儲(chǔ)以下內(nèi)容用戶名口令的組合用戶是否授權(quán)可連接數(shù)據(jù)庫(kù)用戶創(chuàng)建實(shí)體集的可用的磁盤空間的大小用戶資源的限制,是否啟動(dòng)了數(shù)據(jù)庫(kù)審記功能用戶可進(jìn)行那些操作創(chuàng)建用戶的時(shí)候系統(tǒng)自動(dòng)對(duì)該用戶建立一個(gè)相應(yīng)的模式,模式名和用戶名相同,用戶僅與一個(gè)同名的模式對(duì)應(yīng)和用戶相關(guān)的還包含用戶默認(rèn)表空間用戶臨時(shí)表空間用戶資源文件PROFILE數(shù)據(jù)庫(kù)用戶概念數(shù)據(jù)庫(kù)系統(tǒng)安全需要控制和存儲(chǔ)以下內(nèi)容17建用戶語(yǔ)法 create

user用戶名

identified

by“密碼”

default

tablespace默認(rèn)表空間名

temporary

tablespace臨時(shí)表空名

profile

DEFAULT資源文件QUOTA

INTEGEK[M][UNLIMITED]

ONposdata;建用戶語(yǔ)法 createuser用戶名

identi18建用戶CREATE

USER“POS”IDENTIFIED

BY“pos”

DEFAULT

TABLESPACEposdata

TEMPORARY

TABLESPACEpostmp

PROFILE

DEFAULT

QUOTA

100mONposdata說(shuō)明

POS用戶密碼是pos默認(rèn)表空間是posdata,臨時(shí)表空間是postmp此用戶只能使用posdata上的100M空間建用戶CREATEUSER“POS”IDENTIFIE19數(shù)據(jù)庫(kù)權(quán)限概述數(shù)據(jù)庫(kù)系統(tǒng)通過(guò)安全措施防止非法用戶對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ),以保證數(shù)據(jù)庫(kù)安全運(yùn)行,Oracle的安全機(jī)制主要是通過(guò)權(quán)限進(jìn)行設(shè)置的,通過(guò)權(quán)限設(shè)置防止非權(quán)限的數(shù)據(jù)庫(kù)存取,非權(quán)限的對(duì)模式實(shí)體的存取,只有通過(guò)權(quán)限的人證才可以存取數(shù)據(jù)庫(kù)中數(shù)據(jù)。ORACLE根據(jù)系統(tǒng)管理方式不同,可以將權(quán)限分為兩類系統(tǒng)權(quán)限實(shí)體權(quán)限。數(shù)據(jù)庫(kù)權(quán)限概述數(shù)據(jù)庫(kù)系統(tǒng)通過(guò)安全措施防止非法用戶對(duì)數(shù)據(jù)進(jìn)行存20權(quán)限管理系統(tǒng)權(quán)限

系統(tǒng)權(quán)限是執(zhí)行某一類或者在某一用戶中執(zhí)行某種操作的權(quán)限,每一種系統(tǒng)權(quán)限允許用戶執(zhí)行一種特殊的數(shù)據(jù)庫(kù)操作或者某一類數(shù)據(jù)庫(kù)操作。比如建表空間建用戶修改數(shù)據(jù)庫(kù)結(jié)構(gòu)修改用戶權(quán)限修改數(shù)據(jù)庫(kù)結(jié)構(gòu)修改任何用戶的實(shí)體,創(chuàng)建基表,視圖,同義,創(chuàng)建數(shù)據(jù)庫(kù)鏈路等權(quán)限。實(shí)體權(quán)限

實(shí)體權(quán)限是指某一用戶對(duì)其他用戶的表,視圖,序列,存儲(chǔ)過(guò)程,函數(shù),包的操作權(quán)限,不同類型的實(shí)體具有不同的實(shí)體權(quán)限。對(duì)于某些 模式實(shí)體,比如聚簇,索引,觸發(fā)器,數(shù)據(jù)庫(kù)鏈路等沒(méi)有相應(yīng)的實(shí)體 權(quán)限,這些權(quán)限由系統(tǒng)權(quán)限進(jìn)行管理。權(quán)限管理系統(tǒng)權(quán)限21分配/回收權(quán)限語(yǔ)法分配權(quán)限

GRANT權(quán)限TO回收權(quán)限用戶名角色名publicRevoke權(quán)限FROM用戶名角色名public分配/回收權(quán)限語(yǔ)法分配權(quán)限用戶名角色名publicRevok22分配/回收系統(tǒng)權(quán)限授權(quán) SQL>GRANTcreatesession,createtabletoJAME,JACK SQL>GRANTcreatesession,createtabletoJAME,JACKWITHADMINOPTION回收權(quán)限 SQL>REVOKEcreatesession,createtableFROMJAME,JACK 說(shuō)明:權(quán)限回收并沒(méi)有回收由回收者已經(jīng)分配出去的權(quán)限,這點(diǎn)和SQLSERVER的revoke權(quán)限fromusercascade不同

分配/回收系統(tǒng)權(quán)限授權(quán)23分配/回收實(shí)體權(quán)限授權(quán)

SQL>GRANTSELECT,UPDATE,DELETEONordersTOJACK回收權(quán)限

SQL>REVOKESELECT,UPDATEONordersFROMJACK分配/回收實(shí)體權(quán)限授權(quán)24創(chuàng)建表創(chuàng)建表語(yǔ)句:Createtabletablename(filednametype[notnull,default],..)[Tablespacetablespace_name];對(duì)表加注釋:commentontabletablenameis‘…’;對(duì)表字段加注釋:commentoncolumnT_USER.SUSERis‘…‘;創(chuàng)建表創(chuàng)建表語(yǔ)句:25Oracle數(shù)據(jù)類型創(chuàng)建表時(shí),必須為各個(gè)列指定數(shù)據(jù)類型以下是Oracle數(shù)據(jù)類型的類別:數(shù)據(jù)類型字符數(shù)值日期時(shí)間RAW/LONGRAWLOBOracle數(shù)據(jù)類型創(chuàng)建表時(shí),必須為各個(gè)列指定數(shù)據(jù)類型數(shù)據(jù)類26Oracle數(shù)據(jù)類型(字符)當(dāng)需要固定長(zhǎng)度的字符串時(shí),使用CHAR數(shù)據(jù)類型。CHAR數(shù)據(jù)類型存儲(chǔ)字母數(shù)字值。CHAR數(shù)據(jù)類型的列長(zhǎng)度可以是1到2000個(gè)字節(jié)。VARCHAR2數(shù)據(jù)類型支持可變長(zhǎng)度字符串VARCHAR2數(shù)據(jù)類型存儲(chǔ)字母數(shù)字值VARCHAR2數(shù)據(jù)類型的大小在1至4000個(gè)字節(jié)范圍內(nèi)LONG數(shù)據(jù)類型存儲(chǔ)可變長(zhǎng)度字符數(shù)據(jù)LONG數(shù)據(jù)類型最多能存儲(chǔ)2GB字符數(shù)據(jù)類型CHARVARCHAR2LONGOracle數(shù)據(jù)類型(字符)當(dāng)需要固定長(zhǎng)度的字符串時(shí),使用27數(shù)據(jù)型日期型數(shù)值數(shù)據(jù)類型可以存儲(chǔ)整數(shù)、浮點(diǎn)數(shù)和實(shí)數(shù)最高精度為38位數(shù)值數(shù)據(jù)類型的聲明語(yǔ)法:NUMBER[(p[,s])]P表示小數(shù)點(diǎn)前的位數(shù),S表示小數(shù)點(diǎn)的位數(shù)日期時(shí)間數(shù)據(jù)類型存儲(chǔ)日期和時(shí)間值,包括年、月、日,小時(shí)、分鐘、秒主要的日期時(shí)間類型有:DATE-存儲(chǔ)日期和時(shí)間部分,精確到整個(gè)的秒TIMESTAMP-存儲(chǔ)日期、時(shí)間和時(shí)區(qū)信息,秒值精確到小數(shù)點(diǎn)后6位數(shù)據(jù)型日期型數(shù)值數(shù)據(jù)類型28序列Sequence為所有的用戶生成統(tǒng)一的序列號(hào),也可以給某些主鍵列自動(dòng)生成編號(hào)值語(yǔ)法格式:CREATESEQUENCE[schema.]sequence[INCREMENTBYinteger][STARTWITHinteger][MAXVALUEinteger|NOMAXVALUE][MINVALUEinteger|NOMINVALUE][CYCLE|NOCYCLE][CACHEinteger|NOCACHE]序列Sequence為所有的用戶生成統(tǒng)一的序列號(hào),也可以給某29示例-序列創(chuàng)建和使用1、創(chuàng)建序列createsequenceseq_sno incrementby1 startwith1 maxvalue99999 nocycle;2、刪除序列

dropsequenceseq_sno;3、取序列對(duì)象中的當(dāng)前值

selectseq_sno.currvalfromdual;4、取序列對(duì)象中的下一個(gè)值

selectseq_sno.nextvalfromdual;

--此時(shí)對(duì)象中當(dāng)前序列值自動(dòng)增長(zhǎng)了示例-序列創(chuàng)建和使用1、創(chuàng)建序列30“虛”列rownumrownum是一個(gè)虛列,在表中并不存在,oracle為每個(gè)查詢后的結(jié)果集的記錄分別編號(hào),該編號(hào)就是rownum1)限制返回的結(jié)果集只能是10行select*fromtab_studentwhererownum<102)將編號(hào)保存到實(shí)際的列中updatetab_studentsetcol_num=rownum;3)不能用rownum對(duì)比更大的數(shù)select*fromtab_studentwhererownum>10--該條件返回false“虛”列rownumrownum是一個(gè)虛列,在表中并不存在31ORACLE中常見(jiàn)系統(tǒng)函數(shù)字符串函數(shù)算術(shù)函數(shù)日期函數(shù)其他函數(shù)ORACLE中常見(jiàn)系統(tǒng)函數(shù)字符串函數(shù)32字符串函數(shù)函數(shù)返回值A(chǔ)SCII(char)字符串首字符的ASC碼值TO_CHAR(S,F)ASC碼值為需要轉(zhuǎn)化的字符F為格式INITCAP(char)將字符串中每個(gè)單詞的首字母大寫INSTR(char1,char2[,m[,n]])給出字符串char1中從起始位置m開(kāi)始第n次出現(xiàn)子串char2的位置LENGTH(char)計(jì)算字符串的長(zhǎng)度LOWER(char)、UPPER(char)將字符串中所有的大寫字母變?yōu)樾?大)寫LPAD(char1,n[,char2])從左側(cè)用字符串char2補(bǔ)齊字符串char1至長(zhǎng)度nLTRIM(char[,SET])把char中最左側(cè)的若干個(gè)字符去掉,以使其首字符不在SET中RPAD(char1,n[,char2])從右側(cè)用char2補(bǔ)齊char1至長(zhǎng)度n.RTRIM(char[,SET])把char中最右側(cè)的若干個(gè)字符去掉,以使其尾字符不在SET中TO_DATE(char[,fmt])將字符型的日期轉(zhuǎn)換為日期型TO_NUMBER(char[,fmt])將字符串轉(zhuǎn)換為數(shù)字字符串函數(shù)函數(shù)返回值A(chǔ)SCII(char)字符串首字符的AS33算術(shù)函數(shù)函數(shù)返回值A(chǔ)BS(n)返回n的絕對(duì)值CELL(n)返回大于或等于n的最小整數(shù)FLOOR(n)返回小于或等于n的最大整數(shù)MOD(m,n)返回m除以n的余數(shù)POWER(m,n)返回m的n次方ROUND(m[,n])對(duì)m進(jìn)行四舍五入(n大于0時(shí),將m四舍五入到小數(shù)點(diǎn)右邊n位,n等于零時(shí),表示對(duì)m進(jìn)行取整,n小于0時(shí),表示將m四舍五入到小數(shù)點(diǎn)左邊n位。)SIGN(n)判斷n的正負(fù)(n大于0返回,n等于0返回0,n小于0返回-1SQRT(n)返回n的平方根TRUNC(m[,n])對(duì)m進(jìn)行截?cái)嗖僮鳎╪截?cái)嗟叫?shù)點(diǎn)后第n位,如果n未給出,則系統(tǒng)默認(rèn)為0,n也可以為負(fù)數(shù),表示保留到小數(shù)點(diǎn)前第n位。算術(shù)函數(shù)函數(shù)返回值A(chǔ)BS(n)返回n的絕對(duì)值CELL(n)返34日期函數(shù)函數(shù)返回值A(chǔ)DD_MONTHS(d,n)返回d加上n個(gè)月的日期LAST_DAY(d)返回d所在月份最后一天的日期MONTHS_BETWEEN(d1,d2)返回d1和d2之間相隔的月數(shù)NEXT_DAY(d,s)返回晚于d的第一個(gè)s的日期(s要求是Sunday,Monday,Tuesday,Wednsday,Thursday,Friday,SaturdaySYSDATE返回系統(tǒng)當(dāng)前日期和時(shí)間。To_date字符轉(zhuǎn)化為日期日期函數(shù)函數(shù)返回值A(chǔ)DD_MONTHS(d,n)返回d加上n35其他函數(shù)函數(shù)返回值GREATEST(參數(shù)1[,參數(shù)2]…)返回參數(shù)1,參數(shù)2…中的最大值LEAST(參數(shù)1[,參數(shù)2]…)返回參數(shù)1,參數(shù)2…中的最小值DECODE(e,s1,t1[,s2,t2]…[,def])若e等于s1,函數(shù)返回t1,若e等于s2,函數(shù)返回t2,…否則,函數(shù)返回def。表達(dá)式e允許是任何數(shù)據(jù)類型,但要求被比較的各個(gè)s具有相同的數(shù)據(jù)類型。def被默認(rèn)時(shí),表示默認(rèn)值是NULLUSER返回當(dāng)前Oracle用戶的用戶名NVL(參數(shù)1,參數(shù)2)如果參數(shù)1非空則返回參數(shù)1,反之則返回參數(shù)2。其他函數(shù)函數(shù)返回值GREATEST(參數(shù)1[,參數(shù)2]…)返36數(shù)據(jù)備份imp/exp命令:導(dǎo)入導(dǎo)出數(shù)據(jù) help=y 查看幫助 file=data.dmp 導(dǎo)入從(導(dǎo)出到)數(shù)據(jù)文件data.dmp fromuser=user1將user1的數(shù)據(jù) touser=user2到user2的數(shù)據(jù)如:imppos/posfile=linuxpos.dmp;exppos/posfile=linuxpos.dmp;數(shù)據(jù)備份imp/exp命令:導(dǎo)入導(dǎo)出數(shù)據(jù)imppos/po37總結(jié)理解數(shù)據(jù)庫(kù)設(shè)計(jì)的基本方法掌握創(chuàng)建用戶分配權(quán)限掌握序列掌握oracle常用函數(shù)總結(jié)理解數(shù)據(jù)庫(kù)設(shè)計(jì)的基本方法38Oracle數(shù)據(jù)庫(kù)設(shè)計(jì)入門第十章Oracle數(shù)據(jù)庫(kù)設(shè)計(jì)入門第十章39本章目標(biāo)理解數(shù)據(jù)庫(kù)設(shè)計(jì)的基本方法掌握創(chuàng)建用戶分配權(quán)限掌握序列掌握oracle常用函數(shù)本章目標(biāo)理解數(shù)據(jù)庫(kù)設(shè)計(jì)的基本方法40數(shù)據(jù)庫(kù)范式概念設(shè)計(jì)范式(范式,數(shù)據(jù)庫(kù)設(shè)計(jì)范式,數(shù)據(jù)庫(kù)的設(shè)計(jì)范式)是符合某一種級(jí)別的關(guān)系模式的集合。構(gòu)造數(shù)據(jù)庫(kù)必須遵循一定的規(guī)則。在關(guān)系數(shù)據(jù)庫(kù)中,這種規(guī)則就是范式。關(guān)系數(shù)據(jù)庫(kù)中的關(guān)系必須滿足一定的要求,即滿足不同的范式。目前關(guān)系數(shù)據(jù)庫(kù)有六種范式數(shù)據(jù)庫(kù)范式概念設(shè)計(jì)范式(范式,數(shù)據(jù)庫(kù)設(shè)計(jì)范式,數(shù)據(jù)庫(kù)的設(shè)計(jì)范41數(shù)據(jù)庫(kù)的范式第一范式

第一范式(1NF)是指數(shù)據(jù)庫(kù)表的每一列是不可分割的基本數(shù)據(jù)項(xiàng),同一列中不能有多個(gè)值,即實(shí)體中的某個(gè)屬性不能有多個(gè)值或者不能有重復(fù)的屬性 例如:張三這個(gè)實(shí)體不能在性別這個(gè)屬性上存在可男可女的情況.第二范式

第二范式(2NF)是在第一范式(1NF)的基礎(chǔ)上建立起來(lái)的,要求數(shù)據(jù)庫(kù)表中的每個(gè)實(shí)例或行必須可以被惟一地區(qū)分

例如:張三這個(gè)實(shí)體必須有被唯一標(biāo)識(shí)可用的屬性(學(xué)號(hào)或者身份證號(hào)).第三范式

滿足第三范式(3NF)必須先滿足第二范式(2NF)。簡(jiǎn)而言之,第三范式(3NF)要求一個(gè)數(shù)據(jù)庫(kù)表中不包含已在其它表中已包含的非主關(guān)鍵字信息 例如:張三的性別值沒(méi)有必要在多個(gè)表重復(fù)出現(xiàn).(可以允許主外鍵關(guān)聯(lián)) 一般設(shè)計(jì)只要求滿足到3NF就可以了數(shù)據(jù)庫(kù)的范式第一范式42PowerDesigner的使用PowerDesigner主要包括以下幾個(gè)功能部分:DataArchitect

這是一個(gè)強(qiáng)大的數(shù)據(jù)庫(kù)設(shè)計(jì)工具。

ProcessAnalyst

這部分用于創(chuàng)建功能模型和數(shù)據(jù)流圖,創(chuàng)建"處理層次關(guān)系"。

AppModeler

為客戶/服務(wù)器應(yīng)用程序創(chuàng)建應(yīng)用模型。

ODBCAdministrator

此部分用來(lái)管理系統(tǒng)的各種數(shù)據(jù)源。PowerDesigner的使用PowerDesigner主43PowerDesigner的界面PowerDesigner的界面44數(shù)據(jù)庫(kù)的ER模型數(shù)據(jù)庫(kù)的ER模型45數(shù)據(jù)庫(kù)的物理模型數(shù)據(jù)庫(kù)的物理模型46正向工程直接地從PDM產(chǎn)生一個(gè)數(shù)據(jù)庫(kù),或產(chǎn)生一個(gè)能在你的數(shù)據(jù)庫(kù)管理系統(tǒng)環(huán)境中運(yùn)行的數(shù)據(jù)庫(kù)腳本,這是正向工程。步驟: 1選擇Database->GenerateDatabase。

數(shù)據(jù)庫(kù)生成對(duì)話框出現(xiàn)。它顯示生成叁數(shù)。默認(rèn)叁數(shù)已經(jīng)被選擇。

2SQL的文件名稱框中鍵入PDM_TUTORIAL。

3在目錄框中,輸入一條路徑。

4選擇生成腳本的按鈕。

5選擇僅僅生成一個(gè)文件。

6點(diǎn)擊Selection定位鍵。

7點(diǎn)擊底部表定位鍵。

表頁(yè)列出模型中選擇可用的所有數(shù)據(jù)庫(kù)表。

8全部點(diǎn)擊選擇工具。這選擇所有的表復(fù)選框。

9切換Views和Domains選擇需要的視圖和域。

10點(diǎn)擊確定。正向工程直接地從PDM產(chǎn)生一個(gè)數(shù)據(jù)庫(kù),或產(chǎn)生一個(gè)能在你的47逆向工程2-1將已存在的數(shù)據(jù)庫(kù)進(jìn)新的PDM之內(nèi)。數(shù)據(jù)來(lái)源可能是從腳本文件或一個(gè)開(kāi)放數(shù)據(jù)庫(kù)連接數(shù)據(jù)來(lái)源,這是逆向工程。一般要先定義一個(gè)數(shù)據(jù)庫(kù)對(duì)象ODBC,然后再生成新的PDM。逆向工程來(lái)自一個(gè)腳本文件的數(shù)據(jù)庫(kù)對(duì)象步驟: 1選擇File->ReverseEngineer->Database顯示新的物理數(shù)據(jù)模型的對(duì)話框。

2點(diǎn)擊部份Radio按鈕。

3選擇下拉列表框的一個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)。

4點(diǎn)擊確定。數(shù)據(jù)庫(kù)逆向工程對(duì)話框出現(xiàn)。

5點(diǎn)擊使用腳本文件的Radio按鈕。

6瀏覽適當(dāng)?shù)哪夸涍x擇腳本文件。

7點(diǎn)擊選項(xiàng)定位鍵顯示選項(xiàng)頁(yè)。

8選擇逆向工程選項(xiàng)。

9點(diǎn)擊確定。逆向工程2-1將已存在的數(shù)據(jù)庫(kù)進(jìn)新的PDM之內(nèi)。數(shù)據(jù)來(lái)48逆向工程2-2逆向工程一個(gè)ODBC到新的PDM步驟: 1選擇File->ReverseEngineer->Database顯示新的物理數(shù)據(jù)模型的對(duì)話框。

2點(diǎn)擊Share單選框。

3選擇下拉列表框的一個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)。

4點(diǎn)擊確定。數(shù)據(jù)庫(kù)逆向工程對(duì)話框出現(xiàn)。。

5點(diǎn)擊使用一個(gè)ODBC單選框,選擇一個(gè)ODBC。

6點(diǎn)擊選項(xiàng)定位鍵顯示選項(xiàng)頁(yè)。

7選擇逆向工程選項(xiàng)。

8點(diǎn)擊確定。ODBC逆向工程對(duì)話框出現(xiàn)。

9在上面部份對(duì)話框的下拉列表框中選擇限定詞和擁有者。

10點(diǎn)擊一個(gè)對(duì)象類型定位鍵。

11點(diǎn)擊確定。

逆向工程2-249DDL概述DDL為數(shù)據(jù)定義語(yǔ)言以下為部分內(nèi)容創(chuàng)建數(shù)據(jù)庫(kù)創(chuàng)建用戶創(chuàng)建表空間建表建視圖建索引建過(guò)程函數(shù)包等。。。。建作業(yè)DDL概述DDL為數(shù)據(jù)定義語(yǔ)言以下為部分內(nèi)容50Linux下啟動(dòng)oracle首先在shell環(huán)境下輸入sqlplus“/assysdba”以管理員身份進(jìn)入在sql>提示符下敲入startup命令啟動(dòng)數(shù)據(jù)庫(kù)啟動(dòng)oracle監(jiān)聽(tīng)器lsnrctlstartLinux下啟動(dòng)oracle首先在shell環(huán)境下輸入sql51Winndow下訪問(wèn)linuxoracle首先windows下安裝oracle客戶端工具修改tnsname.ora文件,添加linux下oralce的ip地址等信息利用plsqldevpment工具連接到liunx中Winndow下訪問(wèn)linuxoracle首先window52Oracle邏輯結(jié)構(gòu)圖Oracle邏輯結(jié)構(gòu)圖53創(chuàng)建表空間創(chuàng)建表空間的語(yǔ)法是:createtablespacetablespacenamedatafile‘filename’[sizeinteger[K|M]][autoextend[OFF|ON]];創(chuàng)建表空間創(chuàng)建表空間的語(yǔ)法是:createtablespa54數(shù)據(jù)庫(kù)用戶概念數(shù)據(jù)庫(kù)系統(tǒng)安全需要控制和存儲(chǔ)以下內(nèi)容用戶名口令的組合用戶是否授權(quán)可連接數(shù)據(jù)庫(kù)用戶創(chuàng)建實(shí)體集的可用的磁盤空間的大小用戶資源的限制,是否啟動(dòng)了數(shù)據(jù)庫(kù)審記功能用戶可進(jìn)行那些操作創(chuàng)建用戶的時(shí)候系統(tǒng)自動(dòng)對(duì)該用戶建立一個(gè)相應(yīng)的模式,模式名和用戶名相同,用戶僅與一個(gè)同名的模式對(duì)應(yīng)和用戶相關(guān)的還包含用戶默認(rèn)表空間用戶臨時(shí)表空間用戶資源文件PROFILE數(shù)據(jù)庫(kù)用戶概念數(shù)據(jù)庫(kù)系統(tǒng)安全需要控制和存儲(chǔ)以下內(nèi)容55建用戶語(yǔ)法 create

user用戶名

identified

by“密碼”

default

tablespace默認(rèn)表空間名

temporary

tablespace臨時(shí)表空名

profile

DEFAULT資源文件QUOTA

INTEGEK[M][UNLIMITED]

ONposdata;建用戶語(yǔ)法 createuser用戶名

identi56建用戶CREATE

USER“POS”IDENTIFIED

BY“pos”

DEFAULT

TABLESPACEposdata

TEMPORARY

TABLESPACEpostmp

PROFILE

DEFAULT

QUOTA

100mONposdata說(shuō)明

POS用戶密碼是pos默認(rèn)表空間是posdata,臨時(shí)表空間是postmp此用戶只能使用posdata上的100M空間建用戶CREATEUSER“POS”IDENTIFIE57數(shù)據(jù)庫(kù)權(quán)限概述數(shù)據(jù)庫(kù)系統(tǒng)通過(guò)安全措施防止非法用戶對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ),以保證數(shù)據(jù)庫(kù)安全運(yùn)行,Oracle的安全機(jī)制主要是通過(guò)權(quán)限進(jìn)行設(shè)置的,通過(guò)權(quán)限設(shè)置防止非權(quán)限的數(shù)據(jù)庫(kù)存取,非權(quán)限的對(duì)模式實(shí)體的存取,只有通過(guò)權(quán)限的人證才可以存取數(shù)據(jù)庫(kù)中數(shù)據(jù)。ORACLE根據(jù)系統(tǒng)管理方式不同,可以將權(quán)限分為兩類系統(tǒng)權(quán)限實(shí)體權(quán)限。數(shù)據(jù)庫(kù)權(quán)限概述數(shù)據(jù)庫(kù)系統(tǒng)通過(guò)安全措施防止非法用戶對(duì)數(shù)據(jù)進(jìn)行存58權(quán)限管理系統(tǒng)權(quán)限

系統(tǒng)權(quán)限是執(zhí)行某一類或者在某一用戶中執(zhí)行某種操作的權(quán)限,每一種系統(tǒng)權(quán)限允許用戶執(zhí)行一種特殊的數(shù)據(jù)庫(kù)操作或者某一類數(shù)據(jù)庫(kù)操作。比如建表空間建用戶修改數(shù)據(jù)庫(kù)結(jié)構(gòu)修改用戶權(quán)限修改數(shù)據(jù)庫(kù)結(jié)構(gòu)修改任何用戶的實(shí)體,創(chuàng)建基表,視圖,同義,創(chuàng)建數(shù)據(jù)庫(kù)鏈路等權(quán)限。實(shí)體權(quán)限

實(shí)體權(quán)限是指某一用戶對(duì)其他用戶的表,視圖,序列,存儲(chǔ)過(guò)程,函數(shù),包的操作權(quán)限,不同類型的實(shí)體具有不同的實(shí)體權(quán)限。對(duì)于某些 模式實(shí)體,比如聚簇,索引,觸發(fā)器,數(shù)據(jù)庫(kù)鏈路等沒(méi)有相應(yīng)的實(shí)體 權(quán)限,這些權(quán)限由系統(tǒng)權(quán)限進(jìn)行管理。權(quán)限管理系統(tǒng)權(quán)限59分配/回收權(quán)限語(yǔ)法分配權(quán)限

GRANT權(quán)限TO回收權(quán)限用戶名角色名publicRevoke權(quán)限FROM用戶名角色名public分配/回收權(quán)限語(yǔ)法分配權(quán)限用戶名角色名publicRevok60分配/回收系統(tǒng)權(quán)限授權(quán) SQL>GRANTcreatesession,createtabletoJAME,JACK SQL>GRANTcreatesession,createtabletoJAME,JACKWITHADMINOPTION回收權(quán)限 SQL>REVOKEcreatesession,createtableFROMJAME,JACK 說(shuō)明:權(quán)限回收并沒(méi)有回收由回收者已經(jīng)分配出去的權(quán)限,這點(diǎn)和SQLSERVER的revoke權(quán)限fromusercascade不同

分配/回收系統(tǒng)權(quán)限授權(quán)61分配/回收實(shí)體權(quán)限授權(quán)

SQL>GRANTSELECT,UPDATE,DELETEONordersTOJACK回收權(quán)限

SQL>REVOKESELECT,UPDATEONordersFROMJACK分配/回收實(shí)體權(quán)限授權(quán)62創(chuàng)建表創(chuàng)建表語(yǔ)句:Createtabletablename(filednametype[notnull,default],..)[Tablespacetablespace_name];對(duì)表加注釋:commentontabletablenameis‘…’;對(duì)表字段加注釋:commentoncolumnT_USER.SUSERis‘…‘;創(chuàng)建表創(chuàng)建表語(yǔ)句:63Oracle數(shù)據(jù)類型創(chuàng)建表時(shí),必須為各個(gè)列指定數(shù)據(jù)類型以下是Oracle數(shù)據(jù)類型的類別:數(shù)據(jù)類型字符數(shù)值日期時(shí)間RAW/LONGRAWLOBOracle數(shù)據(jù)類型創(chuàng)建表時(shí),必須為各個(gè)列指定數(shù)據(jù)類型數(shù)據(jù)類64Oracle數(shù)據(jù)類型(字符)當(dāng)需要固定長(zhǎng)度的字符串時(shí),使用CHAR數(shù)據(jù)類型。CHAR數(shù)據(jù)類型存儲(chǔ)字母數(shù)字值。CHAR數(shù)據(jù)類型的列長(zhǎng)度可以是1到2000個(gè)字節(jié)。VARCHAR2數(shù)據(jù)類型支持可變長(zhǎng)度字符串VARCHAR2數(shù)據(jù)類型存儲(chǔ)字母數(shù)字值VARCHAR2數(shù)據(jù)類型的大小在1至4000個(gè)字節(jié)范圍內(nèi)LONG數(shù)據(jù)類型存儲(chǔ)可變長(zhǎng)度字符數(shù)據(jù)LONG數(shù)據(jù)類型最多能存儲(chǔ)2GB字符數(shù)據(jù)類型CHARVARCHAR2LONGOracle數(shù)據(jù)類型(字符)當(dāng)需要固定長(zhǎng)度的字符串時(shí),使用65數(shù)據(jù)型日期型數(shù)值數(shù)據(jù)類型可以存儲(chǔ)整數(shù)、浮點(diǎn)數(shù)和實(shí)數(shù)最高精度為38位數(shù)值數(shù)據(jù)類型的聲明語(yǔ)法:NUMBER[(p[,s])]P表示小數(shù)點(diǎn)前的位數(shù),S表示小數(shù)點(diǎn)的位數(shù)日期時(shí)間數(shù)據(jù)類型存儲(chǔ)日期和時(shí)間值,包括年、月、日,小時(shí)、分鐘、秒主要的日期時(shí)間類型有:DATE-存儲(chǔ)日期和時(shí)間部分,精確到整個(gè)的秒TIMESTAMP-存儲(chǔ)日期、時(shí)間和時(shí)區(qū)信息,秒值精確到小數(shù)點(diǎn)后6位數(shù)據(jù)型日期型數(shù)值數(shù)據(jù)類型66序列Sequence為所有的用戶生成統(tǒng)一的序列號(hào),也可以給某些主鍵列自動(dòng)生成編號(hào)值語(yǔ)法格式:CREATESEQUENCE[schema.]sequence[INCREMENTBYinteger][STARTWITHinteger][MAXVALUEinteger|NOMAXVALUE][MINVALUEinteger|NOMINVALUE][CYCLE|NOCYCLE][CACHEinteger|NOCACHE]序列Sequence為所有的用戶生成統(tǒng)一的序列號(hào),也可以給某67示例-序列創(chuàng)建和使用1、創(chuàng)建序列createsequenceseq_sno incrementby1 startwith1 maxvalue99999 nocycle;2、刪除序列

dropsequenceseq_sno;3、取序列對(duì)象中的當(dāng)前值

selectseq_sno.currvalfromdual;4、取序列對(duì)象中的下一個(gè)值

selectseq_sno.nextvalfromdual;

--此時(shí)對(duì)象中當(dāng)前序列值自動(dòng)增長(zhǎng)了示例-序列創(chuàng)建和使用1、創(chuàng)建序列68“虛”列rownumrownum是一個(gè)虛列,在表中并不存在,oracle為每個(gè)查詢后的結(jié)果集的記錄分別編號(hào),該編號(hào)就是rownum1)限制返回的結(jié)果集只能是10行select*fromtab_studentwhererownum<102)將編號(hào)保存到實(shí)際的列中updatetab_studentsetcol_num=rownum;3)不能用rownum對(duì)比更大的數(shù)select*fromtab_studentwhererownum>10--該條件返回false“虛”列rownumrownum是一個(gè)虛列,在表中并不存在69ORACLE中常見(jiàn)系統(tǒng)函數(shù)字符串函數(shù)算術(shù)函數(shù)日期函數(shù)其他函數(shù)ORACLE中常見(jiàn)系統(tǒng)函數(shù)字符串函數(shù)70字符串函數(shù)函數(shù)返回值A(chǔ)SCII(char)字符串首字符的ASC碼值TO_CHAR(S,F)ASC碼值為需要轉(zhuǎn)化的字符F為格式INITCAP(char)將字符串中每個(gè)單詞的首字母大寫INSTR(char1,char2[,m[,n]])給出字符串char1中從起始位置m開(kāi)始第n次出現(xiàn)子串char2的位置LENGT

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論