數(shù)據(jù)庫設(shè)計與應(yīng)用實驗指導(dǎo)書_第1頁
數(shù)據(jù)庫設(shè)計與應(yīng)用實驗指導(dǎo)書_第2頁
數(shù)據(jù)庫設(shè)計與應(yīng)用實驗指導(dǎo)書_第3頁
數(shù)據(jù)庫設(shè)計與應(yīng)用實驗指導(dǎo)書_第4頁
數(shù)據(jù)庫設(shè)計與應(yīng)用實驗指導(dǎo)書_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、中 國 礦 業(yè) 大 學(xué)數(shù)據(jù)庫設(shè)計與應(yīng)用實驗指導(dǎo)書(工業(yè)工程專業(yè)試用)礦業(yè)工程學(xué)院工業(yè)工程系目 錄實驗一 ACCESS數(shù)據(jù)庫的創(chuàng)建和操縱1實驗二 熟悉SQL Server 2000系統(tǒng)環(huán)境及基本操作4實驗三 數(shù)據(jù)庫訪問程序的編制8附件1 ACCESS軟件內(nèi)容介紹9附件2 ADO數(shù)據(jù)訪問原理17附件3數(shù)據(jù)庫應(yīng)用程序示例21附件4 實驗報告封面格式33實驗一 ACCESS數(shù)據(jù)庫的創(chuàng)建和操縱1實驗?zāi)康模?)了解具體DBMS的功能和作用。(2)掌握ACCESS數(shù)據(jù)庫管理系統(tǒng)的基本操作。(3)掌握用ACCESS設(shè)計數(shù)據(jù)庫的過程和步驟。2實驗任務(wù)(1)研究ACCESS的羅斯文(Northwind)示例數(shù)據(jù)庫

2、及其結(jié)構(gòu)。如果安裝在C盤,則打開路徑為:C:Program filesMicrosoft officeOffice11samples(2)完成簡化的學(xué)籍系統(tǒng)數(shù)據(jù)庫的設(shè)計。創(chuàng)建學(xué)生信息表、課程表、教師信息表、開課表、成績表。要求:屬性名用相應(yīng)字拼音第一字母(如表中所示),為了方便記憶,在標(biāo)題部分標(biāo)注中文意思;確定并創(chuàng)建各個表的主鍵;確定并設(shè)定各個表中屬性的約束條件;確定并創(chuàng)建表之間的關(guān)聯(lián)。各表結(jié)構(gòu)如下:(數(shù)據(jù)庫名稱統(tǒng)一為:xueji)表格 1 學(xué)生信息表(表名Student)學(xué)號姓名年齡民族政治面貌所在學(xué)院所在系入學(xué)日期籍貫家庭所在地XHXMNLMZZZMMSZXYSZXRXRQJGJTSZD表

3、格 2 教師信息表(表名Teacher)職工號姓名出生日期民族政治面貌職稱最高學(xué)歷所在學(xué)院所在系參加工作日期籍貫ZGHXMCSRQMZZZMMZCZGXLSZXYSZXGZRQJG表格 3 課程表(表名Course)課程編號課程名教材教材出版社先修課編號KCBHKCMJCJCCBSXXKBH表格 4 開課表(表名TC)課程編號職工號課程說明KCBHZGHKCSM表格 5 成績表(表名SC)課程編號學(xué)號成績KCBHXHCJ(3)向創(chuàng)建的表中添加某些實例記錄能夠完成以下相應(yīng)的查詢要求。(4)用SQL語句創(chuàng)建基于上述表格的下列查詢(Query)。注:上機前完成以下SQL語句的編寫,上機時進行調(diào)試。在

4、書寫SQL語句時注意相應(yīng)屬性的數(shù)據(jù)類型,字符常量用英文單引起括起來。認(rèn)真體會每個查詢,注意保存結(jié)果,以便編制實驗報告。² 查詢?nèi)w學(xué)生的學(xué)號與姓名;² 查詢?nèi)w學(xué)生的基本情況;² 查詢?nèi)w學(xué)生的姓名及其出生年份;² 查詢選修過課程的學(xué)生的學(xué)號;² 查詢計算機系全體學(xué)生的名單;² 查詢考試成績有不及格的學(xué)生的學(xué)號;² 查詢年齡在19至21歲之間的學(xué)生姓名、系別和年齡;² 查詢年齡不在20至23歲之間的學(xué)生姓名、系別和年齡;² 查詢信息系、數(shù)學(xué)系和計算機系學(xué)生的姓名和性別;² 查詢不是信息系、數(shù)學(xué)系

5、和計算機系學(xué)生的姓名和性別;² 查詢所有姓劉的學(xué)生的姓名、學(xué)號和性別;² 查詢“歐陽”且全名為3個漢字的學(xué)生的姓名;² 查詢名字中第二個字為“忠”字的學(xué)生姓名和學(xué)號;² 查詢不姓劉的學(xué)生姓名;² 查詢所有有成績的學(xué)生學(xué)號和課程號;² 查詢計算機系年齡在19歲以下的學(xué)生姓名;² 查詢?nèi)w學(xué)生情況,要求查詢結(jié)果按所在系升序排列,對同一系中的學(xué)生按年齡降序排列;² 查詢學(xué)生總?cè)藬?shù);² 查詢選修了課程的學(xué)生人數(shù);² 查詢學(xué)習(xí)“數(shù)據(jù)庫”課程的學(xué)生最高分?jǐn)?shù);² 查詢各個課程號與相應(yīng)的選課人數(shù);&#

