第一篇:黑大數(shù)據(jù)庫(kù)實(shí)驗(yàn)報(bào)告
黑龍江大學(xué)
“數(shù)據(jù)庫(kù)系統(tǒng)原理課程設(shè)計(jì)”總結(jié)報(bào)告
學(xué)院 年級(jí) 專(zhuān)業(yè) 學(xué)號(hào) 姓名 報(bào)告日期 成績(jī)
軟件學(xué)院 2014級(jí) 軟件工程 20143983 陸芝浩 2016.11.9
黑龍江大學(xué)軟件學(xué)院
1、開(kāi)發(fā)環(huán)境
操作系統(tǒng): Windows7
編程語(yǔ)言環(huán)境 :VC++6.0
2、DBMS系統(tǒng)架構(gòu)
3、DBMS主要功能模塊
1、實(shí)現(xiàn)SQL語(yǔ)句中的Create Table建表語(yǔ)句,建立相應(yīng)的數(shù)據(jù)庫(kù)表,并生成相應(yīng)的數(shù)據(jù)字典文件和數(shù)據(jù)文件。
2、實(shí)現(xiàn)alter table表模式的修改功能: ①能夠?yàn)橐呀⒌谋硖砑訉傩?。②能夠從已建立的表中刪除屬性。
3、實(shí)現(xiàn)drop table刪除表功能。
4、實(shí)現(xiàn)create index創(chuàng)建索引的功能。
5、實(shí)現(xiàn)drop index刪除索引的功能。
6、實(shí)現(xiàn)insert可以向已經(jīng)創(chuàng)建的表插入元組。
7、實(shí)現(xiàn)delete從已經(jīng)創(chuàng)建的表中刪除元組。
8、實(shí)現(xiàn)update修改表中的數(shù)據(jù)。
9、實(shí)現(xiàn)SELECT語(yǔ)句,包括: 實(shí)現(xiàn)單表全屬性查詢(xún)。實(shí)現(xiàn)單表單屬性查詢(xún)。實(shí)現(xiàn)多表的連接全屬性查詢(xún)。
實(shí)現(xiàn)多表的連接和選擇條件的全屬性查詢(xún)。實(shí)現(xiàn)多表的連接的單屬性查詢(xún)。實(shí)現(xiàn)多表的連接和選擇的單屬性查詢(xún)。實(shí)現(xiàn)單表的選擇的單屬性查詢(xún)。實(shí)現(xiàn)單表的選擇的全屬性查詢(xún)。
10、利用啟發(fā)式關(guān)系代數(shù)優(yōu)化算法進(jìn)行查詢(xún)優(yōu)化。
11、建立訪問(wèn)權(quán)限,根據(jù)數(shù)據(jù)字典(DD)實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的安全性檢查和完整性約束的機(jī)制。
3.1 SQL語(yǔ)言的詞法和語(yǔ)法分析
(1)功能介紹
通過(guò)編譯原理的知識(shí)對(duì)輸入的SQL語(yǔ)句進(jìn)行詞法分析,將SQL語(yǔ)句拆分為若干個(gè)單詞,對(duì)其進(jìn)行語(yǔ)法分析,確定輸入的SQL語(yǔ)句的含義.(2)相關(guān)理論
利用編譯原理的相關(guān)知識(shí),對(duì)輸入的SQL語(yǔ)句進(jìn)行模仿SQL語(yǔ)言的詞法及語(yǔ)法結(jié)構(gòu)的分析。
(3)算法描述
在調(diào)用的每個(gè)相關(guān)模塊的的起始部分,對(duì)該條SQL語(yǔ)句進(jìn)行拆分,對(duì)每一個(gè)關(guān)鍵字位置進(jìn)行比對(duì)處理,如有詞法或語(yǔ)法錯(cuò)誤,立即停止此次調(diào)用模塊操作,并報(bào)錯(cuò),重新輸入SQL語(yǔ)句。
(4)程序流程圖
開(kāi)始SQL語(yǔ)句字符掃描詞法分析報(bào)錯(cuò)N關(guān)鍵字正確?Y語(yǔ)法分析YNSQL語(yǔ)句正確?Y命令執(zhí)行打印結(jié)果繼續(xù)輸入SQL語(yǔ)句?N結(jié)束
(5)測(cè)試用例與實(shí)驗(yàn)結(jié)果
詞法語(yǔ)法分析在各功能中體現(xiàn)。
3.2創(chuàng)建數(shù)據(jù)庫(kù)及數(shù)據(jù)操作功能
功能介紹
1、實(shí)現(xiàn)建立數(shù)據(jù)庫(kù)表的結(jié)構(gòu)的功能。(1)支持整型、字符型數(shù)據(jù)。(2)以文件形式保存基本表。(3)建立相應(yīng)的數(shù)據(jù)字典。
2、實(shí)現(xiàn)輸入數(shù)據(jù)庫(kù)表記錄的功能。
3、實(shí)現(xiàn)刪除數(shù)據(jù)庫(kù)表記錄的功能。
4、實(shí)現(xiàn)修改數(shù)據(jù)庫(kù)表記錄的功能。
5、實(shí)現(xiàn)顯示數(shù)據(jù)庫(kù)表結(jié)構(gòu)和內(nèi)容.6、實(shí)現(xiàn)在已有的表中添加屬性的功能;
7、實(shí)現(xiàn)從已有的表中刪除屬性的功能;
8、實(shí)現(xiàn)刪除表的功能。(2)相關(guān)理論
主要是對(duì)文件操作,讀文件、寫(xiě)文件及文件指針的運(yùn)用。(3)算法描述
創(chuàng)建表:
讀取由詞法分析產(chǎn)生的文件,根據(jù)相應(yīng)的關(guān)鍵字判斷應(yīng)該進(jìn)行何種操作,建表前應(yīng)先判斷該表是否存在,若不存在,將該表的信息及各個(gè)屬性的信息寫(xiě)入文件。生成相應(yīng)的數(shù)據(jù)字典和
數(shù)據(jù)文件。
程序流程圖:
開(kāi)始輸入SQL語(yǔ)句N(xiāo)詞法分析關(guān)鍵字正確?Y語(yǔ)法分析語(yǔ)法正確?Y執(zhí)行SQLN報(bào)錯(cuò)Y表存在?N創(chuàng)建表創(chuàng)建相應(yīng)表文件完成
刪除表:
1.根據(jù)要?jiǎng)h除的表名,查找該表是否存在。
2.該表若存在,則將調(diào)用remove函數(shù)刪除該表,并將與該表有關(guān)的信息及文件刪除。
程序流程圖:
開(kāi)始輸入SQL語(yǔ)句N(xiāo)詞法分析關(guān)鍵字正確?Y語(yǔ)法分析語(yǔ)法正確?Y執(zhí)行SQLN結(jié)束表不存在N表存在?Y刪除表刪除相應(yīng)表文件完成
增加屬性:
1.對(duì)要進(jìn)行操作的表判斷是否存在;
2.判斷要加入的屬性在表中是否已存在,若不存在則將要加入的屬性加入到該表中,相應(yīng)文件同時(shí)進(jìn)行更新。
程序流程圖:
開(kāi)始輸入SQL語(yǔ)句N(xiāo)詞法分析關(guān)鍵字正確?Y語(yǔ)法分析語(yǔ)法正確?Y執(zhí)行SQLN結(jié)束表不存在N表存在?Y屬性存在Y添加屬性存在?添加屬性更新相應(yīng)表文件完成
刪除屬性:
1.判斷該表是否存在;
2.斷該表中是否存在該屬性,若存在,則將該屬性刪除,并更新相應(yīng)文件的信息;
程序流程圖:
開(kāi)始輸入SQL語(yǔ)句N(xiāo)詞法分析關(guān)鍵字正確?Y語(yǔ)法分析語(yǔ)法正確?Y執(zhí)行SQLN結(jié)束表不存在N表存在?Y屬性不存在N刪除屬性存在?Y刪除屬性更新相應(yīng)表文件完成
插入數(shù)據(jù):
1.判斷表是否存在
2.判斷表中是否存在主鍵,若存在主鍵,則判斷插入數(shù)據(jù)的主鍵是否與已有數(shù)據(jù)的主鍵重復(fù)。若該表不存在主鍵,則直接插入數(shù)據(jù),并且更新
程序流程圖:
開(kāi)始輸入SQL語(yǔ)句N(xiāo)詞法分析關(guān)鍵字正確?Y語(yǔ)法分析語(yǔ)法正確?Y執(zhí)行SQL結(jié)束N結(jié)束表不存在N表存在?Y主鍵重復(fù)插入失敗YY主鍵存在?N插入數(shù)據(jù)N表有主鍵?更新相應(yīng)表文件插入數(shù)據(jù)完成
刪除記錄:
1.表是否存在
2.判斷欲刪除數(shù)據(jù)是否存在 3.根據(jù)判斷條件進(jìn)行刪除 4.更新相關(guān)文件
程序流程圖
開(kāi)始輸入SQL語(yǔ)句N(xiāo)詞法分析關(guān)鍵字正確?Y語(yǔ)法分析語(yǔ)法正確?Y執(zhí)行SQL完成N結(jié)束表不存在N表存在?Y更新相應(yīng)表文件數(shù)據(jù)不存在N數(shù)據(jù)是否存在Y插入數(shù)據(jù)
(5)測(cè)試用例與實(shí)驗(yàn)結(jié)果
①建表和修改表的結(jié)構(gòu) ②添加主鍵和插入數(shù)據(jù) ③刪除記錄 ④修改記錄 ⑤刪除表
3.3索引的創(chuàng)建及刪除
(1)功能介紹
1.在主鍵上建立主索引。2.在主鍵上建立輔助索引。3.在非主鍵上建立輔助索引。4.刪除索引。
(2)相關(guān)理論
對(duì)主鍵建立索引,利用二分查找法和順序查找法,二分查找法可縮短查詢(xún)時(shí)間,構(gòu)造一個(gè)索引文件,查詢(xún)時(shí)只要對(duì)索引文件進(jìn)行查詢(xún)即可,縮短了處理時(shí)間。
(3)算法描述
1.若是創(chuàng)建主索引,首先從表中找到主鍵;2.然后利用冒泡排序?qū)?shù)據(jù)進(jìn)行從小到大排序;3.建立主索引中,1條索引記錄每個(gè)磁盤(pán)塊中存放5個(gè)元組。4輔助索引每條索引記錄都對(duì)應(yīng)一個(gè)元組,輔助索引可以是無(wú)序文件,最后將其寫(xiě)入索引文件中。
程序流程圖
開(kāi)始輸入SQL語(yǔ)句N(xiāo)詞法分析關(guān)鍵字正確?Y語(yǔ)法分析語(yǔ)法正確?Y執(zhí)行SQL結(jié)束N結(jié)束表不存在N表存在?Y該屬性是非主屬性,建主鍵失敗對(duì)每個(gè)元組該屬性建立輔助索引N建立主索引?Y該屬性是主屬性?Y完成
對(duì)排序完成的數(shù)據(jù)建立主索引對(duì)表中文件以主屬性進(jìn)行排序
測(cè)試用例與實(shí)驗(yàn)結(jié)果
立主索引:
create index main student_index on student(num);
②建立主鍵上的輔助索引:
create index fuzhu student_index on student(num);
③建立非主鍵上的輔助索引:
create index fuzhu student_index on student(name);
3.4查詢(xún)功能
(1)功能介紹
①實(shí)現(xiàn)全關(guān)系選擇。
②實(shí)現(xiàn)單關(guān)系選擇。
③實(shí)現(xiàn)兩個(gè)關(guān)系的連接。
④實(shí)現(xiàn)兩個(gè)關(guān)系的連接和選擇。
⑤實(shí)現(xiàn)單關(guān)系投影。
⑥實(shí)現(xiàn)單關(guān)系選擇和投影。
⑦實(shí)現(xiàn)兩個(gè)關(guān)系的連接和投影。
⑧實(shí)現(xiàn)兩個(gè)關(guān)系的連接,投影和選擇。
相關(guān)理論
查找分為單表查詢(xún)以及單表索引查詢(xún),多表查詢(xún)是調(diào)用了單表查詢(xún),然后進(jìn)行選擇,連接以及投影。全關(guān)系查詢(xún)是將字典文件中該表的所有屬性取出,條件過(guò)濾是將SQL語(yǔ)句中的條件抽取出來(lái)依照字典文件中的表結(jié)構(gòu)進(jìn)行字段的一次排查將符合條件的留在結(jié)果集合中。不符合條件的從結(jié)果集合中刪除。完成之后按照字段進(jìn)行投影工作,投影同樣是依照sql語(yǔ)句以及數(shù)據(jù)字典進(jìn)行的。多表查詢(xún),是將sql語(yǔ)句中涉及的表首先行進(jìn)單表查詢(xún),將結(jié)果集合分別進(jìn)行條件過(guò)濾,表連接操作最后進(jìn)行投影工作。
(3)算法描述 a.全關(guān)系的選擇操作
掃描數(shù)據(jù)字典,判斷是否有該表,如果有,則掃描數(shù)據(jù)文件,將文件中內(nèi)容全部輸出。
b.實(shí)現(xiàn)單關(guān)系的投影操作
掃描數(shù)據(jù)字典,判斷是否有該表,若有該表,記錄要投影的屬性是第幾個(gè),掃描數(shù)據(jù)文件,將每個(gè)元組中要查詢(xún)的屬性輸出。
c.實(shí)現(xiàn)單關(guān)系的選擇操作(允許多條件)
掃描數(shù)據(jù)字典,判斷是否有該表,若有該表,掃描數(shù)據(jù)文件,利用循環(huán)將滿足“where”后條件的元組選出。
d.實(shí)現(xiàn)單關(guān)系的選擇投影操作(允許多條件)
掃描數(shù)據(jù)字典,判斷是否有該表,若有該表,則記錄需要投影的屬性是第幾個(gè),查找數(shù)據(jù)文件,利用循環(huán)將滿足“where”條件的元組找出并屬性相應(yīng)的屬性值。
e.實(shí)現(xiàn)兩個(gè)關(guān)系的連接操作
掃描數(shù)據(jù)字典,判斷是否有這兩個(gè)表,若有,則查找相關(guān)屬性,將兩個(gè)表中的相關(guān)屬性依據(jù)條件進(jìn)行匹配,若匹配成功,則表示連接成功,輸出連接結(jié)果。
f.實(shí)現(xiàn)兩個(gè)關(guān)系的選擇和連接操作
在以上的連接結(jié)果中挑選符合條件的元組輸出。
g.實(shí)現(xiàn)兩個(gè)關(guān)系的選擇、投影和連接操作
在以上的結(jié)果中選擇要投影的屬性,輸出。
程序流程圖
開(kāi)始輸入SQL語(yǔ)句詞法分析NN關(guān)鍵字正確?Y語(yǔ)法分析結(jié)束表不存在YN單表查詢(xún)?Y全屬性查詢(xún)?N條件查詢(xún)?Y條件滿足?結(jié)束未查詢(xún)到相關(guān)數(shù)據(jù)NN表存在?語(yǔ)法正確?執(zhí)行SQLYN顯示查詢(xún)屬性?xún)?nèi)容Y全屬性查詢(xún)?N連接查詢(xún)?連接查詢(xún)?YNN連接條件滿足?YY有選擇條件?N查詢(xún)到相關(guān)數(shù)據(jù)?NYYY顯示查詢(xún)結(jié)果N條件查詢(xún)?Y條件滿足?YYY連接條件滿足?N選擇條件滿足?NN結(jié)束
測(cè)試用例與實(shí)驗(yàn)結(jié)果
①全關(guān)系選擇: select * from student;
②單關(guān)系選擇:
select * from student where num=1000;
③實(shí)現(xiàn)兩個(gè)關(guān)系的連接:
select * from student,xuanxiu where num=x_num;
④實(shí)現(xiàn)兩個(gè)關(guān)系的連接和選擇:
select * from student,xuanxiu where num=x_num and num >1001;
⑤單關(guān)系投影:
select name,sex from student;
⑥單關(guān)系選擇和投影:
select name,sex from student where num=1007;
⑦兩個(gè)關(guān)系的連接和投影:
select num,grade from student,xuanxiu where num=x_num;
⑧兩個(gè)關(guān)系的連接,投影和選擇:
select num,grade from student,xuanxiu where num=x_num and num>1001;
3.6數(shù)據(jù)庫(kù)保護(hù)功能(1)功能介紹
要求根據(jù)數(shù)據(jù)字典(DD)實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的安全性檢查。包括設(shè)置口令、密碼和權(quán)限等。相關(guān)理論
掌握數(shù)據(jù)庫(kù)系統(tǒng)的安全性保護(hù)機(jī)制。(3)算法描述
編寫(xiě)一個(gè)登陸界面,限制用戶名和密碼,實(shí)現(xiàn)安全性保護(hù)機(jī)制,添加的用戶名和密碼都寫(xiě)到了mima.txt文件當(dāng)中。(4)程序流程圖
(5)測(cè)試用例與實(shí)驗(yàn)結(jié)果
①原來(lái)mima.txt文件中的數(shù)據(jù):
②添加用戶名:
root
密碼:8833 create user ttt identified by 888;
加后mima.txt文件中的數(shù)據(jù):
4、總結(jié)
通過(guò)模擬DBMS的實(shí)現(xiàn),使理論與實(shí)踐得到融合,更深刻的理解了相關(guān)原理及實(shí)現(xiàn)。通過(guò)實(shí)驗(yàn)的模擬,對(duì)關(guān)系代數(shù)的運(yùn)算,SQL語(yǔ)句的使用,有了更多的掌握,同時(shí)對(duì)數(shù)據(jù)庫(kù)的理解更深刻,提高了編程能力。
5、參考文獻(xiàn)
《數(shù)據(jù)庫(kù)系統(tǒng)原理》第2版 電子工業(yè)出版社 李建中編著
《數(shù)據(jù)結(jié)構(gòu)—用C語(yǔ)言描述》 唐策善 清華大學(xué)出版社。
第二篇:數(shù)據(jù)庫(kù)實(shí)驗(yàn)報(bào)告
數(shù)據(jù)庫(kù)實(shí)驗(yàn)報(bào)告
一、題目要求
某銀行準(zhǔn)備開(kāi)發(fā)一個(gè)銀行業(yè)務(wù)管理系統(tǒng),通過(guò)調(diào)查,得到以下的主要需求:
銀行有多個(gè)支行。各個(gè)支行位于某個(gè)城市,每個(gè)支行有唯一的名字。銀行要監(jiān)控每個(gè)支行的資產(chǎn)。銀行的客戶通過(guò)其身份證號(hào)來(lái)標(biāo)識(shí)。銀行存儲(chǔ)每個(gè)客戶的姓名及其居住的街道和城市??蛻艨梢杂袔?,并且可以貸款??蛻艨赡芎湍硞€(gè)銀行員工發(fā)生聯(lián)系,該員工是此客戶的貸款負(fù)責(zé)人或銀行帳戶負(fù)責(zé)人。銀行員工也通過(guò)身份證號(hào)來(lái)標(biāo)識(shí)。員工分為部門(mén)經(jīng)理和普通員工,每個(gè)部門(mén)經(jīng)理都負(fù)責(zé)領(lǐng)導(dǎo)其所在部門(mén)的員工,并且每個(gè)員工只允許在一個(gè)部門(mén)內(nèi)工作。每個(gè)支行的管理機(jī)構(gòu)存儲(chǔ)每個(gè)員工的姓名、電話號(hào)碼、家庭地址及其經(jīng)理的身份證號(hào)。銀行還需知道每個(gè)員工開(kāi)始工作的日期,由此日期可以推知員工的雇傭期。銀行提供兩類(lèi)帳戶——儲(chǔ)蓄帳戶和支票帳戶。帳戶可以由2個(gè)或2個(gè)以上客戶所共有,一個(gè)客戶也可有兩個(gè)或兩個(gè)以上的帳戶。每個(gè)帳戶被賦以唯一的帳戶號(hào)。銀行記錄每個(gè)帳戶的余額、開(kāi)戶的支行以及每個(gè)帳戶所有者訪問(wèn)該帳戶的最近日期。另外,每個(gè)儲(chǔ)蓄帳戶有其利率,且每個(gè)支票帳戶有其透支額。每筆貸款由某個(gè)分支機(jī)構(gòu)發(fā)放,能被一個(gè)或多個(gè)客戶所共有。每筆貸款用唯一的貸款號(hào)標(biāo)識(shí)。銀行需要知道每筆貸款所貸金額以及逐次支付的情況(銀行將貸款分幾次付給客戶)。雖然貸款號(hào)不能唯一標(biāo)識(shí)銀行所有為貸款所付的款項(xiàng),但可以唯一標(biāo)識(shí)為某貸款所付的款項(xiàng)。對(duì)每次的付款需要記錄日期和金額。
二、需求分析
這一部分主要是根據(jù)實(shí)驗(yàn)需求對(duì)銀行系統(tǒng)需求中的實(shí)體、實(shí)體屬性以及實(shí)體之間的關(guān)聯(lián)進(jìn)行確認(rèn),以便畫(huà)出正確的概念模型。
2.1 實(shí)體確認(rèn)
根據(jù)需求分析確認(rèn)實(shí)體:銀行員工、銀行支行、客戶、賬戶(其中:儲(chǔ)蓄賬戶、支票賬戶是繼承實(shí)體賬戶而來(lái))、貸款、支付(弱實(shí)體)。
2.2 實(shí)體屬性確認(rèn)
銀行員工:身份證號(hào)(pi)、姓名、電話號(hào)碼、家庭地址、開(kāi)始工作日期 銀行支行:支行名、資產(chǎn)、城市
客戶:身份證號(hào)、姓名、街道、所在城市 賬戶:賬戶號(hào)、余額、最近訪問(wèn)日期 支票賬戶:透支額 儲(chǔ)蓄賬戶:利率 2.3 實(shí)體關(guān)系確認(rèn)
賬戶和支行:N:1定義關(guān)系為Relationship_accout_bank 客戶和貸款:M:N定義關(guān)系為Relationship_client_loan 客戶和員工:M:1 定義關(guān)系為 Relation_client_staff 貸款和支行:1:N 定義關(guān)系為 Relationship_loan_bank 客戶和賬戶:M:N 定義關(guān)系為 client__accout 貸款發(fā)放信息和貸款:N:1 定義關(guān)系為 Relationship_loan_pay 支行和員工:1:N 定義關(guān)系為Relationship_staff_bank
員工和員工:1:N 定義關(guān)系為 Relationship_lead
三、概念模型(CDM)
根據(jù)sybase power designer畫(huà)出概念模型(CDM),如下圖所示:
四、物理模型(PDM)
根據(jù)概念模型轉(zhuǎn)化成物理模型(PDM),如下圖所示:
第三篇:數(shù)據(jù)庫(kù)實(shí)驗(yàn)報(bào)告
實(shí)驗(yàn)4SQL高級(jí)應(yīng)用
【實(shí)驗(yàn)?zāi)康摹?/p>
1、掌握在SQL SERVER 2005下進(jìn)行數(shù)據(jù)還原的方法。
2、掌握SQL語(yǔ)句的查詢(xún)統(tǒng)計(jì)功能和數(shù)據(jù)更改功能。
【實(shí)驗(yàn)內(nèi)容】
1.還原factory數(shù)據(jù)庫(kù)。
2.在factory數(shù)據(jù)庫(kù)上,完成如下各題。
(1)刪除factory數(shù)據(jù)庫(kù)上各個(gè)表之間建立的關(guān)系。(2)*顯示各職工的工資記錄和相應(yīng)的工資小計(jì)。
(3)*按性別和部門(mén)名的所有組合方式列出相應(yīng)的平均工資。
(4)在worker表中使用以下語(yǔ)句插入一個(gè)職工記錄。職工號(hào):20;姓名:陳立;性別:女;出生日期:55/03/08;黨員否: 1;參加工作:75/10/10;部門(mén)號(hào):4。
在depart表中使用以下語(yǔ)句插入一個(gè)部門(mén)記錄。部門(mén)號(hào):5;部門(mén)名:設(shè)備處。對(duì)worker和depart表進(jìn)行全外連接顯示職工的職工號(hào)、姓名和部門(mén)名,然后刪除這兩個(gè)插入的記錄。
(5)顯示最高工資的職工的職工號(hào)、姓名、部門(mén)名、工資發(fā)放日期和工資。(6)顯示最高工資的職工所在的部門(mén)名。
(7)顯示所有平均工資低于全部職工平均工資的職工的職工號(hào)和姓名。(8)*采用游標(biāo)方式實(shí)現(xiàn)(6)小題的功能。(9)*采用游標(biāo)方式實(shí)現(xiàn)(7)小題的功能。
(10)*先顯示worker表中的職工人數(shù),開(kāi)始一個(gè)事務(wù),插入一個(gè)職工記錄,再顯示worker表中的職工人數(shù),回滾該事務(wù),最后顯示worker表中的職工人數(shù)。
【實(shí)驗(yàn)報(bào)告要求】
1.第(1)寫(xiě)出操作步驟。
2.其他各題寫(xiě)出實(shí)現(xiàn)要求的命令/程序,并列出執(zhí)行結(jié)果。
【操作步驟】
1.還原factory數(shù)據(jù)庫(kù)。
2.在factory基礎(chǔ)上,有
(1)刪除factory數(shù)據(jù)庫(kù)上各個(gè)表之間建立的關(guān)系。
(2)*顯示各職工的工資記錄和相應(yīng)的工資小計(jì)。
Select 職工號(hào),姓名,工資from salary Order by 職工號(hào)
Compute sum(工資)by 職工號(hào)
(3)*按性別和部門(mén)名的所有組合方式列出相應(yīng)的平均工資。
select worker.職工號(hào),worker.性別,depart.部門(mén)名,avg(工資)as'平均工資' from worker inner join depart on worker.部門(mén)號(hào)=depart.部門(mén)號(hào) inner join salary on worker.職工號(hào)=salary.職工號(hào)
group by worker.職工號(hào),worker.性別,depart.部門(mén)名
order by worker.職工號(hào)
(4)在worker表中使用以下語(yǔ)句插入一個(gè)職工記錄。職工號(hào):20;姓名:陳立;性別:女;出生日期:55/03/08;黨員否: 1;參加工作:75/10/10;部門(mén)號(hào):4。
insert into worker values('20','陳立','女','1955-03-08','1','1975-10-10',4)
在depart表中使用以下語(yǔ)句插入一個(gè)部門(mén)記錄。部門(mén)號(hào):5;部門(mén)名:設(shè)備處。
Insert into depart Values('5','設(shè)備處')對(duì)worker和depart表進(jìn)行全外連接顯示職工的職工號(hào)、姓名和部門(mén)名,然后刪除這兩個(gè)插入的記錄。
use factory Select b.部門(mén)號(hào),c.姓名
from salary a,departb,worker c delete from worker where 職工號(hào)=20 delete from depart where 部門(mén)號(hào)=5(5)顯示最高工資的職工的職工號(hào)、姓名、部門(mén)名、工資發(fā)放日期和工資。
Use factory Select b.部門(mén)名,c.職工號(hào),c.姓名,b.部門(mén)名,a.日期,a.工資 from salary a,departb,worker c Where 工資in(select max(a.工資)from salary a)and a.職工號(hào)=c.職工號(hào)and b.部門(mén)號(hào)=c.部門(mén)號(hào)(6)顯示最高工資的職工所在的部門(mén)名。
Use factory Select b.部門(mén)名from salary a,departb,worker c Where 工資in(select max(a.工資)from salary a)and c.部門(mén)號(hào)=b.部門(mén)號(hào)and a.職工號(hào)=c.職工號(hào)
(7)顯示所有平均工資低于全部職工平均工資的職工的職工號(hào)和姓名。
Use factory Select a.職工號(hào),a.姓名,avg(b.工資)as平均工資from worker a,salary b where a.職工號(hào)=b.職工號(hào) group by a.職工號(hào),a.姓名
having avg(工資)<(select avg(工資)from salary)
第四篇:數(shù)據(jù)庫(kù)實(shí)驗(yàn)報(bào)告
南華大學(xué)
計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院
實(shí)驗(yàn)報(bào)告
(2013 ~2014 學(xué)
第二學(xué)期)
課程名稱(chēng) 實(shí)驗(yàn)名稱(chēng)
數(shù)據(jù)庫(kù)原理與技術(shù)
姓名 張濤 學(xué)號(hào) 20124350230
專(zhuān)業(yè) 軟件工程
班級(jí) 02班
地點(diǎn)
教師 劉征海 實(shí)驗(yàn)1 認(rèn)識(shí)DBMS 一.實(shí)驗(yàn)題目
認(rèn)識(shí)DBMS 二.實(shí)驗(yàn)要求
1.利用管理工具創(chuàng)建數(shù)據(jù)庫(kù)、表和表間關(guān)系。
實(shí)驗(yàn)?zāi)康暮妥⒁馐马?xiàng) 基本操作,進(jìn)一步理解數(shù) 據(jù)庫(kù)、表、表間關(guān)系的概念。
注意事項(xiàng):創(chuàng)建數(shù)據(jù)庫(kù)和數(shù)據(jù)表時(shí)應(yīng)認(rèn)真,如果出現(xiàn)錯(cuò)誤,應(yīng)相應(yīng)地修改結(jié)構(gòu)或刪除。三.實(shí)驗(yàn)代碼(內(nèi)容)
(1)利用SQL Server Management Studio 創(chuàng)建數(shù)據(jù)庫(kù),名稱(chēng)為【學(xué)生選課
YYXXXX】。其中YY為專(zhuān)業(yè)代號(hào),計(jì)算機(jī)為JS,軟件工程為RJ,網(wǎng)絡(luò)為WL,數(shù)媒為
SM;XXXX為各位同學(xué)的學(xué)號(hào)中的最后四位 實(shí)驗(yàn)?zāi)康模菏煜QL Server Management Studio
(2)在【學(xué)生選課YYXXXX】中建立數(shù)據(jù)表,表的定義如下所示。
學(xué)生YYXXXX(學(xué)號(hào),姓名,性別,出生日期,院系名稱(chēng),備注);
課程YYXXXX(課程號(hào),課程名,先行課,學(xué)分); 選修YYXXXX(學(xué)號(hào),課程號(hào),分?jǐn)?shù))。
要求定義每張表的主碼,為屬性選擇合適的數(shù)據(jù)類(lèi)型,決定是否允許為空,為【性別】和【學(xué)分】屬性定義默認(rèn)值。
(3)定義表之間的關(guān)系。
(4)分別為表錄入幾行數(shù)據(jù)記錄,同時(shí)練習(xí)數(shù)據(jù)的修改和刪除操作
2.利用SQL 語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù)、表和表間關(guān)系 實(shí)驗(yàn)?zāi)康暮妥⒁馐马?xiàng)
實(shí)驗(yàn)?zāi)康模菏煜?chuàng)建數(shù)據(jù)庫(kù)和數(shù)據(jù)表的SQL 語(yǔ)句。
注意事項(xiàng):輸入SQL 語(yǔ)句時(shí)應(yīng)注意,語(yǔ)句中均使用西文操作符號(hào)。
實(shí)驗(yàn)內(nèi)容
在SQL Server Management Studio 中新建查詢(xún),實(shí)現(xiàn)以下操作。(1)用SQL 語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù),名稱(chēng)為“StudentCourseYYXXXX”。其中YYXXXX 為各位同學(xué)的學(xué)號(hào)中的最后四位。
(2)用SQL 語(yǔ)句創(chuàng)建StudentCourseYYXXXX 中的3 張表,同時(shí)指定主碼、外 碼、默認(rèn)值等。
(3)直接在表數(shù)據(jù)窗口中錄入表數(shù)據(jù)記錄。
實(shí)驗(yàn) 2 交互式 SQL(1)
一、數(shù)據(jù)庫(kù)單表查詢(xún) 實(shí)驗(yàn)?zāi)康暮妥⒁馐马?xiàng)
實(shí)驗(yàn)?zāi)康模赫莆諉伪聿樵?xún)SELECT、FROM、WHERE 的用法,特別要掌握比較運(yùn) 算符、邏輯運(yùn)算符的使用。注意事項(xiàng):子句WHERE<條件>表示元組篩選條件;子句HAVING<條件>表示元
組選擇條件;子句HAVING<條件>必須和GROUP BY 子句配合使用;注意輸入SQL語(yǔ)句時(shí)均應(yīng)使用西文操作符號(hào)。實(shí)驗(yàn)內(nèi)容
(1)創(chuàng)建查詢(xún)窗口,設(shè)置查詢(xún)環(huán)境。(2)單表查詢(xún) 實(shí)驗(yàn)步驟
(1)選擇要查詢(xún)的數(shù)據(jù)庫(kù),右擊【新建查詢(xún)】,或者選擇系統(tǒng)菜單中的【文
件】|【新建】|【使用當(dāng)前連接查詢(xún)】命令,或者單擊標(biāo)準(zhǔn)工具欄中的【新建查
詢(xún)】按鈕,即可新建一個(gè)查詢(xún)窗口。如果查詢(xún)數(shù)據(jù)庫(kù)不是StudentCourseYYXXXX,則可在可用數(shù)據(jù)庫(kù)下拉列表中進(jìn)行選擇,或用USE 語(yǔ)句調(diào)用。
(2)在查詢(xún)窗口中輸入SELECT 查詢(xún)語(yǔ)句,對(duì)StudentCourseYYXXXX 數(shù)據(jù)庫(kù) 進(jìn)行查詢(xún)操作。
① 查詢(xún)計(jì)算機(jī)系全體學(xué)生的信息
② 查詢(xún)姓“李”的學(xué)生的學(xué)號(hào)和姓名。
③ 查詢(xún)課程表中先行課為空的課程名。
④ 查詢(xún)考試成績(jī)有不及格的學(xué)生的學(xué)號(hào)。
⑤ 求選修了C1 課程或C2 課程的學(xué)生的學(xué)號(hào)及成績(jī)。
⑥ 查詢(xún)?nèi)w計(jì)算機(jī)系學(xué)生的姓名及其年齡。
⑦ 查詢(xún)計(jì)算機(jī)系在1986-1987 年之間出生的學(xué)生的姓名。
⑧ 查詢(xún)姓“李”的前兩個(gè)學(xué)生的學(xué)號(hào)和姓名。
⑨ 查詢(xún)選修了兩門(mén)以上課程的學(xué)生學(xué)號(hào)與課程數(shù)。
⑩ 查詢(xún)選修課程數(shù)大于等于2 的學(xué)生的學(xué)號(hào)、平均成績(jī)和選課門(mén)數(shù),并按平均成績(jī)降序排列。
二、數(shù)據(jù)庫(kù)多表連接查詢(xún) 實(shí)驗(yàn)?zāi)康暮妥⒁馐马?xiàng)
實(shí)驗(yàn)?zāi)康模豪斫舛啾聿樵?xún)的概念;掌握多表查詢(xún)的SELECT、FROM、WHERE、JOIN子句的用法,特別要求比較內(nèi)連接、外連接的結(jié)果。
注意事項(xiàng):內(nèi)連接、左外連接和右外連接的含義及表達(dá)方法;注意輸入SQL 語(yǔ) 句時(shí)均應(yīng)使用西文操作符號(hào)。實(shí)驗(yàn)內(nèi)容
(1)創(chuàng)建查詢(xún)窗口,設(shè)置查詢(xún)環(huán)境。(2)多表復(fù)雜查詢(xún)。實(shí)驗(yàn)步驟
新建查詢(xún)窗口,選擇StudentCourseYYXXXX 為當(dāng)前數(shù)據(jù)庫(kù),輸入如下SELECT 查詢(xún)語(yǔ)句并執(zhí)行,對(duì)數(shù)據(jù)庫(kù)進(jìn)行多表連接查詢(xún)操作。(1)查詢(xún)選修了【數(shù)據(jù)庫(kù)原理】的計(jì)算機(jī)系的學(xué)生學(xué)號(hào)和姓名。
(2)查詢(xún)每一門(mén)課的間接先行課(即先行課的先行課)。
(3)查詢(xún)學(xué)生的學(xué)號(hào)、姓名、選修課程的名稱(chēng)和成績(jī)。
(4)查詢(xún)選修了課程的學(xué)生姓名。
(5)查詢(xún)所有學(xué)生的信息和所選修的課程。
(6)查詢(xún)已被選修的課程的情況和所有課程的名字。
(7)列出學(xué)生所有可能的選修情況。
(8)查找計(jì)算機(jī)系的學(xué)生選修課程數(shù)大于2 的學(xué)生的姓名、平均成績(jī)和選課 門(mén)數(shù),并按平均成績(jī)降序排列。
實(shí)驗(yàn) 3 交互式 SQL(2)數(shù)據(jù)庫(kù)嵌套查詢(xún)和組合查詢(xún) 實(shí)驗(yàn)?zāi)康暮妥⒁馐马?xiàng)
實(shí)驗(yàn)?zāi)康模赫莆詹樵?xún)中嵌套查詢(xún)和組合查詢(xún)的操作方法,進(jìn)一步加深對(duì) SELECT 語(yǔ)句的理解。
注意事項(xiàng):子句的使用;注意語(yǔ)句的層次嵌套關(guān)系和括號(hào)的配對(duì)使用問(wèn)題;
注意輸入SQL 語(yǔ)句時(shí)均應(yīng)使用西文操作符號(hào)。實(shí)驗(yàn)內(nèi)容(1)創(chuàng)建查詢(xún)窗口,設(shè)置查詢(xún)環(huán)境。(2)分組查詢(xún)。(3)統(tǒng)計(jì)查詢(xún)。(4)嵌套查詢(xún)。實(shí)驗(yàn)步驟
新建查詢(xún)窗口,選擇StudentCourseYYXXXX 為當(dāng)前數(shù)據(jù)庫(kù),輸入如下SELECT 查詢(xún)語(yǔ)句并執(zhí)行,對(duì)數(shù)據(jù)庫(kù)進(jìn)行嵌套查詢(xún)和組合查詢(xún)操作。
(1)統(tǒng)計(jì)選修了【數(shù)據(jù)庫(kù)原理】課程的學(xué)生人數(shù)。
(2)查詢(xún)沒(méi)有選修【數(shù)據(jù)庫(kù)原理】課程的學(xué)生信息。
(3)查詢(xún)其他系中比計(jì)算機(jī)系學(xué)生年齡都小的學(xué)生。
(4)查詢(xún)被0602001 學(xué)生或0602002 學(xué)生所選修的課程的課程號(hào)(用UNION 組合查詢(xún)與IN 條件查詢(xún)兩種方法實(shí)現(xiàn))。
(5)查詢(xún)0602001 學(xué)生和0602002 學(xué)生同時(shí)選修的課程的課程號(hào)(用
INTERSECT 組合查詢(xún)與EXISTS 嵌套子查詢(xún)兩種方法實(shí)現(xiàn))。
(6)查詢(xún)被0602001 學(xué)生選修,但沒(méi)有被0602002 學(xué)生所選修的課程的課程
號(hào)(用EXCEPT 組合查詢(xún)與NOT EXISTS 嵌套子查詢(xún)兩種方法實(shí)現(xiàn))。
實(shí)驗(yàn) 4 交互式 SQL(3)數(shù)據(jù)的更新 實(shí)驗(yàn)?zāi)康暮妥⒁馐马?xiàng)
實(shí)驗(yàn)?zāi)康模菏煜げ迦搿⑿薷暮蛣h除SQL 語(yǔ)句的用法。注意事項(xiàng):對(duì)于INSERT 語(yǔ)句,要求理解默認(rèn)值約束、空值約束在插入時(shí)所 起的作用。實(shí)驗(yàn)內(nèi)容
(1)使用INSERT 語(yǔ)句在數(shù)據(jù)庫(kù)的表中插入幾行記錄。(2)使用UPDATA 語(yǔ)句修改某個(gè)數(shù)據(jù)。(3)使用DELETE 語(yǔ)句刪除某行記錄。實(shí)驗(yàn)步驟
(1)新建查詢(xún)窗口,選擇StudentCourseYYXXXX 為當(dāng)前數(shù)據(jù)庫(kù)。
(2)在已建立StudentCourseYYXXXX 數(shù)據(jù)庫(kù)和StudentsYYXXXX、CoursesYYXXXX、SCYYXXXX 3 個(gè)表的基礎(chǔ)上,向StudentCourseYYXXXX數(shù)據(jù)庫(kù)中 的表更新數(shù)據(jù)。
① 向表StudentsYYXXXX 中插入(0601001,趙林, 男,1985-09-08,計(jì)算機(jī))的記錄。
② 向SCYYXXXX 表中添加一個(gè)學(xué)生的選課記錄,學(xué)號(hào)為0601001,所選的課
程號(hào)為C2。SC表中有Sno、Cno、Grade 這3 個(gè)列。這里只知道學(xué)號(hào)和課程號(hào),不知道成績(jī)值。
③ 向表StudentsYYXXXX 中插入(0601002,張修雨,default)記錄,該記錄 的數(shù)據(jù)中default 表示默認(rèn)值‘男’,其他數(shù)據(jù)表示空值。
④ 用CREATE 語(yǔ)句建立表StudentBAK1YYXXXX,包含(與Students 的Sno、Sname、Sdept 相同)3 個(gè)字段,然后用INSERT SELECT 語(yǔ)句實(shí)現(xiàn)向
StudentBAK1YYXXXX 添加StudentsYYXXXX 表中的計(jì)算機(jī)系學(xué)生的學(xué)號(hào)、姓名、所在系的信息。
⑤ 用 SELECT...INTO 語(yǔ)句實(shí)現(xiàn)把StudentsYYXXXX 表中1986 年后(包含
1986 年)出生的學(xué)生的學(xué)號(hào)、姓名存儲(chǔ)到一個(gè)新表StudentBAK2YYXXXX。
⑥ 將姓名為【趙林】的同學(xué)的所在系改為【機(jī)電系】,愛(ài)好改為【足球】。
⑦ 將選修了課程名為【數(shù)據(jù)庫(kù)原理】的學(xué)生成績(jī)加5 分。⑧ 將StudentCourseYYXXXX
數(shù)據(jù)庫(kù)的StudentBAK1YYXXXX 表中所有姓趙的 同學(xué)刪除。
⑨ 刪除計(jì)算機(jī)系選修成績(jī)不及格的學(xué)生選修記錄。⑩ 將除。StudentCourseYYXXXX
數(shù)據(jù)庫(kù)的StudentBAK2YYXXXX 表中的所有行刪
四.實(shí)驗(yàn)總結(jié)
實(shí)驗(yàn)一要注意創(chuàng)建數(shù)據(jù)庫(kù)和數(shù)據(jù)表時(shí)應(yīng)認(rèn)真,如果出現(xiàn)錯(cuò)誤,應(yīng)相應(yīng)地修改結(jié)構(gòu)或刪除。輸入SQL 語(yǔ)句時(shí)應(yīng)注意,語(yǔ)句中均使用西文操作符號(hào);實(shí)驗(yàn)二應(yīng)注意注意group和having以及where的搭配使用的情況;實(shí)驗(yàn)三注意注意輸入SQL 語(yǔ)句時(shí)均應(yīng)使用西文操作符號(hào),子句的使用,注意語(yǔ)句的層次嵌套關(guān)系和括號(hào)的配對(duì)使用問(wèn)題;實(shí)驗(yàn)四注意輸入SQL 語(yǔ)句時(shí)均應(yīng)使用西文操作符號(hào),對(duì)于INSERT 語(yǔ)句,要求理解默認(rèn)值約束、空值約束在插入時(shí)所起的作用。注意插入,修改,新建表,刪除語(yǔ)句的寫(xiě)法,并且掌握把原表中的數(shù)據(jù)轉(zhuǎn)存到新表中的語(yǔ)句寫(xiě)法。
第五篇:數(shù)據(jù)庫(kù)實(shí)驗(yàn)報(bào)告
10包三 李雅 100910306
實(shí)驗(yàn)報(bào)告
一、實(shí)驗(yàn)題目:
數(shù)據(jù)庫(kù)基本操作實(shí)驗(yàn)
二、實(shí)驗(yàn)?zāi)康模?/p>
掌握數(shù)據(jù)庫(kù)的建立、表的設(shè)計(jì)基本方法,通過(guò)實(shí)際操作熟練掌握數(shù)據(jù)庫(kù)的基本操作——數(shù)據(jù)的輸入與導(dǎo)入,表的設(shè)計(jì)。
三、實(shí)驗(yàn)內(nèi)容:
建立課程管理數(shù)據(jù)庫(kù),要求:
1.輸入老師、開(kāi)設(shè)課程、選課表、學(xué)生基本數(shù)據(jù)等,并輸入一些學(xué)生不同課程的考試成績(jī)。
2.建立查詢(xún)表,分別是成績(jī)查詢(xún)、學(xué)分查詢(xún)、不及格學(xué)生查詢(xún)。
3.建立窗體,分別顯示不及格學(xué)生的姓名、課程名稱(chēng)、成績(jī)和班級(jí)ID。在成績(jī)查詢(xún)中顯示學(xué)生姓名及各科成績(jī)。在教師基本信息中顯示編號(hào)、職稱(chēng)、工資、院系、等。同時(shí)建立開(kāi)設(shè)課程表和學(xué)生基本信息的窗體查詢(xún)。提供用戶一個(gè)簡(jiǎn)單的應(yīng)用程序界面,方便用戶操作使用。
4.制作報(bào)表。包括教師的授課報(bào)表,課程名稱(chēng)及課程類(lèi)別。學(xué)生的總成績(jī)報(bào)表,包括課程名稱(chēng)、成績(jī)和學(xué)分。
注:課程及考試成績(jī)可以任意輸入。選課按照班級(jí)確定。
四、實(shí)驗(yàn)過(guò)程:
1、數(shù)據(jù)庫(kù)表設(shè)計(jì)
在表格內(nèi)填入教師基本信息、開(kāi)始課程、課程基本信息、選課表、學(xué)生基本信息。
教師基本信息:
開(kāi)設(shè)課程:
/ 7
10包三 李雅 100910306
課程基本信息:
選課表:
/ 7
10包三 李雅 100910306
學(xué)生基本信息:
2、查詢(xún)表: 成績(jī)查詢(xún):
/ 7
10包三 李雅 100910306
學(xué)分查詢(xún):
不及格學(xué)生查詢(xún):
/ 7
10包三 李雅 100910306
3、窗體設(shè)計(jì): 不及格學(xué)生信息查詢(xún):
成績(jī)查詢(xún):
教師基本信息查詢(xún):
開(kāi)設(shè)課程信息查詢(xún):
/ 7
10包三 李雅 100910306
學(xué)生基本信息查詢(xún):
4、報(bào)表: 教師的授課報(bào)表:
/ 7
10包三 李雅 100910306
學(xué)生的總成績(jī):
/ 7