第一篇:大型數(shù)據(jù)庫技術(shù)教案01
課
題
概述
目的要求
1、了解Oracle產(chǎn)品簡史,學(xué)習(xí)大型數(shù)據(jù)庫技術(shù)課程的意義。
2、了解網(wǎng)格計(jì)算的概念及特點(diǎn)及其在數(shù)據(jù)庫中的技術(shù)應(yīng)用。
3、理解數(shù)據(jù)庫管理的主要工作內(nèi)容。
教學(xué)重點(diǎn)
1、Oracle產(chǎn)品簡史,網(wǎng)格計(jì)算的概念和特點(diǎn)
2、Oracle Database 10g系統(tǒng)特點(diǎn),數(shù)據(jù)庫技術(shù)特點(diǎn)
3、數(shù)據(jù)庫管理員的關(guān)鍵任務(wù)
教學(xué)難點(diǎn)
網(wǎng)格計(jì)算的概念和特點(diǎn)
教學(xué)課時(shí)
教學(xué)方法
大屏幕投影、PowerPoint幻燈課件
教學(xué)內(nèi)容與步驟
1.1 Oracle產(chǎn)品簡史 1.2 網(wǎng)格計(jì)算的概念和特點(diǎn) 1.3 Oracle Database 10g系統(tǒng)特點(diǎn) 1.4 數(shù)據(jù)庫技術(shù)特點(diǎn)
1.5 數(shù)據(jù)庫管理員的工作任務(wù) 教學(xué)過程
導(dǎo)入語:Oracle Database 10g產(chǎn)品把我們帶入了網(wǎng)格計(jì)算時(shí)代。Oracle Database 10g是由Oracle公司推出的數(shù)據(jù)庫系統(tǒng),本書將全面介紹Oracle Database 10g數(shù)據(jù)庫系統(tǒng)的功能特點(diǎn)。據(jù)統(tǒng)計(jì),Oracle在全球數(shù)據(jù)庫市場上的占有率超過三分之一,多年來持續(xù)性地雄踞全球數(shù)據(jù)庫市場霸主地位。我國于1987引進(jìn)了Oracle系統(tǒng),當(dāng)前,Oracle公司在中國的業(yè)務(wù)取得了迅猛發(fā)展,贏得了國內(nèi)許多行業(yè)主管部門、應(yīng)用單位和合作伙伴的廣泛信任和支持,確立了在中國數(shù)據(jù)庫和電子商務(wù)應(yīng)用市場的絕對(duì)領(lǐng)先優(yōu)勢。1 Oracle產(chǎn)品簡史 × 25 = 500
Oracle,甲骨文自20世紀(jì)70成功推出Oracle產(chǎn)品以來,它成為世界上最大的數(shù)據(jù)庫專業(yè)廠商之一。1996年,Oracle公司成功推出了專門面向中國市場的數(shù)據(jù)庫產(chǎn)品,即Oracle 7。1997年,Oracle公司推出了基于網(wǎng)絡(luò)計(jì)算的數(shù)據(jù)庫產(chǎn)品,即Oracle 8。1999年,針對(duì)Internet技術(shù)的發(fā)展,Oracle公司推出了第一個(gè)基于Internet的數(shù)據(jù)庫,即Oracle 8i。2001年,Oracle公司又推出了新一代Internet電子商務(wù)基礎(chǔ)架構(gòu),即Oracle 9i。2003年9月,Oracle公司發(fā)布了其最新數(shù)據(jù)庫產(chǎn)品,即Oracle Database 10g。網(wǎng)格計(jì)算的概念和特點(diǎn)
圍繞網(wǎng)格計(jì)算,本節(jié)講述兩個(gè)方面的內(nèi)容,首先講述網(wǎng)格計(jì)算的概念,然后探索網(wǎng)格計(jì)算的基本特點(diǎn)。
背景介紹:企業(yè)IT不斷承受使用越來越少的資源做好越來越多事情的壓力。同時(shí),為了應(yīng)付計(jì)算需求的不可預(yù)測性和即時(shí)性,公司一般擴(kuò)大服務(wù)器規(guī)模來適應(yīng)高峰負(fù)載。
為了解決這些問題,出現(xiàn)了一種新的計(jì)算模型,即網(wǎng)格計(jì)算模型。但是也有其他說法:
按需計(jì)算(computing on demand)自適應(yīng)計(jì)算(adaptive computing)效用計(jì)算(utility computing)托管計(jì)算(hosted computing)有機(jī)計(jì)算(organic computing)泛在計(jì)算(ubiquitous computing)網(wǎng)格計(jì)算的概念:核心思想是計(jì)算應(yīng)當(dāng)和公用設(shè)施一樣可靠、深入和透明。網(wǎng)格計(jì)算的目標(biāo)是使計(jì)算成為一項(xiàng)公用設(shè)施—— 一種無處不在的數(shù)據(jù)日用品。網(wǎng)格計(jì)算基礎(chǔ)架構(gòu)的5個(gè)特點(diǎn)
? 每一層計(jì)算堆棧上的虛擬化;
? 根據(jù)策略和動(dòng)態(tài)需求來提供工作和資源; ? 集中資源以提高利用率; ? 自我調(diào)整和修補(bǔ)的自適應(yīng)軟件; ? 統(tǒng)一管理和供應(yīng)。Oracle Database 10g系統(tǒng)特點(diǎn) × 25 = 500
Oracle Database 10g提供了4個(gè)版本,每一個(gè)版本適用于不同的開發(fā)和部署環(huán)境。除了Oracle Database 10g系統(tǒng)之外,Oracle還提供了另外幾種數(shù)據(jù)庫產(chǎn)品,這些針對(duì)特殊應(yīng)用需求的數(shù)據(jù)庫產(chǎn)品大大增強(qiáng)了Oracle Database 10g 的功能。
本節(jié)從版本類型、可選產(chǎn)品和Oracle管理程序包了個(gè)方面來介紹Oracle Database 10g系統(tǒng)的特點(diǎn)。
在服務(wù)器集群上運(yùn)行和調(diào)整全部應(yīng)用負(fù)載的獨(dú)特能力是企業(yè)網(wǎng)格的重要基礎(chǔ)。利用兩個(gè)主要的新功能使得管理集群數(shù)據(jù)庫變得更加容易:集成的集群件/自動(dòng)工作負(fù)載管理 4 數(shù)據(jù)庫技術(shù)特點(diǎn)
本節(jié)從數(shù)據(jù)庫和實(shí)例、表、視圖、索引、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)保護(hù)、可編程的結(jié)構(gòu)等幾個(gè)方面概括介紹Oracle Database 10g系統(tǒng)的技術(shù)特點(diǎn)。
數(shù)據(jù)庫:每一個(gè)Oracle數(shù)據(jù)庫都是一個(gè)數(shù)據(jù)的集合,這些數(shù)據(jù)包含在一個(gè)或多個(gè)文件中。數(shù)據(jù)庫有物理和邏輯兩種結(jié)構(gòu)。
Oracle實(shí)例:由被稱為系統(tǒng)全局區(qū)(system global area,SGA)的內(nèi)存區(qū)域和相應(yīng)的后臺(tái)進(jìn)程組成。這些后臺(tái)進(jìn)程負(fù)責(zé)SGA和數(shù)據(jù)庫磁盤文件之間的交互。表:在Oracle數(shù)據(jù)庫中,表是最基本的結(jié)構(gòu)。Oracle Database 10g系統(tǒng)支持多種類型的表,這些表包括關(guān)系表、對(duì)象關(guān)系表、索引編排表、外部表、分區(qū)表、物化視圖、臨時(shí)表、群集表、刪除的表。
視圖:可以使用視圖訪問表中的數(shù)據(jù)。視圖可以處理連接和聚集、限制返回的數(shù)據(jù)行、更改顯示的列名稱等。在Oracle Database 10g系統(tǒng)中,視圖既可以是只讀的,也可以是可更新的,既可以引用本地表,也可以引用遠(yuǎn)程表。
索引:為了提高對(duì)表中數(shù)據(jù)的訪問效率,Oracle系統(tǒng)支持多種類型的索引,這些索引包括B樹索引、位圖索引、反轉(zhuǎn)鍵值索引、基于函數(shù)的索引、分區(qū)索引、文本索引等。
數(shù)據(jù)存儲(chǔ):數(shù)據(jù)庫中的所有邏輯結(jié)構(gòu)都必須存儲(chǔ)在數(shù)據(jù)庫中的某個(gè)地方。Oracle系統(tǒng)提供了一個(gè)記錄與所有對(duì)象相關(guān)的元數(shù)據(jù)的數(shù)據(jù)字典。對(duì)于需要物理空間保存的對(duì)象,Oracle系統(tǒng)會(huì)在一個(gè)表空間中為其分配空間。
表空間由一個(gè)或多個(gè)文件組成,數(shù)據(jù)文件可能是表空間的全部,也可能是一個(gè)表空間的一部分。× 25 = 500
數(shù)據(jù)保護(hù):在Oracle系統(tǒng)中,可以完全控制數(shù)據(jù)的訪問權(quán)限??梢詾橛脩羰谟鑸?zhí)行select、update等特定操作所需要的權(quán)限??梢詫?duì)角色授權(quán),然后把角色授予用戶,從而簡化權(quán)限的管理。
可編程的結(jié)構(gòu):SQL語言是操縱數(shù)據(jù)庫的最基本的方法。
可以使用PL/SQL創(chuàng)建存儲(chǔ)過程和函數(shù),可以在查詢中調(diào)用已創(chuàng)建的函數(shù),過程和函數(shù)可以集中存放在程序包中??梢允褂肞L/SQL創(chuàng)建觸發(fā)器,用于通知數(shù)據(jù)庫當(dāng)不同的事件發(fā)生時(shí)應(yīng)該分別采取什么樣的操作。5 數(shù)據(jù)庫管理員的工作任務(wù)
在Oracle系統(tǒng)中,數(shù)據(jù)庫管理員(database administrator,DBA)是最重要的角色。DBA的工作目標(biāo)是確保Oracle系統(tǒng)正常高效的運(yùn)行。DBA的工作是最繁忙的,無論是性能調(diào)整,還是災(zāi)難恢復(fù),都離不開DBA的支持。一般情況下,作為一個(gè)DBA,應(yīng)該做好下面12項(xiàng)任務(wù)。
安裝和配置;容量規(guī)劃;應(yīng)用架構(gòu)設(shè)計(jì);管理數(shù)據(jù)庫對(duì)象;存儲(chǔ)空間管理;安全管理;備份和恢復(fù);作業(yè)調(diào)度;網(wǎng)絡(luò)管理;高可用性和高可伸縮性管理;故障解決 × 25 = 500
第二篇:銀行通用大型數(shù)據(jù)庫
銀行通用大型數(shù)據(jù)庫---Db2 日常實(shí)用操作 收藏
怎么沒人發(fā)DB2啊,我記得我剛參加工作時(shí)面試,有一個(gè)問題是“你用過什么大型數(shù)據(jù)庫?”,我當(dāng)時(shí)還搞不清什么叫大型,就順便說了FOX,ACCESS,主考的人看著我的,用一句歌詞來形容就是”得意的笑,他得意的笑“,也幸好去面試的只有一個(gè)人說了個(gè)INFORMIX,我才在公司學(xué)了DB2,學(xué)了 INFORMIX,學(xué)了SOCKET,哈,看著公司一年有十億RMB的進(jìn)賬,看著我每月薪水都在一把(一把是一百張,一張是一百元,哈)以上,真是感慨良多??!哈,幸好是走過來了!
先貼點(diǎn)基礎(chǔ)的,可別小看,這是你以后的基礎(chǔ),就像現(xiàn)在IBM搞培訓(xùn),不到一周時(shí)間,會(huì)講600M的文檔,知識(shí)點(diǎn)也就講個(gè)名字,要不老師會(huì)累死,哈!
以下是正文:
1、Load 方法裝入數(shù)據(jù):
export to tempfile of del select * from TABLENAME where not 清理?xiàng)l件; load from tempfile of del modified by delprioritychar replace into TABLENAME nonrecoverable;
說明:
在不相關(guān)的數(shù)據(jù)表export數(shù)據(jù)時(shí),可以采取并發(fā)的形式,以提高效率;
TABLENAME指待清理table的名稱;
modified by delprioritychar防止數(shù)據(jù)庫記錄中存在換行符,導(dǎo)致數(shù)據(jù)無法裝入的情況;replace into對(duì)現(xiàn)數(shù)據(jù)庫中的內(nèi)容進(jìn)行替換,即將現(xiàn)行的數(shù)據(jù)記錄清理,替換為數(shù)據(jù)文件內(nèi)容;
nonrecoverable無日志方式裝入;
2、查找當(dāng)前的應(yīng)用:
db2 list application |grep DBSNAME;
3、刪除當(dāng)前正在使用的application:
db2 “force application(Id1,Id2,Id3)”
Id1,Id2,Id3 是List顯示的應(yīng)用號(hào);
4、查看當(dāng)前應(yīng)用號(hào)的執(zhí)行狀態(tài):
db2 get snapshot for application agentid 299 |grep Row5、查看數(shù)據(jù)庫參數(shù):
db2 get db cfg for
6、修改數(shù)據(jù)庫的Log數(shù)據(jù):
db2 update db cfg using <參數(shù)名> <參數(shù)值>、Db2Stop Force的用法:
在進(jìn)行Bind的時(shí)候出現(xiàn)如下錯(cuò)誤:
SQL0082C An error has occurred which has terminated processing.SQL0092N No package was created because of previous errors.SQL0091N Binding was ended with “3” errors and “0” warnings.主要是表文件被加鎖,不能繼續(xù)使用;
在進(jìn)行stop的時(shí)候報(bào)錯(cuò):db2stop
8/03/2005 21:46:53 0 0SQL1025N The database manager was not stopped because databases are still active.SQL1025N The database manager was not stopped because databases are still active.需要使用如下命令可以解決這個(gè)問題: db2stop force
08/03/2005 21:47:4900SQL1064N DB2STOP processing was successful.SQL1064N DB2STOP processing was successful.然后啟動(dòng)數(shù)據(jù)庫db2start,連接數(shù)據(jù)庫db2s后,重新進(jìn)行bind即可。
8、緩沖池參數(shù)修改:
db2 alter bufferpool ibmdefaultbp size 10240
查看本表的數(shù)據(jù)內(nèi)容如下:
db2 “select * from syscat.bufferpools”;
9、DB2 日志處理:
DB2日志是以文件的形式存放在文件系統(tǒng)中,分為兩種模式:循環(huán)日志和歸檔日志。當(dāng)創(chuàng)建新數(shù)據(jù)庫時(shí),日志的缺省模式是循環(huán)日志。在這種模式下,只能實(shí)現(xiàn)數(shù)據(jù)庫的脫機(jī)備份和恢復(fù)。如果要實(shí)現(xiàn)聯(lián)機(jī)備份和恢復(fù),必須設(shè)為歸檔日志模式。目前在綜合業(yè)務(wù)系統(tǒng)中,設(shè)置的均是歸檔日志模式;其它系統(tǒng)(如事后監(jiān)督、經(jīng)營決策、中間業(yè)務(wù)等)一般都設(shè)置為循環(huán)日志模式。至于采用何種模式,可以通過修改數(shù)據(jù)庫配置參數(shù)(LOGRETAIN)來實(shí)現(xiàn): 歸檔日志模式:db2 update db cfg for
必須按照以下正確的步驟進(jìn)行操作:要求必須使用DB2命令PRUNE進(jìn)行清理,不建議使用rm命令刪除。刪除前應(yīng)保證應(yīng)用已停止(即聯(lián)機(jī)已下來)。查看當(dāng)前使用的日志文件目錄及第一活動(dòng)日志文件用 “db2 get db cfg for
$ db2 connect to
$ db2 prune logfile prior to S???.LOG
注:S???.LOG為查看到的第一活動(dòng)日志文件。此命令可以將當(dāng)前第一活動(dòng)日志文件之前的歸檔日志文件全部刪除。
11、如何清理db2diag.log文件
db2diag.log,是用來記錄DB2數(shù)據(jù)庫運(yùn)行中的信息的文件??梢酝ㄟ^此文件,查看記錄的有關(guān)DB2數(shù)據(jù)庫詳細(xì)的錯(cuò)誤信息。此文件也是不斷增大的,需要定期進(jìn)行清理。可以通過查看實(shí)例的配置參數(shù)DIAGPATH,來確定db2diag.log文件是放在哪個(gè)目錄下:db2 get dbm cfg 如果Diagnostic data directory path(DIAGPATH)= /home/db2inst1/sqllib/db2dump,則此文件是放在/home/db2inst1/sqllib/db2dump目錄下。當(dāng)文件系統(tǒng)/home的使用率達(dá)到80%-90%左右時(shí),應(yīng)及時(shí)刪除db2diag.log文件。請(qǐng)按以下正確步驟操作:確認(rèn)應(yīng)用(如BTP)、DB2已經(jīng)停止。將原db2diag.log文件備份到其它文件系統(tǒng)下。刪除db2diag.log文件。刪除后,DB2會(huì)自動(dòng)創(chuàng)建一個(gè)新的文件。
12、Load 操作
在進(jìn)行l(wèi)oad的時(shí)候
db2 “l(fā)oad from acmmst.txt of del modified by coldel| replace into acmmst nonrecoverable ”
由于數(shù)據(jù)不規(guī)范出現(xiàn)錯(cuò)誤,強(qiáng)行中斷以后,進(jìn)行操作的時(shí)候出現(xiàn)如下錯(cuò)誤:
SQL0668N Operation not allowed for reason code ”3“ on table ”BTP.ACMMST“.SQLSTATE=57016
此時(shí),進(jìn)行反方向操作即可:
db2 ”load from /dev/null of del terminate into acmmst nonrecoverable“。
如果沒有使用參數(shù)nonrecoverable,則會(huì)出現(xiàn)數(shù)據(jù)庫狀態(tài)不正確的情況,使用:
db2 list tablesapces show detail 查看狀態(tài),如果不是正常狀態(tài),則脫機(jī)狀態(tài)進(jìn)行備份即可。
兩個(gè)表文件之間UPDATE的方法:
db2 ”update cdmcrd set offset =(select cdmlsl.offset from cdmlsl where cdmlsl.crdno=cdmcrd.crdno)where cdmcrd.crdno in(select cdmlsl.crdno from cdmlsl)
13、多字段條件查詢和修改:
表A中的字段有actno, cnlno,bal,pwd;表B中的字段為Actno,Cnlno,TxnAmt;目的是將A表中的bal修改為B表中的TxnAmt,命令:
db2 “update A set bal=(select txnamt from B where actno=A.actno and cnlno=A.Cnlno)where A.actno||A.cnlno in(select Actno||cnlno from B);
14、多條件匹配查詢
查詢某個(gè)表中條件是B?AAA的記錄:
db2 ”select * from A where actno like 'B_AAA%'“.查詢數(shù)據(jù)中存在某些字符的記錄:
db2 ”select * from A where actno like '%-AAA%“.15/數(shù)據(jù)庫恢復(fù)的處理
進(jìn)行數(shù)據(jù)庫恢復(fù)的時(shí)候使用以下的命令:
restore db db1 to /tstdb2/catalog into db newlogpath /tstdb2/db2log buffer 2048
replace existing redirect parallelism 16;
set tablespace containers for 1 using(path '/tstdb2/db2tmp');
set tablespace containers for 2 using
(device '/dev/rtstcontlv00' 2621440, device '/dev/rtstcontlv01' 2621440,device '/dev/rtstcontlv02' 2621440, device '/dev/rtstcontlv03' 2621440);
restore db db1 continue;
恢復(fù)完成以后執(zhí)行命令db2s時(shí)報(bào)如下的錯(cuò)誤:
P570:>db2s
SQL1117N A connection to or activation of database ”DB" cannot be made because of ROLL-FORWARD PENDING.SQLSTATE=57019
DB21034E The command was processed as an SQL statement because it
was not a
valid Command Line Processor command.During SQL processing it returned:
SQL1024N A database connection does not exist.SQLSTATE=08003 解決辦法如下:
P570:>db2 rollforward db db to end of logs and complete
Rollforward Status
Input database alias= db
Number of nodes have returned status= 1
Node number= 0
Rollforward status= not pending
Next log file to be read=
Log files processed=-
Last committed transaction= 2005-11-20-10.59.23.000000
DB20000I The ROLLFORWARD command completed successfully.
第三篇:數(shù)據(jù)庫教案
任務(wù)引入 [4分鐘]
布置任務(wù) [4分鐘] 任務(wù)分析 [6分鐘] 任務(wù)實(shí)施 [35分鐘]
在手機(jī)商城中,當(dāng)用戶注冊(cè)時(shí),要填寫用戶注冊(cè)表單,那么,我們填寫的數(shù)據(jù)就要保存在后臺(tái)數(shù)據(jù)庫中,當(dāng)注冊(cè)成功后用戶登
錄時(shí),就可以直接從后臺(tái)數(shù)據(jù)庫的注冊(cè)信息進(jìn)行信息驗(yàn)證?,F(xiàn)在,教師引導(dǎo) 我們就在MOBILE數(shù)據(jù)庫中創(chuàng)建一個(gè)用戶注冊(cè)的數(shù)據(jù)表吧。
任務(wù):
在MOBILE數(shù)據(jù)庫中創(chuàng)建數(shù)據(jù)表,并為表中各列設(shè)置恰當(dāng) 的數(shù)據(jù)類型,設(shè)置主鍵。
要完成手機(jī)商城數(shù)據(jù)庫中數(shù)據(jù)表創(chuàng)建,可按照前面設(shè)計(jì)階段 的各表結(jié)構(gòu)建立相關(guān)數(shù)據(jù)表,并按照設(shè)計(jì)階段的分析為表中各列 設(shè)置恰當(dāng)?shù)臄?shù)據(jù)類型以及設(shè)置主鍵。
一、使用MySQL界面方式創(chuàng)建手機(jī)商城數(shù)據(jù)庫中的數(shù)據(jù)表。學(xué)生操作 具體見任務(wù)書
教師指導(dǎo)
二、使用SQL命令創(chuàng)建數(shù)據(jù)表。
(商品大類別表)CREATE TABLE class
(復(fù)習(xí)數(shù)據(jù)classID INT PRIMARY KEY, 類型 classNAME CHAR(20)NULL);
三、修改表
ALTER TABLE用于更改原有表的結(jié)構(gòu)。例如,可以增加或 刪減列,創(chuàng)建或取消索引,更改原有列的類型,重新命名列或表,還可以更改表的評(píng)注和表的類型。
語法格式:
ALTER [IGNORE] TABLE tbl_name
alter_specification [, alter_specification]...相關(guān)知識(shí) [13分鐘] alter_specification:
ADD [COLUMN] column_definition [FIRST | AFTER col_name ]
/*添加列*/
| ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}
/*修改默認(rèn)值*/
| CHANGE [COLUMN] old_col_name column_definition
/*對(duì)列重命名*/
[FIRST|AFTER col_name]
| MODIFY [COLUMN] column_definition [FIRST | AFTER col_name]
/*修改列類型*/
| DROP [COLUMN] col_name /*刪除列*/
| RENAME [TO] new_tbl_name
/*重命名該表*/
| ORDER BY col_name
/*排序*/
| CONVERT TO CHARACTER SET charset_name [COLLATE collation_name] /*將字符集轉(zhuǎn)換為二進(jìn)制*/
|
[DEFAULT]
CHARACTER
SET
charset_name [COLLATE collation_name]
/*修改默認(rèn)字符集*/
| table_options
| 列或表中索引項(xiàng)的增、刪、改
四、復(fù)制表 語法格式:
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
[()LIKE old_tbl_name [ ] ]
| [AS(select_statement)];說明:
學(xué)生練習(xí)
學(xué)生練習(xí)[25分鐘] 小結(jié) [3分鐘]
使用LIKE關(guān)鍵字創(chuàng)建一個(gè)與old_table_name表相同結(jié)構(gòu)的新表,列名、數(shù)據(jù)類型、空指定和索引也將復(fù)制,但是表的內(nèi)容不會(huì)復(fù)制,因此創(chuàng)建的新表是一個(gè)空表。使用AS關(guān)鍵字可以復(fù)制表的內(nèi)容,但索引和完整性約束是不會(huì)復(fù)制的。select_statement表示一個(gè)表達(dá)式,例如,可以是一條SELECT語句。
完善表的設(shè)計(jì),并輸入記錄數(shù)據(jù)。
本次課我們學(xué)習(xí)了創(chuàng)建數(shù)據(jù)表的另一種方法,以及表的修改和復(fù)制等方法,同學(xué)們要在課后多加練習(xí)。
第四篇:數(shù)據(jù)庫教案
任務(wù)引入 [4分鐘]
請(qǐng)同學(xué)們回憶在設(shè)計(jì)關(guān)系時(shí)定義了哪些主鍵? 引導(dǎo)學(xué)生思考:
學(xué)生瀏覽相關(guān)資料
有的關(guān)系中的某些字段是需要參考另外一個(gè)關(guān)系中的主鍵,布置任務(wù) [4分鐘] 任務(wù)實(shí)施 [45分鐘]
相關(guān)知識(shí) [34分鐘]
怎樣在MySQL中實(shí)現(xiàn)這些?
任務(wù):正確設(shè)置相關(guān)表的主鍵、外鍵等約束,部分實(shí)現(xiàn)表的數(shù)據(jù)完整性。
實(shí)施步驟:
1.教師將學(xué)生分組,每個(gè)小組經(jīng)商討后,進(jìn)一步明確需在表中實(shí)現(xiàn)的數(shù)據(jù)完整性。
2.小組成員先嘗試實(shí)現(xiàn)主鍵約束;再嘗試實(shí)現(xiàn)外鍵約束、UNQUE約束、CHECK約束、默認(rèn)值等。3.學(xué)生訪問參考網(wǎng)址,自行搜索所需資料:
http://004km.cn http://004km.cn ……
4.在實(shí)現(xiàn)過程中,教師提示引導(dǎo)同學(xué)們參考教材,最后整理設(shè)計(jì)結(jié)果并形成文件,上交到指定位置。相關(guān)知識(shí)
二、數(shù)據(jù)的完整性
數(shù)據(jù)庫完整性就是確保數(shù)據(jù)庫中數(shù)據(jù)的一致性和正確性。MySQL通過各種約束、默認(rèn)值、規(guī)則等數(shù)據(jù)庫對(duì)象來保證數(shù)據(jù)庫的完整性。
1.約束
(1)PRIMARY KEY約束
表的一列或多列稱為表的主鍵,通過它可強(qiáng)制表的實(shí)體完整性。
教師引導(dǎo)
學(xué)生分組
學(xué)生討論
主鍵是在創(chuàng)建表時(shí)進(jìn)行創(chuàng)建的,添加到表中還沒有創(chuàng)建主鍵 約束的數(shù)據(jù)表中,一個(gè)表只能有一個(gè)PRIMARY KEY約束。如 果已經(jīng)創(chuàng)建了一個(gè)PRIMARY KEY約束,則可以對(duì)其進(jìn)行修改或刪除。在一個(gè)表中,不能有兩行包含相同的主鍵值。不能在主鍵內(nèi)的任何列中輸入NULL值。
(2)FOREIGN KEY約束
FOREIGN KEY約束標(biāo)識(shí)表之間的關(guān)系,用于強(qiáng)制參照完整性,為表中一列或者多列數(shù)據(jù)提供參照完整性。
FOREIGN KEY作為表定義的一部分在創(chuàng)建表時(shí)創(chuàng)建。如果FOREIGN KEY約束與另一個(gè)表(或同一表)已有的PRIMARY KEY約束或UNQUE約束相關(guān)聯(lián),則可向現(xiàn)有表添加FOREIGN KEY約束。一個(gè)表可以有多個(gè)FOREIGN KEY約束??梢詫?duì)已有的FOREIGN KEY約束進(jìn)行修改或刪除。
(3)UNQUE約束
實(shí)施實(shí)體完整性。確保在非主鍵列中不輸入重復(fù)的值。想要強(qiáng)制一列或多列組合的唯一性時(shí)使用該約束而不是PRIMARY KEY約束,可以對(duì)一個(gè)表聲明多個(gè)UNIQUE約束,且允許NULL值。
(4)CHECK約束
CHECK約束通過限制用戶輸入的值來加強(qiáng)域完整性。它指定應(yīng)用于列中輸入的所有值的布樂搜索條件,拒絕所有不取值為TRUE的值??梢詾槊苛兄付ǘ鄠€(gè)CHECK約束。
(5)列約束和表約束
約束可以是列約束和表約束。列約束被定為列定義的一部分,并且僅適用于那個(gè)列,表約束的聲明與列的定義無關(guān),可以適用于表中一個(gè)以上的列。當(dāng)一個(gè)約束中必須包含一個(gè)以上的列時(shí),必須使用表約束。
2.默認(rèn)值
在設(shè)計(jì)表結(jié)構(gòu)時(shí)可根據(jù)需要為某列設(shè)置默認(rèn)值,也可以創(chuàng)建默認(rèn)值對(duì)象并綁定到某一列。
小結(jié) [3分鐘]
本次課我們了解了B2C網(wǎng)站應(yīng)該具有的會(huì)員在線訂購功能及流程,并且設(shè)計(jì)了結(jié)構(gòu)合理的數(shù)據(jù)表,存儲(chǔ)相關(guān)信息。
第五篇:電子商務(wù)數(shù)據(jù)庫技術(shù)重點(diǎn)
數(shù)據(jù)庫的建立:CREATE DATABASE<數(shù)據(jù)庫名>; 刪除: DROP DATABASE<數(shù)據(jù)庫名>
基本表的定義:EATE TABLE[<數(shù)據(jù)庫名>]<表名>;刪除DROP TABLE[<數(shù)據(jù)庫名>]表名
修改:a增加屬性:ALTER TABLE[<數(shù)據(jù)庫名>]表名ADD
B刪除屬性:ALTER TABLE[<數(shù)據(jù)庫名>]表名DROP
3)視圖的定義:REATE VIEW 視圖名AS SELECT語句;刪除:DROP VIEW 視圖名
4)索引的定義:CREATE [UNIQUE] INDEX 索引名ON;刪除DROP INDEX 索引名
8SQL查詢1)“*”為通配符,表示查找FROM中所指出關(guān)系的所有屬性的值
1、表、視圖、索引的定義及使用:(1)基本表的定義:create table 〔﹤數(shù)據(jù)庫名﹥.〕﹤表名﹥(﹤列名﹥ 數(shù)據(jù)
類型 ﹝缺省值))eg.建一個(gè)學(xué)生情況表(student)create table student st-class chat(8),st-no char(10),……(2)視圖的定義:create view 視圖名 as select 語句eg.從基本表student和score中導(dǎo)出只包括女學(xué)生且分?jǐn)?shù)在60分以上的視圖create view woman-score as select student.st-class,student.st-no,student.st-name,student.st-age,score.sc-score from student.score where student.st-sex=“女”and score.sc-score>=60 and student.st-no=score.st-no(3)索引的定義:create 〔unique〕index索引名on〔﹤數(shù)據(jù)庫名﹥.〕表名(列名〔ASC/DESC〕,列名〔ASC/DESC〕…)eg.對(duì)基本表student中的st-no和st-age建立索引,分別為升序與降序,且索引值不允許重復(fù)create unique index stindex on student(st-no ASC,st-age DESC)
2、SQL查詢語言的主要應(yīng)用:(1)無條件查詢例子:找出所有學(xué)生的選課情況select st-no,su-nofrom score
(2)條件查詢例子:找出任何一門課成績?cè)?0分以上的學(xué)生情況、課號(hào)及分?jǐn)?shù)select unique student.st-class,student.st-no,student.st-name,student.st-sex,student.st-age,score.su-no,score.scorefrom student,scorewhere score.score>=70 and score.stno=student.st-no(3)排序查詢例子:查詢不及格的課程,并將結(jié)果按照課程號(hào)從大到小排列select unique su-nofrom scorewhere score<60 oeder by su-no desc(4)嵌套查詢例子:查詢課程編號(hào)為c03且課程成績?cè)?0分以上的學(xué)生的學(xué)號(hào)、姓名select st-no,st-name from student where stno in(select st-no from score from score where su-no=’c03’and score>80)(5)計(jì)算查詢常用函數(shù)有:count(*)計(jì)算元組的個(gè)數(shù);count(列名)對(duì)某一列中的值計(jì)算個(gè)數(shù);sum(列名)求某一列值的總和(此值是數(shù)值型);avg(列名)求某一列的平均值;max(列名)求一列中的最大值;min(列名)求一列中的最小值例子:求男學(xué)生的總?cè)藬?shù)和平均年齡select count(*),avg(st-age)from student where st-sex=’男’
3、SQL數(shù)據(jù)的主要插入、刪除、修改操作:(1)數(shù)據(jù)插入:將數(shù)據(jù)插入SQL的基本表有兩種方式,一種是單元
組的插入,eg:向基本表score中插入一個(gè)成績?cè)M(100002,c02,95)insert into score(st-no,su-弄,score)values(’100002’,’c02’,95);另一種是多元組的插入;(2)數(shù)據(jù)刪除:單元組的刪除 eg,把學(xué)號(hào)為100002的學(xué)生從學(xué)生表student中刪除delete from student where st-no=’100002’;多元組的刪除eg,把學(xué)號(hào)為100002的成績從表score中刪除delete from score where st-no=’100002’ ;帶有子查詢的刪除操作eg.刪除所有不及格的學(xué)生記錄delete from student where st-no in(select st-no from score where score<60)(3)數(shù)據(jù)修改eg.把c02的課程名改為英語 update subject set su-subject=’英語’ where su-no=’c02’