6、178; 查詢每個學(xué)生及其選修課程的情況;² 查詢每一門課的間接先修課(即先修課的先修課)² 查詢選修了“數(shù)據(jù)庫”課程且成績在90分以上的所有學(xué)生;² 查詢與“劉晨”在同一個系學(xué)習(xí)的學(xué)生姓名及所在系² 查詢選修了課程名為“管理信息系統(tǒng)”的學(xué)生學(xué)號和姓名;² 查詢其他系中比工業(yè)工程系任一學(xué)生年齡小的學(xué)生名單;² 查詢所有未選修“可靠性”課程的學(xué)生姓名;² 查詢計算機系的學(xué)生與年齡不大于19歲的學(xué)生的交集。(5)按要求編制實驗報告報告要求:Ø 對任務(wù)(2)中設(shè)計的各個表注明其各個屬性的約束;用關(guān)系圖表示出各個表的關(guān)聯(lián),

7、并加以說明;Ø 對任務(wù)(3)在報告中列出添加相應(yīng)實例的各個表,要求每個表中的元組數(shù)目不能低于8行,但也不超過15個;Ø 對任務(wù)(4)在報告中寫出SQL查詢語句。Ø 實驗報告封面格式見附件4所示。建議:有條件的同學(xué)可以試著在SQL Server中完成相應(yīng)的操作。實驗二 熟悉SQLServer2000系統(tǒng)環(huán)境及基本操作1實驗?zāi)康模?)掌握SQL Server 2000企業(yè)管理器,創(chuàng)建相應(yīng)的數(shù)據(jù)庫、基本表、視圖、約束和索引的創(chuàng)建、修改和刪除操作。(2)掌握數(shù)據(jù)庫的備份/還原和分離/附加操作。(3)掌握身份驗證模式的修改,登錄帳號與角色的創(chuàng)建。(4)學(xué)會使用查詢分析器進行

8、調(diào)試。(5)掌握游標(biāo)、存儲過程、觸發(fā)器的使用。2實驗任務(wù)(1)熟悉SQL Server 2000中企業(yè)管理器的使用環(huán)境;(2)練習(xí)啟動/關(guān)閉數(shù)據(jù)庫服務(wù)的三種方式(見教材P111);(3)熟悉SQL Server 2000的安裝目錄(見教材P113P117);(4)觀察SQL Server系統(tǒng)數(shù)據(jù)庫和系統(tǒng)表;(5)察看當(dāng)前系統(tǒng)的身份驗證模式; 步驟:在企業(yè)管理器中左邊樹形圖中,展開到服務(wù)器結(jié)點,選擇服務(wù)器,然后單擊鼠標(biāo)右鍵,選擇“屬性”,再選擇“安全性”選項卡。(6)創(chuàng)建實驗一中的學(xué)籍系統(tǒng)數(shù)據(jù)庫,并把相應(yīng)的數(shù)據(jù)/事務(wù)日志文件保存到“D:TSQL教學(xué)DATA”目錄下,數(shù)據(jù)庫名稱為xueji。如目錄

9、不存在請自建。(7)練習(xí)創(chuàng)建五類約束,并輸入數(shù)據(jù)體會約束的作用;(見教材P127P130)(8)練習(xí)創(chuàng)建索引的方法,對表及表中屬性列進行修改、刪除操作(9)用實驗一中的部分查詢創(chuàng)建相應(yīng)的視圖,要求創(chuàng)建12個;(10) 體會數(shù)據(jù)庫的備份/還原與分離/附加操作;(11)請體會如下T-SQL程序(在查詢分析器中進行實驗)向數(shù)據(jù)庫中添加兩個日志文件USE xuejiGO ALTER DATABASE xuejiADD LOG FILE ( NAME = test1log2, FILENAME = 'd:TSQL教學(xué)datatest2log.ldf', SIZE = 5MB, MAXSI

10、ZE = 100MB, FILEGROWTH = 5MB), ( NAME = test1log3, FILENAME = 'd:TSQL教學(xué)datatest3log.ldf', SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 5MB)向數(shù)據(jù)庫中添加由兩個文件組成的文件組Use xuejiALTER DATABASE xuejiADD FILEGROUP Test1FG1 命名文件組GO ALTER DATABASE xuejiADD FILE ( NAME = test1dat3, FILENAME = 'd:TSQL教學(xué)datat

11、1dat3.ndf', SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 5MB), ( NAME = test1dat4, FILENAME = 'd:TSQL教學(xué)datat1dat4.ndf', SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 5MB) TO FILEGROUP Test1FG1 從數(shù)據(jù)庫中刪除文件USE xuejiGO ALTER DATABASE Test1 REMOVE FILE test1dat4 GO 創(chuàng)建工作表(jobs)Use xuejiCREATE TABLE jo

12、bs ( job_id smallint IDENTITY(1,1) PRIMARY KEY CLUSTERED, job_desc varchar(50) NOT NULL DEFAULT 'New Position - title not formalized yet', min_lvl tinyint NOT NULL CHECK (min_lvl >= 10), max_lvl tinyint NOT NULL CHECK (max_lvl <= 250) ) 注:請使用插入語句進行約束試驗。清空表操作Use xuejiDelete jobs刪除表操作Use

13、 xuejiDrop jobs(12) 根據(jù)任務(wù)(6)創(chuàng)建的數(shù)據(jù)庫完成以下各小題的測試,調(diào)試下面存儲過程,寫出每一步意思。USE xuejiIF EXISTS(SELECT * FROM SYSOBJECTS WHERE TYPE='P'AND NAME='TEST1')DROP PROC TEST1GOCREATE PROCEDURE test1 test_cursor CURSOR VARYING OUTPUTASSET test_cursor=CURSOR SCROLL STATICFOR SELECT XH,XM FROM studentOPEN tes

14、t_cursorGO DECLARE tt cursor,sno varchar(6),sname varchar(10)EXEC TEST1 test_cursor=tt OUTPUTWHILE FETCH_STATUS=0 BEGIN FETCH tt INTO sno,snameprint 'The result is'+sno+' '+sname END fetch last from tt into sno,snameCLOSE TTDEALLOCATE TTGO按要求創(chuàng)建存儲過程,并調(diào)試 創(chuàng)建一個存儲過程,計算student表中每一個學(xué)生的出生日期,

15、并顯示出來。調(diào)試下列觸發(fā)器,寫出每一步的意思ALTER TABLE studentADD birth_year INT GOIF EXISTS(SELECT * FROM sysobjects WHERE name='tr_stu_birth' AND type='tr')DROP TRIGGER tr_stu_birthGOCREATE TRIGGER tr_stu_birth ON studentFOR INSERTAS DECLARE sno varchar(6),age int,birthyear int SELECT sno=xh FROM INSER

16、TED SELECT age=nl FROM student WHERE sno=xh IF isnull(age,0)<>0 BEGINSELECT birthyear=year(getdate()-ageUPDATE studentSET birth_year=birthyearWHERE xh=sno ENDGO按要求創(chuàng)建觸發(fā)器,并調(diào)試。 創(chuàng)建一個觸發(fā)器,當(dāng)刪除student表中的記錄中,自動刪除SC表中該學(xué)生相應(yīng)的記錄。(13)完成第7章第7第10題。(14)按要求編制實驗報告。 報告包括任務(wù)(9)、(12)、(13)的內(nèi)容。其它不要求。實驗報告封面格式見附件4所示。實驗三

17、 數(shù)據(jù)庫訪問程序的編制1實驗?zāi)康恼莆諗?shù)據(jù)庫設(shè)計過程及數(shù)據(jù)庫應(yīng)用軟件的基本開發(fā)模式。2實驗任務(wù)根據(jù)實驗?zāi)康?,結(jié)合專業(yè)課程或某方面需求自擬一個題目,開發(fā)一個數(shù)據(jù)庫應(yīng)用程序。3、要求Ø 界面合理,方便用戶使用Ø 數(shù)據(jù)庫設(shè)計合理Ø 能夠進行多種條件的查詢,包括各種組合查詢。Ø 能夠方便地增添數(shù)據(jù)及刪除數(shù)據(jù),并正確更新到數(shù)據(jù)庫中。Ø 能夠方便地進行有關(guān)數(shù)據(jù)的修改。Ø 提供多種方式的瀏覽數(shù)據(jù)功能。Ø 按格式編制實驗報告。 實驗報告封面格式見附件4所示。學(xué)生成績管理數(shù)據(jù)庫訪問程序示例見附件3。附件1 ACCESS軟件內(nèi)容介紹(1)數(shù)據(jù)庫創(chuàng)

18、建方法兩種:通過向?qū)?chuàng)建或使用空白數(shù)據(jù)庫來人工創(chuàng)建。(強調(diào)一庫多表)。(2)數(shù)據(jù)表的創(chuàng)建方法三種;設(shè)計器,向?qū)?,輸入?shù)據(jù);(重點介紹通過設(shè)計器來創(chuàng)建表)(3)使用表設(shè)計器Access中字段的命名方法與其他數(shù)據(jù)庫系統(tǒng)中的字段命名方法基本相同,所不同的是,在Access中允許字段名包含空格和標(biāo)點符號。字段命名的規(guī)則如下:Ø 字段名所包含的字符數(shù)不得超過64個字符,包括空格在內(nèi),這些“字符是指單字節(jié)的字符,如果使用漢字來命名字段名,字符數(shù)需要減半;Ø 字段名可以由字母、數(shù)字、標(biāo)點符號等組成,可以使用漢字;Ø 字段名中不能含有西文中的句號(.)、感嘆號(?。┘胺嚼ㄌ枺ǎ?/p>

19、Ø 不能使用空格作為字段的第一個字符。在Access中可以使用的9種數(shù)據(jù)類型數(shù)據(jù)類型可存放的數(shù)據(jù)字節(jié)數(shù)文本字母、數(shù)字、字符、漢字0255備注字母、數(shù)字、字符、漢字065535數(shù)字?jǐn)?shù)值1、2、4或8字節(jié)日期/時間日期/或時間8貨幣貨幣數(shù)據(jù)8自動編號數(shù)值4是/否邏輯值1OLE對象圖片、聲音等超鏈接圖片、聲音、文檔等文本型字段字符串格式化字符格式化字符作用在該位置可以顯示任意可用的字符&在該位置可以顯示任意可用的字符,如果沒有可用的字符要顯示,Access將不顯示任何內(nèi)容<以小寫字母顯示>以大寫字母顯示+, -, $, (, )在字符串中直接顯示這些字符“要顯示的文本”

20、顯示用雙引號括起來的任何文本顯示該字符后面所跟的那個字符!左對齊*使用*號后面所跟字符來進行填充顏色設(shè)置所顯示字符串的顏色文本類型字段的屬性說明:Ø 字段大?。涸O(shè)置該字段所占用的字節(jié)數(shù),決定今后在該字段中所能輸入的最多字符數(shù),最大值為255。Ø 格式:設(shè)置該字段字符串的顯示格式。用上表中的格式化字符串的格式化字符。Ø 輸入掩碼:Ø 標(biāo)題:在用Access來創(chuàng)建的窗體中該標(biāo)題來標(biāo)識該字段。 Ø 默認(rèn)值:當(dāng)增加新記錄時,該字段所使用的預(yù)設(shè)值。Ø 有效性規(guī)則:設(shè)置限定該字段所能接受的輸入值。當(dāng)輸入的數(shù)據(jù)違反有效性規(guī)則的設(shè)置時,將顯示有效性文

21、本中的提示信息。Ø 有效性文本:當(dāng)輸入值不符合有效性規(guī)則時所顯示的信息。Ø 必填字段:Ø 允許空字符串:Ø 索引:三種情況。(加快搜索與排序)Ø Unicode壓縮:指定是否對該字段的文字進行Unicode壓縮,壓縮可以減少存儲空間。Ø 輸入法模式:設(shè)置當(dāng)焦點移動到該字段時是否打開輸入法。備注型字段(同上)數(shù)字型字段Ø 默認(rèn)值:當(dāng)增加新記錄時,該字段所使用的預(yù)設(shè)值。該值可以通過使用表達式生成器來生成,“表達式生成器”對話框如下圖所示。在對話框中選擇要使用的項目,然后單擊“粘貼”按鈕即可將其粘貼到表達式中。日期/時間型字段&#

22、216; 格式:設(shè)置字段的顯示格式??梢允且话闳掌?、長日期、中日期、短日期、長時間、中時間、短時間等。另外,在Access中允許用戶自定義日期/時間型字段的格式。自定義格式可由兩部分組成,它們之間用分號分隔,第一部分用來說明日期、時間的格式:第二部分用來說明當(dāng)日期/時間型字段為空(Null)時的顯示格式。有關(guān)日期/時間型字段的格式客符如下表。日期/時間型格式字符格式字符作用:設(shè)置小時、分、秒之間分隔符的位置/設(shè)置年、月、日之間分隔符的位置c按照一般日期格式顯示aaa顯示中文星期幾d當(dāng)日期是一位數(shù)時將日期顯示成一位數(shù)dd當(dāng)日期是一位數(shù)時將日期顯示成兩位數(shù),例如2日顯示成02日ddd顯示星期的英文

23、縮寫dddd顯示星期的完整英文名稱ddddd按照短日期格式顯示dddddd按照長日期格式顯示w用數(shù)字來顯示星期幾ww顯示是一年中的第幾個星期m當(dāng)月份是一位數(shù)時將月份顯示成一位數(shù)mm當(dāng)月份是一位數(shù)時將月份顯示成兩位數(shù)mmm顯示月份的英文縮寫mmmm顯示月份的完整英文名稱g顯示季節(jié)Y顯示是一年中的第幾天YY用兩位數(shù)顯示年份YYYY用4位數(shù)顯示的份h當(dāng)小時是一位數(shù)時將小時顯示成一位數(shù)hh當(dāng)小時是一位數(shù)時將小時顯示成兩位數(shù)n當(dāng)分鐘是一位數(shù)時將分鐘顯示成一位數(shù)nn當(dāng)分鐘是一位數(shù)時將分鐘顯示成兩位數(shù)s當(dāng)鈔種是一位數(shù)時將分鐘顯示成一位數(shù)ss當(dāng)鈔釧是一位數(shù)時將分鐘顯示成兩位數(shù)tttt按照長時間格式顯示AM/P

24、M用適當(dāng)?shù)腁M/PM顯示12小時制時鐘am/pm用適當(dāng)?shù)腶m/pm顯示12小時制時鐘A/P用適當(dāng)?shù)腁/P顯示12小時制時鐘a/p用適當(dāng)?shù)腶/p顯示12小時制時鐘AMPM按照WINDOWS中所設(shè)置的格式顯示-+$這些字符可以直接用于顯示“要顯示的文字”顯示雙引號間的文本顯示跟隨其后的那個字符!左對齊*用跟隨其后的那個字符作為填充字符顏色用于設(shè)置顯示的顏色貨幣型字段Ø 同上自動編號字段自動編號字段是一種較為特殊的數(shù)據(jù)類型,當(dāng)您每次向表中添加記錄時,Access會自動為該字段添加一個編號。使用這種類型的字段可以保證在表中編號的唯一性。當(dāng)刪除一條記錄時,該字段并不重新編號,并且不再使用已被刪

25、除的編號。Ø 新值:設(shè)置新增加記錄時編號是遞增方式,還是遞減方式。是/否型字段是/否型字段存放邏輯值。Ø 格式:在Access中邏輯型字段可以有多種顯示格式,如是/否、真/假、開/關(guān)等。OLE對象型字段OLE對象型字段存放其他Windows對象,為了使用用戶能夠瀏覽和編輯該對象,該對象必須是由支持OLE的Windows應(yīng)用程序所創(chuàng)建的,并且在以后使用數(shù)據(jù)庫時,該應(yīng)用程序被安裝到Windows系統(tǒng)中。Access支持OLE對象的“鏈接”與“嵌入”。當(dāng)您選用鏈接方式時,OLE對象的數(shù)據(jù)仍舊保存在原來的文件中,這時如果原文件被修改,則鏈接OLE對象的內(nèi)容也將被修改。當(dāng)您選用嵌入方

26、式時,OLE對象的數(shù)據(jù)被插入到數(shù)據(jù)庫文件中,這時如果原文件被修改,嵌入的OLE對象的內(nèi)容并不會發(fā)生變化。使用嵌入方式時,由于OLE對象的數(shù)據(jù)要插入到數(shù)據(jù)庫中,可能使數(shù)據(jù)庫文件變得很大。超鏈接型字段超鏈接型字段用來存放通過超鏈接方式鏈接的Windows對象。設(shè)置輸入掩碼輸入掩碼用于輸入格式化的數(shù)據(jù)。除備注、OLE對象、自動編號、邏輯等4種數(shù)據(jù)類型之外,都可以使用輸入掩碼來格式化輸入數(shù)據(jù)。輸入掩碼有3部分組成,各部分用分號分隔。第一部分用來定義數(shù)據(jù)的格式,格式字符串如下表所示。第二部分設(shè)置數(shù)據(jù)的存放方式,如果等于0,則按顯示的格式進行存放,如果等于1,則只存放數(shù)據(jù)。第三部分定義一個用來標(biāo)明輸入位置

27、的符號,缺省時使用下劃線。如:“TEL:”(999)00000000;0;_輸入掩碼格式字符格式字符作用0必須在該位置輸入數(shù)字L必須在該位置輸入字母A必須在該位置輸入字母或數(shù)字&必須在該位置輸入字符或空格9只允許輸入數(shù)字及空格,如果用戶移動光標(biāo)通過該位置而未輸入任何內(nèi)容,Access將不儲存任何內(nèi)容#只允許輸入數(shù)字、“+”或“-”符號以及空格,如果用戶移動光標(biāo)通過該位置而未輸入任何內(nèi)容,Access將默認(rèn)為空格?只允許輸入字母,如果用戶移動光標(biāo)通過該位置而未輸入任何內(nèi)容,Access將不儲存任何內(nèi)容a只允許輸入字母或數(shù)字,如果用戶移動光標(biāo)通過該位置而未輸入任何內(nèi)容,Access將不儲存

28、任何內(nèi)容C只允許輸入字母或空格,如果用戶移動光標(biāo)通過該位置而未輸入任何內(nèi)容,Access將不儲存任何內(nèi)容!字符從右向左填充<轉(zhuǎn)換成小寫字母>轉(zhuǎn)換成大寫字母.小數(shù)點位置,數(shù)字千位分隔符;、/日期時間分隔符顯示后面所跟隨的那個字符“文本”顯示雙引號括起來的文本設(shè)置主關(guān)鍵字在每個Access表中都可以指定一個主關(guān)鍵字,主關(guān)鍵字可以包含一個或多個字段,以保證每條記錄都具有唯一的值。如何選取多個字段?在單擊字段選擇按鈕的同時按住“CTRL”鍵可以同時選擇多個字段。(4)獲取外部數(shù)據(jù)源在Access中除了可以直接輸入數(shù)據(jù)外還可以從其他文件中獲取數(shù)據(jù),這樣可以免去重復(fù)錄入數(shù)據(jù)的麻煩。方式有以下兩

29、種:(1) 導(dǎo)入表:(2) 鏈接表(5)建立表之間的關(guān)系當(dāng)在數(shù)據(jù)庫定義了兩個以上的表時,就需要通過表間的關(guān)系來將不同的表連接起來,使各表能同步工作。要在兩個表間建立關(guān)系,必須在這兩個表中擁有相同數(shù)據(jù)類型的字段。例如我們可以通過字段“身份證號碼”來建立“職工基本情況”表和“職工工資情況”表之間的關(guān)系,其操作方法如下: 打開表所在的數(shù)據(jù)庫窗口。 單擊工具欄中的“關(guān)系”按鈕,如果是第一次建立表之間的關(guān)系,則出現(xiàn)“顯示表”對話框,如下圖: 選擇要建立關(guān)系的表,然后單擊“添加”按鈕,逐個添加要建立關(guān)系的表。過盛所有要建立關(guān)系的表的添加后,單擊“關(guān)閉”按鈕,關(guān)閉“顯示表”對話框。 如下圖所示“關(guān)系”對話框

30、中選擇“職工基本情況表”中的“身份證號碼”字段。 按下鼠標(biāo)器左鍵,將其拖動到“職工工資表”中的“身份證號碼”字段上,如下圖所示。釋放鼠標(biāo)鍵后出現(xiàn)“編輯關(guān)系”對話框,如下圖: 如果要在更新主表中主關(guān)鍵字字段的內(nèi)容時,同步更新關(guān)系表中相關(guān)字段的內(nèi)容,請在“編輯關(guān)系”對話框中先選取“實話參照完整性”前面的復(fù)選框,再選取“級聯(lián)更新相關(guān)字段”前面的復(fù)選框。 如果要在刪除主表中記錄的同時刪除關(guān)系表中的相關(guān)記錄,請在“編輯關(guān)系”對話框中選取“實施參照完整性”前面的復(fù)選框,再選取“級聯(lián)刪除相關(guān)記錄”前面的復(fù)選框。需要注意的是,必須在所有關(guān)系表中都選擇了該項,該項才有效,否則該項無效。 要設(shè)置表之間的聯(lián)接方式,

31、可以單擊“聯(lián)接類型”按鈕,出現(xiàn)“聯(lián)接屬性”對話框,如下圖,在該對話框中選擇聯(lián)接的方式。 單擊“關(guān)系”對話框中“創(chuàng)建”按鈕,創(chuàng)建表之間的關(guān)系,如下圖。從下圖中可以看到,在創(chuàng)建關(guān)系的表之間有一條線將其聯(lián)接起來,直觀地顯示出表之間的關(guān)系。 關(guān)閉“關(guān)系”對話框,這時Access會詢問您是否保存關(guān)系的設(shè)置,將設(shè)置的關(guān)系保存起來。附件2 ADO數(shù)據(jù)訪問原理第一部分 VB數(shù)據(jù)訪問技術(shù)概述一、VB數(shù)據(jù)訪問技術(shù)的發(fā)展經(jīng)歷以下三個階段:1、DAO(Data Access Object)與Microsoft Jet2、RDO(Remote Data Object)與ODBC數(shù)據(jù)驅(qū)動接口3、ADO(ActiveX D

32、ata Object)與OLE DBMicrosoft 推出的UDA(Universal Data Access,一致數(shù)據(jù)訪問技術(shù))包括兩層軟件接口: ADO 應(yīng)用層的編程接口; OLE DB系統(tǒng)級的編程接口。二、ADO數(shù)據(jù)訪問對象模型主要包括:三個主體對象:Connection;Command;Recordset。四個集合對象:Errors Error Properties Property Parameters Parameter Fields Field典型的ADO應(yīng)用使用Connection對象建立與數(shù)據(jù)源的連接,然后用一個Command對象給出對數(shù)據(jù)庫操作的命令,而Recordset

33、用于對結(jié)果數(shù)據(jù)進行維護或者瀏覽等操作。第二部分ADO對象一、Connection對象步驟:1、引用ADO對象庫;打開“工程”菜單“引用”進入引用對話框;選擇“Microsoft ActiveX Data Objects 2.0 Library”2、創(chuàng)建Connection對象 Public cnnStu As New ADODB.Connection3、為Connection對象指定其連接的數(shù)據(jù)源類型 Object.Provider = “數(shù)據(jù)源提供者名稱” 如:CnnStu.Provider=“Microsoft.Jet.OLEDB.4.0”4、指定具體數(shù)據(jù)源并打開 Object.Open

34、文件路徑及文件名如:CnnStu.Open App.Path & “studata.mdb”Connection對象中其他主要屬性和方法:屬性:CursorLocation設(shè)置或返回游標(biāo)位置。(adUserClient)State查看當(dāng)前對象的狀態(tài);ConnectionString用于建立到數(shù)據(jù)源的連接信息。CommandTimeout終止嘗試和產(chǎn)生錯誤之前執(zhí)行命令期間需等待的時間。ConnectionTimeout在終上嘗試和產(chǎn)生錯誤之前建立連接所等待的時間。方法:Close關(guān)閉當(dāng)前對象;BeginTrans 啟動新事務(wù);CommitTrans保存所有更改并結(jié)束當(dāng)事務(wù);Rollbac

35、kTrans 取消當(dāng)前事務(wù)中所做的任何更改并結(jié)束事務(wù)。應(yīng)用語法:Object.BeginTrans Object.CommitTrans Object.RollbackTranslevel=Object.BeginTrans() 用于得到事務(wù)嵌套層次Execute執(zhí)行指定的查詢、SQL語句等內(nèi)容。應(yīng)用語法:Object.Execute CommandText, RecordsAffectedOpen打開到數(shù)據(jù)庫的鏈接。應(yīng)用語法:Object.Open ConnectionString, UserID, PasswordCancel 取消已掛起的Execute或Open方法的調(diào)用二、Comman

36、d對象ConnectionCommandParameters屬性:ActiveConnection設(shè)置Command當(dāng)前所屬的Connection對象CommandText 包含要發(fā)送給數(shù)據(jù)提供者的文本。CommandType CommandText類型。State對象狀態(tài)屬性方法:Execute執(zhí)行在CommandText中指定的內(nèi)容。應(yīng)用語法:Set RecordsetObj=Object.ExecuteCancel 取消執(zhí)行被掛起的Execute方法的調(diào)用。應(yīng)用示例:Dim Cn As New ADODB.ConnectionDim Cmd As New ADODB.CommandIf

37、the ADOTestTable does not exitOn Error GoTo AdoErrorCn.Open “MySample”, ”Sa”Set Cmd.ActiveConnection=CnCmd.CommandType=adCmdTextCmd.CommandText=“drop table MyTestTable”Cmd.ExecuteCmd.CommandText=“create table MyTestTable(id int, Name char(100)”Cmd.ExecuteCmd.CommandText=“insert into MyTestTable valu

38、es(1, Pan Admin)”Cmd.ExecuteCn.closeExit subAdoError:handle error三、Recordset對象ConnectionRecordsetFields創(chuàng)建Recordset對象:Public rstStu AS NEW ADODB.Recordset Set rstStu.ActiveConnection=Cn主要屬性:ActiveConnection指定Recordset對象所屬的Connection對象BOF表示當(dāng)前記錄位于Recordset對象的第一個記錄之前。EOF表示當(dāng)前記錄位于Recordset對象的最后的一個記錄之后Curs

39、orLocation 設(shè)置或返回游標(biāo)位置。CursorType 表示在Recordset對象中使用的游標(biāo)類型。(動態(tài)、鍵集、靜態(tài)、僅向前游標(biāo)四種)常量說明adOpenForwardOnly僅向前游標(biāo),默認(rèn)值。與靜態(tài)游標(biāo)相同,但只能在記錄中向前滾動。當(dāng)需要在記錄集中單向移動時,可用于提高性能。adOpenKeyset鍵集游標(biāo)。盡管從您的記錄集不能訪問其他用戶刪除的記錄,但除無法查看其他用戶添加的記錄外,鍵集游標(biāo)與動態(tài)游標(biāo)相似。仍然可以看見其他用戶更改的數(shù)據(jù)。adOpenDynamic動態(tài)游標(biāo)。可以看見其他用戶所作的添加、更改和刪除。允許在記錄集中進行所有類型的移動,但不包括提供者不支持的書簽操作

40、。adOpenStatic靜態(tài)游標(biāo)。可以用來查找數(shù)據(jù)或生成報告的記錄集合的靜態(tài)副本。另外,對其他用戶所作的添加、更改或刪除不可見。CacheSize設(shè)置或返回本地緩存中Recordset記錄數(shù)RecordCount 返回經(jīng)過查詢操作所得到的記錄集中記錄的數(shù)目State查看當(dāng)前對象的狀態(tài);LockType 常量說明adLockReadOnly默認(rèn)值,只讀。無法更改數(shù)據(jù)。adLockPessimistic保守式記錄鎖定(逐條)。提供者執(zhí)行必要的操作確保成功編輯記錄,通常采用編輯時立即鎖定數(shù)據(jù)源的記錄的方式。adLockOptimistic開放式記錄鎖定(逐條)。提供者使用開放式鎖定,只在調(diào)用方法時

41、鎖定記錄。adLockBatchOptimistic開放式批更新。用于與立即更新模式相反的批更新模式。主要方法:Open方法Object.Open Source, ActiveConnection,CursorType, LockType, Option應(yīng)用方法:rstStu.Open “Select * From Student”AddNew方法為可更新RecordSet對象創(chuàng)建新記錄。應(yīng)用方法: rstStu.AddNew rstStu.fields!Sno=ValueUpdate方法保存對Recordset對象當(dāng)前記錄所做的所有更改。應(yīng)用方法: rstStu .Update Close方

42、法rstStu.Close Requery方法通過重新執(zhí)行對象所基于的查詢,來更新Recordset對象中的數(shù)據(jù)。應(yīng)用方法:rstStu.RequeryMoveFirst, MoveLast, MoveNext, MovePrevious方法分別移動對象指針使相應(yīng)的記錄為當(dāng)前記錄。Delete方法刪除當(dāng)前記錄或記錄組。應(yīng)用方法:rstStu.DeleteClone、Save、Move、Resync、UpdateBatch、CancelBatch、Cancel。第三部分 ADO事件過程概述ConnectionEvent事件兩大類RecordsetEvent事件1、 ConnectionEvent

43、事件ConnectionEvent事件過程說明BeginTransCompleteCommitTransCompleteRollbackTransComplete事務(wù)管理:關(guān)于連接上的當(dāng)前事務(wù)已經(jīng)開始、已經(jīng)提交、或者已經(jīng)回卷的通知。WillConnectConnectComplete Disconnect連接管理:關(guān)于當(dāng)前連接即將開始、已經(jīng)開始或已經(jīng)結(jié)束的通知。WillExceute ExecuteComplete命令執(zhí)行管理:關(guān)于連接的當(dāng)前命令的執(zhí)行即將開始或已經(jīng)結(jié)束的通知。2、 RecordsetEvent事件RecordsetEvent事件過程說明WillChangeFieldField

44、ChangeComplete字段更改管理:關(guān)于當(dāng)前字段值即將更改或者已經(jīng)更改的通知。WillMoveMoveCompleteEndofRecordset定位管理:關(guān)于當(dāng)前行在Recordset中的位置即將更改,已經(jīng)更改、或者已經(jīng)達到RecordSet結(jié)尾的通知。WillChangeRecordRecordChangeComplete行更改管理:關(guān)于Recordset當(dāng)前行的某些地方即將更改,或者已經(jīng)更改的通知WillChangeRecordsetRecordsetChangeComplete記錄集更改管理:關(guān)于當(dāng)前Recordset的某些地方即將更改,或已經(jīng)更改的通知。3、 定義帶有事件對象的

45、方法Dim cnnStu AS NEW ADODB.ConnectionDim WithEvent cnnStuEvent AS ADODB. Connectionset cnnStuEvent=cnnStu 打開事件支持Set cnnStuEvent=Nothing 關(guān)閉事件支持附件3數(shù)據(jù)庫應(yīng)用程序示例 根據(jù)學(xué)生數(shù)據(jù)庫(Stu.mdb)中的Student表的內(nèi)容,本示例簡單介紹了針對數(shù)據(jù)庫進行插入、刪除、瀏覽、查詢、更改操作的VB代碼實現(xiàn)。所用數(shù)據(jù)庫(stu.mdb)數(shù)據(jù)字典如表2-1、2-2、2-3所示。表2-1 Student基本表序號字段名稱數(shù)據(jù)類型字段大小約束標(biāo)題1Sno文本6主鍵學(xué)

46、號2Sname文本10姓名3Ssex文本2性別4Sbirthday日期長日期出生日期5Sphone文本12家庭電話6Saddress文本50家庭住址表2-2Course基本表序號字段名稱數(shù)據(jù)類型字段大小約束標(biāo)題1Cno文本6主鍵課程號2Cname文本50課程名3CteacherName文本10任課教師4CBookName文本50教材名5Cpress文本50教材出版社表2-3Grade基本表序號字段名稱數(shù)據(jù)類型字段大小約束標(biāo)題1Cno文本6主鍵課程號2Sno文本6學(xué)號3Grade數(shù)字長整型Grade>=0 And Grade<=100成績其中表2-2、2-3在本示例中沒有用。示例程序

47、界面設(shè)計狀態(tài)見圖2-1。程序界面控件命名如表2-4所示。表2-4 程序界面控件控件類型程序命名Caption控件類型程序命名CaptionDataGriddtgStuFrameFrame1學(xué)生基本信息匯總FrameFrame2信息維護LabellblSno學(xué)號TextBoxtxtSnoLabellblSname姓名TextBoxtxtSnameLabellblSsex性別ComboBoxcboSsexLabellblSbirthday出生日期DTPickerdtpSbirthdayLabellblSphone家庭電話TextBoxtxtSphoneLabellblSaddress家庭住址Tex

48、tBoxtxtSaddressCommandButtoncmdAdd添新同學(xué)/確認(rèn)添加CommandButtoncmdUpdate編輯/更新CommandButtoncmdView瀏覽CommandButtoncmdFirst第一個CommandButtoncmdNext下一個CommandButtoncmdPrior上一個CommandButtoncmdLast最后一個CommandButtoncmdDelete刪除CommandButtoncmdQuery查詢CommandButtoncmdExit退出圖2-1 程序界面設(shè)計狀態(tài)程序代碼如下:Dim cnnStu As New ADODB.

49、Connection '定義連接對象變量,并使用NEW關(guān)鍵字注冊。Dim rstStu As New ADODB.Recordset '定義記錄集對象變量,并使用NEW關(guān)鍵字注冊。Sub textClear() '以下代碼使信息維護區(qū)域的相應(yīng)文本框置空,為添加記錄做準(zhǔn)備, '其它兩個控件性別與出生日期考慮控件性質(zhì)不置空. txtSno.Text = "" txtSname = "" txtSphone = "" txtSaddress = ""End SubPrivate Sub c

50、mdAdd_Click() Disable_View_Control cmdUpdate.Caption = "編輯" If cmdAdd.Caption = "添新同學(xué)" Then textClear cmdAdd.Caption = "確認(rèn)添加" Enable_TxtSno '使學(xué)號文本框能進行編輯 Enable_Txt_OtherControl '自定義過程,使信息維護區(qū)域相關(guān)控件能進行編輯 txtSno.SetFocus Else With rstStu '以下代碼進行數(shù)據(jù)輸入的有效性驗證 If Tri

51、m(txtSno) = "" Then '有效性驗證,主鍵不能為空 MsgBox "學(xué)號不能為空!", vbExclamation, "請注意" txtSno.SetFocus Exit Sub End If '判斷該學(xué)號是否已經(jīng)存在!因為主鍵值是惟一的. Dim CurrentPosition As Variant CurrentPosition = rstStu.Bookmark rstStu.Find "sno ='" & Trim(txtSno.Text) & &qu

52、ot;'" If rstStu.EOF <> True Then MsgBox "該記錄已經(jīng)存在!", vbExclamation, "警告" BindData '把該記錄顯示到信息維護區(qū)域 Exit Sub End If rstStu.Bookmark = CurrentPosition '恢復(fù)游標(biāo)指針位置 If Trim(txtSname) = "" Then '程序所加的約束,姓名不能為空 MsgBox "姓名不能為空!", vbExclamation,

溫馨提示

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

評論

0/150

提交評論