久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

數(shù)據(jù)庫實驗報告,(合集5篇)

時間:2020-11-09 12:42:04下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《數(shù)據(jù)庫實驗報告,》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《數(shù)據(jù)庫實驗報告,》。

第一篇:數(shù)據(jù)庫實驗報告,

《數(shù)據(jù)庫原理與技術(shù)》實驗報告

實驗一、數(shù)據(jù)定義及更新語句練習一、實驗內(nèi)容

建立如下 mySPJ 數(shù)據(jù)庫,包括S,P,J,與 SPJ 四個基本表(《數(shù)據(jù)庫系統(tǒng)概論》第二章習題 5 中得四個表),要求實現(xiàn)關(guān)系得三類完整性. S(SNO,SNAME,STATUS,CITY); P(PNO,PNAME,COLOR,WEIGHT); J(JNO,JNAME,CITY);SPJ(SNO,PNO,JNO,QTY); 二、完成情況

附上按照實驗內(nèi)容編寫得程序代碼。

(小四號字,宋體)三、實驗結(jié)果1、插入一條記錄

2、

①將 p 表中得所有紅色零件得重量增加 5.②將 spj 表中所有天津供應(yīng)商得 QTY 屬性值減少 10。用子查詢。

3、利用Delete 語句刪除 p 表中得所有紅色零件得記錄。

附上各個步驟所用得實驗用例與結(jié)果顯示(小四號字,宋體)

四、問題與解決

(小四號字 , 宋體)1

.實驗中遇到得問題及解決過程

.實驗中產(chǎn)生得錯誤及原因分析

首先寫出執(zhí)行語句不成功得時候系統(tǒng)報告得錯誤信息。然后分析錯誤原因 , 并給出解決辦法。

實驗二 簡單查詢與連接查詢 一、實驗內(nèi)容

(一)完成下面得簡單查詢:

①查詢所有“天津”得供應(yīng)商明細;②查詢所有“紅色"得 14 公斤以上得零件。

③查詢工程名稱中含有“廠”字得工程明細。

(二)完成下面得連接查詢: ①等值連接:求 s 表與 j 表得相同城市得等值連接。

②自然連接:查詢所有得供應(yīng)明細,要求顯示供應(yīng)商、零件與工程得名稱,并按照供應(yīng)、工程、零件排序。

③笛卡爾積:求 s 與p表得笛卡爾積.④左連接:求 j 表與 spj 表得左連接。

⑤右連接:求spj 表與j表得右連接。

二、完成情況

(一)完成下面得簡單查詢:

①查詢所有“天津”得供應(yīng)商明細;

②查詢所有“紅色“得 14 公斤以上得零件。

③查詢工程名稱中含有“廠”字得工程明細。

(二)完成下面得連接查詢:

①等值連接:求 s 表與 j 表得相同城市得等值連接.②自然連接:查詢所有得供應(yīng)明細,要求顯示供應(yīng)商、零件與工程得名稱,并按照供應(yīng)、工程、零件排序。

③笛卡爾積:求 s 與 p 表得笛卡爾積。

④左連接:求 j 表與 spj 表得左連接。

⑤右連接:求 spj表與 j 表得右連接。

附上按照實驗內(nèi)容編寫得程序代碼。

(小四號字 , 宋體)三、實驗結(jié)果

附上各個步驟所用得實驗用例與結(jié)果顯示(小四號字,宋體)

四、問題與解決

(小四號字 , 宋體)1

。實驗中遇到得問題及解決過程

2。實驗中產(chǎn)生得錯誤及原因分析

首先寫出執(zhí)行語句不成功得時候系統(tǒng)報告得錯誤信息。然后分析錯誤原因 , 并給出解決辦法。

實驗三 分組查詢與嵌套查詢 一、實驗內(nèi)容

(一)分組查詢: 1、求各種顏色零件得平均重量。

2、求北京供應(yīng)商與天津供應(yīng)商得總個數(shù)。

3、求各供應(yīng)商供應(yīng)得零件總數(shù)。

4、求各供應(yīng)商供應(yīng)給各工程得零件總數(shù)。

5、求使用了 100個以上 P1 零件得工程名稱。

6、求各工程使用得各城市供應(yīng)得零件總數(shù).

(二)嵌套查詢:

1、in 連接謂詞查詢: ① 查詢沒有使用天津供應(yīng)商供應(yīng)得紅色零件得工程名稱。

② 查詢供應(yīng)了 1000 個以上零件得供應(yīng)商名稱。(having)2、比較運算符:求重量大于所有零件平均重量得零件名稱。

3、Exists 連接謂詞: ① 查詢供應(yīng) J1 得所有得零件都就是紅色得供應(yīng)商名稱. ② 至少用了供應(yīng)商S1 所供應(yīng)得全部零件得工程號 JNO. 二、完成情況

(一)分組查詢:

1、求各種顏色零件得平均重量.

2、求北京供應(yīng)商與天津供應(yīng)商得總個數(shù)。

3、求各供應(yīng)商供應(yīng)得零件總數(shù)。

4、求各供應(yīng)商供應(yīng)給各工程得零件總數(shù)。

5、求使用了100 個以上 P1 零件得工程名稱。

6、求各工程使用得各城市供應(yīng)得零件總數(shù)。

(二)嵌套查詢:

1、in 連接謂詞查詢: ① 查詢沒有使用天津供應(yīng)商供應(yīng)得紅色零件得工程名稱。

② 查詢供應(yīng)了 1000 個以上零件得供應(yīng)商名稱。(having)

SELECT SNAME FROM S WHERE SNO IN(SELECT SNO FROM SPJ GROUP BY SNO

HAVING SUM(QTY)〉=1000)

2、比較運算符:求重量大于所有零件平均重量得零件名稱.

3、Exists連接謂詞: ① 查詢供應(yīng) J1 得所有得零件都就是紅色得供應(yīng)商名稱。

② 至少用了供應(yīng)商 S1 所供應(yīng)得全部零件得工程號 JNO.附上按照實驗內(nèi)容編寫得程序代碼。

(小四號字 , 宋體)三、實驗結(jié)果

附上各個步驟所用得實驗用例與結(jié)果顯示(小四號字,宋體)四、問題與解決

1、在選擇數(shù)據(jù)類型時,沒有選擇正確得數(shù)據(jù)類型,導致含有 SUM 得語句不能執(zhí)行。

(小四號字 , 宋體)1

。實驗中遇到得問題及解決過程

2.實驗中產(chǎn)生得錯誤及原因分析

首先寫出執(zhí)行語句不成功得時候系統(tǒng)報告得錯誤信息。然后分析錯誤原因 , 并給出解決辦法。

實驗成績

評價項目 評分等級 獨立完成完整得實驗內(nèi)容,結(jié)果完全正確,報告內(nèi)容完整,排版整潔美觀,能真實體現(xiàn)實際操作過程及遇到得問題。

A 完成實驗,實驗內(nèi)容較為完整,結(jié)果正確,報告內(nèi)容較為完整,排版較為整潔美觀,能體現(xiàn)實際操作過程及遇到得問題。

B B 基本完成實驗,結(jié)果正確,報告內(nèi)容欠缺,排版較為整潔美觀,能體現(xiàn)實際操作過程及遇到得問題。

C C 不能獨立完成完整得實驗內(nèi)容,結(jié)果不真實,報告內(nèi)容欠缺,排版欠整潔美觀,不能體現(xiàn)實際操作過程及遇到得問題。

D

第二篇:數(shù)據(jù)庫實驗報告

實驗一 PowerDesigner 的 CDM 應(yīng)用

1:實驗目的

使用PowerDesinger進行數(shù)據(jù)庫概念模型設(shè)計,掌握CDM中的實體、實體屬性、實體與實體之間聯(lián)系的操作方法。2:實驗內(nèi)容

建立一個“實驗一練習”命名的Conceptual Data Model(CDM)文件,其中應(yīng)包括的實體、實體的屬性及實體之間的聯(lián)系。3:實驗結(jié)果

4.實驗心得

初次接觸數(shù)據(jù)庫原理實驗,相對來說還是比較陌生,但老師講解還相對比較清楚,并且實驗報告寫的十分清楚,只是遇到多建立了一個實體而無法刪除的問題,通過同學的幫助也解決了,相對來說第一次實驗還是比較順利的。

實驗二 PowerDesigner 的 PDM 應(yīng)用

1.實驗目的

用PowerDesinger的工具將CDM生成PDM過程,熟悉PDM工作區(qū),為生成數(shù)據(jù)庫中的物理的表打下基礎(chǔ)。完成這個實驗后,應(yīng)該能夠了解從CDM到PDM的轉(zhuǎn)換過程,熟悉PowerDesinger的PDM工作區(qū),使用工具選項板進行PDM對象設(shè)計。

2.實驗內(nèi)容

從CDM生成PDM,設(shè)計結(jié)束后,利用PowerDesigner的“生成數(shù)據(jù)庫”功能,產(chǎn)生數(shù)據(jù)庫中各數(shù)據(jù)對象的定義,再運行MySQL的命令行客戶端軟件,打開test數(shù)據(jù)庫,運行crebas.sql,同時進行中英文的轉(zhuǎn)換,最后運行show tables命令查看表。

3.實驗結(jié)果

4.實驗心得

經(jīng)過本次實驗,學會了用PowerDesinger的工具將CDM生成PDM過程,并且利用crebas.sql進行中英文的轉(zhuǎn)換,最后利用show tables命令查看表,受益匪淺。

實驗 三Navicat for MySQL的使用和SQL語言數(shù)據(jù)定義語言DDL 1.實驗目的

了解Navicat for MySQL的啟動,熟悉如何在Navicat for MySQL下配置數(shù)據(jù)庫聯(lián)接。了解DDL語言的CREATE、DROP、ALTER對表、索引、視圖的操作,學會在Navicat for MySQL中用DDL語言進行對表、索引、視圖的增加、刪除和改動 2.實驗內(nèi)容

1.啟動Navicat for MySQL。

2.在MySQL–新建連接中完成連接參數(shù)配置,并完成連接測試和保存連接參數(shù)。3.查看mysql數(shù)據(jù)庫的help_category表的定義、表中數(shù)據(jù)與索引、完整性約束等。4.查看mysql數(shù)據(jù)庫的其它數(shù)據(jù)庫對象,如視圖、索引、存儲過程、函數(shù)、觸發(fā)器。5.在Navicat for MySQL中打開查詢,新建查詢,運行簡單的SQL語句,如select * from help_keyword where help_keyword_id<=3;觀察下結(jié)果。3.實驗結(jié)果

4.實驗心得

使用navicat for MySQL連接數(shù)據(jù)庫的時候,不能正常連接到數(shù)據(jù)庫,出現(xiàn)“access denied for user’root@’localhost”的錯誤提示,經(jīng)過查找發(fā)現(xiàn)是MySQL沒有正確安裝,重裝之后就可以正常的訪問數(shù)據(jù)庫,在本次實驗中也學會了Navicat for MySQL的基礎(chǔ)的查詢使用以及簡單的SQL語句的運行。

實驗 四 SQL語言數(shù)據(jù)定義語言DDL 1:實驗目的

本次實驗了解SQL語言中DDL語言的CREATE、DROP、ALTER對表、索引、視圖的操作,掌握在Navicat for MySQL中用DDL語言進行對表、索引、視圖的增加、刪除和改動。掌握使用SQL語句增加或刪除約束,加深對完整性概念的理解,達到靈活應(yīng)用的目的。掌握使用SQL語句定義和刪除同義詞。2:實驗原理

在 Navicat for MySQL 中使用 CREATE 命令完成對表、索引、視圖、同義詞 的創(chuàng)建,使用 DROP 命令完成對表、索引、視圖、同義詞的刪除,使用 ALTER 命 令對表結(jié)構(gòu)進行修改及完整性約束的增加、刪除。

3:實驗代碼及結(jié)果 相應(yīng)SQL語句為:

CREATE TABLE NewTable(studentid varchar(10)NOT NULL , name varchar(20)NOT NULL , sex varchar(2)NOT NULL , age integer NOT NULL , Fee decimal(10,2)NULL , address varchar(50)NULL , memo varchar(300)NULL , PRIMARY KEY(studentid));

截圖如下:

3.用Create Table語句建表CourseAa,相應(yīng)的SQL語句為: CREATE TABLE CourseAa(Aa1 Varchar(20), Aa2 INTEGER, Aa3 decimal(10)); 截圖如下:

5.用Create Table語句建表ChooseBb 相應(yīng)的SQL語句如下: CREATE TABLE ChooseBb(Bb1 VARCHAR(30), Bb2 INTEGER, Bb3 DECIMAL(6));

6.用Drop Table語句刪除表CourseAa,相應(yīng)的SQL語句如下: Drop table CourdeAa;

7.用Alter Table語句更新表ChooseBb,添加一個屬性名Bb4,類型Varchar,長度20,完整性約束設(shè)為非空值,缺省值設(shè)為字符“系統(tǒng)測試值”,相應(yīng)的SQL語句如下: ALTER TABLE choosebb ADD Bb4 VARCHAR(30)NOT NULL;

8.用Alter Table語句更新表ChooseBb,添加一個屬性名Bb5,類型Varchar, 長度10,完整性約束設(shè)為主碼。完成后,表ChooseBb的設(shè)計如下所示。相應(yīng)的SQL語句如下:

ALTER TABLE choosebb ADD Bb5 VARCHAR(30)PRIMARY KEY;

9.用Create View語句建立一個視圖View_Choosebb,生成的視圖屬性名(View_bb1,View_bb2,view_bb3), 其中View_bb1對應(yīng)于基表ChooseBb的Bb1、View_bb2對應(yīng)于基表ChooseBb的Bb4、view_bb3對應(yīng)于基表ChooseBb的Bb5。完成后,視圖View_Choosebb的設(shè)計如下所示。

相應(yīng)的SQL語句如下:

CREATE VIEW View_Choosebb AS SELECT Bb4 AS View_bb1,View_bb2 FROM chooseBb;CREATE VIEW View_Choosebb AS SELECT Bb5 AS View_bb3 FROM chooseBb;10.用Drop View語句刪除視圖View_Choosebb。相應(yīng)的SQL語句如下: DROP VIEW View_choosebb;11.用Create Index語句對表ChooseBb的Bb2屬性建立一個升序索引,索引名Index_bb2。用Create Index語句對表ChooseBb的Bb4屬性建立一個降序索引,索引名Index_bb4。相應(yīng)的SQL語句如下:

CREATE INDEX Index_bb2 ON ChooseBb(Bb4 DESC);12.用Drop Index語句刪除索引Index_bb2。相應(yīng)的SQL語句如下:

DROP INDEX Index_bb2 ON ChooseBb;

4:實驗中遇到的問題及心得體會

1、用Drop Table語句刪除表CourseAa的時候,在SQL瀏覽框中輸入語句并運行,發(fā)現(xiàn)左邊項目欄中還是有CourseAa表的存在,但是確打不開CourseAa表,弄了很長時間,也不知道是什么情況,最后嘗試刷新頁面之后,發(fā)現(xiàn)語句運行正確,CourseAa表成功刪除。

2、由于理論課時查詢語言之學到了表的查詢,到后面實驗中涉及視圖的建立及查詢,也不清楚是怎么回事,而且由于對查詢語句的不熟悉,實驗過程中進行緩慢,視圖的部分是課下看書慢慢寫的,沒有截圖。

通過這次實驗,初步了解了SQL語言中DDL語言的CREATE、DROP、ALTER對表、索引、視圖的操作,掌握在Navicat for MySQL中用DDL語言進行對表、索引、視圖的增加、刪除和改動。掌握使用SQL語句增加或刪除約束。因為實驗過程中對這些語句的不熟悉耽誤課很長時間,還需課下多下工夫多看、多寫。

實驗五

SQL語言數(shù)據(jù)操縱語言DML

1:實驗目的

SQL 語言的數(shù)據(jù)操縱功能通過 DML(數(shù)據(jù)維護語言)實現(xiàn)。DML 包括數(shù)據(jù)查詢 和數(shù)據(jù)更新兩種數(shù)據(jù)操縱語句。其中,數(shù)據(jù)查詢指對數(shù)據(jù)庫中的數(shù)據(jù)查詢、統(tǒng)計、分組、排序等操作;數(shù)據(jù)更新指數(shù)據(jù)的插入、更新和刪除等數(shù)據(jù)維護操作。

本次實驗了解 DML 語言的 INSERT、UPDATE、DELETE 等數(shù)據(jù)維護語言,掌握 在 Navicat for MySQL 中用 DML 語言的 INSERT、UPDATE、DELETE 對表進行數(shù)據(jù) 插入、更新和刪除。

2實驗內(nèi)容

在 Navicat for MySQL 中使用 INSERT 語句向表中插入數(shù)據(jù)。使用 UPDATE 語句更新(修改)表中已有數(shù)據(jù)。使用 DELETE 語句刪除表中數(shù)據(jù)。

3:實驗代碼及結(jié)果

1、用Create Table語句建立test表,其語句和截圖如下所示; CREATE TABLE `NewTable`(`Name` varchar(20)NOT NULL , `Age` integer NULL , `Score` numeric(10,2)NOT NULL , `Address` varchar(60)NULL);

2、繼續(xù)用Create Table語句建立test_temp表,其語句同1。

3、用INSERT語句對表test_temp,插入如實驗報告中的三條記錄,其插入語句和截圖如下: INSERT INTO test_temp

VALUES('鄭七',21,'490.50','重郵宿舍11-2-1');INSERT INTO test_temp

VALUES('張八',20,'560.00','南福苑3-3-3');INSERT INTO test_temp

VALUES('王九',10,'515.00','學生新區(qū)19-7-1');

4、用INSERT INTO…SELECT…FROM語句,將test_temp表中的數(shù)據(jù),插入到test中,其語句及其截圖如下: INSERT INTO test

SELECT * FROM test_temp;

5、用UPDATE語句將test表中年齡小于20的數(shù)據(jù),將其成績更新為原來的成績加5分,其語句和截圖如下:

UPDATE test SET Score=Score+5 WHERE Age<=20;

6用UPDATE語句將test表中居住在南福苑所有的學生年齡減少1歲,其語句和截圖如下:、UPDATE test SET Age=Age-1 WHERE Address Like '南福苑%';

7、用DELETE語句將test表中年齡大于等于21 并且成績大于等于500的學生數(shù)據(jù)刪除,其語句和截圖如下: DELETE FROM test

WHERE Score<=500 AND Age>=21;

8、用DELETE語句將test表中成績小于550并且居住在重郵宿舍的學生數(shù)據(jù)刪除,其語句和截圖如下:

DELETE FROM test WHERE Score<=550 AND Address LIke'重郵宿舍%';

4實驗心得

這次實驗從實驗原理還是實驗操作來說還是相對簡單的,但越是對簡單的是就越容易犯迷糊,這次件表命名給了我很多啟示,以后對細節(jié)還是要十分注意的。

實驗六 SQL語言數(shù)據(jù)查詢語言DQL

1:實驗目的

本次實驗了解 SQL 語言的 SELECT 語句對數(shù)據(jù)的查詢,學會在 Navicat for MySQL 中用 SELECT 語句對表中的數(shù)據(jù)進行簡單查詢、連接查詢、嵌套查詢和組 合查詢。2:實驗原理

在 Navicat for MySQL 中使用 SELECT 語句從表中查詢數(shù)據(jù)、統(tǒng)計數(shù)據(jù)及對 數(shù)據(jù)進行分組和排序等操作。3:實驗代碼及結(jié)果

1.用 Create Table 建立 Student 表:

2.用 Create Table 建立 Course 表:

3.用 Create Table 建立 Choose 表:

4.用 INSERT 語句向 Student 表中插入 3 個元組:

5.用 INSERT 語句向 Course 表中插入 3 個元組:

6.用 INSERT 語句向 Choose 表中插入 7 個元組:

7.用 SELECT 語句,查詢計算機學院學生的學號和姓名。

8.用 SELECT 語句的 between?and?表示查詢條件,查詢年齡在 20~23 歲的學 生信息。

9.用 SELECT 語句的 COUNT()聚集函數(shù),統(tǒng)計 Student 表中學生總?cè)藬?shù)。

10.分別用 SELECT 語句的 max()、min()、sum()、avg()四個聚集函數(shù),計算 Choose 表中 C1 課程的最高分、最低分、總分、平均分。max():

Min():

Sum();

avg():

11.用 SELECT 語句對空值(NULL)的判斷條件,查詢 Course 表中先修課稱編號為 空值的課程編號和課程名稱。

12.用 SELECT 語句的連接查詢,查詢學生的學號、姓名、選修的課程名及成績。

13.用 SELECT 的存在量詞 EXISTS,查詢與“張三”在同一個學院學習的學生信 息。

14.用 SELECT 語句的嵌套查詢,查詢選修 C1 課程的成績低于“張三”的學生的 學號和成績。

15.用 SELECT 語句的組合查詢(UNION),查詢選修了 C1 課程或者選修了 C3 課程 的學生學號。

16.用 SELECT 語句的組合查詢(UNION)與 DISTINCT 短語,查詢選修了 C1 課程或 者選修了 C3 課程的學生學號,并取消重復的數(shù)據(jù)。

4.實驗心得

本次實驗室相對于前幾次來說比較困難的一次,因為語句剛學過,下去也沒有及時去練習,對于很多還是比較困難,在本次實驗中通過練習,讓我了解 SQL 語言的 SELECT 語句對數(shù)據(jù)的查詢,學會在 Navicat forMySQL 中用 SELECT 語句對表中的數(shù)據(jù)進行簡單查詢、連接查詢、嵌套查詢和組合查詢。課下時間也會多多練習SQl語句。

實驗七

MYSQL應(yīng)用開發(fā)環(huán)境的建立

1:實驗目的

通過在Windows平臺下,搭建Apache Httpd Web服務(wù)器,PHP腳本支持,訪問MySQL數(shù)據(jù)庫等,學習了解MySQL應(yīng)用開發(fā)環(huán)境的建立過程。本次實驗通過安裝Apache HTTD Server 2.2、PHP 5.3.28,配置httpd.conf和PHP.ini文件,完成MySQL的PHP應(yīng)用開發(fā)環(huán)境的建立。2:實驗內(nèi)容

1、按照實驗指導安裝Apache http Server。成功后,截圖如下:

2、配置Apache服務(wù)器支持PHP文件解析,截圖如下:

3、實驗測試成功,截圖如下:

3:遇到的問題及解決 配置PHP擴展支持MySQL數(shù)據(jù)庫。用記事本打開php5.3.28之下的php.ini文件,把;extension=php_mysql.dll去掉。只是去掉了extension=php_mysql.dll,而,而沒有其前面的分號去掉就保存了文件。

4:實驗心得

通過在 Windows平臺下,搭建 Apache Httpd Web 服務(wù)器,PHP 腳本支持,訪問 MySQL 數(shù)據(jù)庫等,我學習了解 了MySQL 應(yīng)用開發(fā)環(huán)境的建立過程。學會了安裝 Apache HTTD Server 2.2、PHP 5.3.28,配置 httpd.conf和 PHP.ini 文件,完成 MySQL 的 PHP 應(yīng)用開發(fā)環(huán)境的建立。

實驗八 MySQL的存儲過程

1:實驗目的

存儲過程分為兩類:1.系統(tǒng)提供的存儲過程;2.用戶自定義存儲過程。

存儲過程具有的優(yōu)點:1.存儲過程允許標準組件式編程;2.存儲過程能夠?qū)?現(xiàn)較快的執(zhí)行速度;3.存儲過程能夠減少網(wǎng)絡(luò)流量;4.存儲過程可被作為一種安 全機制來充分利用。存儲過程是可復用的組件!想象一下如果你改變了主機的語 言,這對存儲過程不會產(chǎn)生影響,因為它是數(shù)據(jù)庫邏輯而不是應(yīng)用程序。存儲過 程是可以移植的!

本次實驗了解 MySQL 存儲過程的創(chuàng)建、修改和刪除的方法和步驟,掌握在 Navicat for MySQL中對存儲過程的進行創(chuàng)建、修改和刪除,掌握在MySQL Command Line Client 中調(diào)用帶參數(shù)和不帶參數(shù)的存儲過程。

2:實驗內(nèi)容

1、MySQL Command Line Client中創(chuàng)建存儲過程,按照實驗指導書創(chuàng)建第一、第二個存儲過程及其調(diào)用。

2、調(diào)用第三、第四個傳出參數(shù)的存儲過程:

3、創(chuàng)建存儲過程third_p(),顯示表cqupt中的數(shù)據(jù),并對其進行調(diào)用測試。

4、創(chuàng)建存儲過程simpleproc2(),對傳入?yún)?shù)進行乘以10的處理,變量定義@x,并對其進行調(diào)用測試。5.用Drop Procedure語句刪除存儲過程first_p。

3:實驗結(jié)果

4:心得體會

通過此次實驗,學會了在MySQL Command Line Client中創(chuàng)建存儲過程及其調(diào)用,并傳遞參數(shù)對其進行調(diào)用測試.實驗九MySQL的觸發(fā)器和SQL語言數(shù)據(jù)控制語言DCL 1:實驗目的

觸發(fā)器是特定事件出現(xiàn)的時候,自動執(zhí)行的代碼塊,類似于存儲過程。觸發(fā)器與存儲過程的區(qū)別在于:存儲過程是由用戶或應(yīng)用程序顯式調(diào)用的,而觸發(fā)器是不能被直接調(diào)用的,由DBMS自動執(zhí)行。觸發(fā)器具有這些功能:

1、允許/限制對表的修改;

2、自動生成派生列,比如自增字段;

3、強制數(shù)據(jù)一致性;

4、提供審計和日志記錄;

5、防止無效的事務(wù)處理;

6、啟用復雜的業(yè)務(wù)邏輯。

本次實驗了解MySQL觸發(fā)器的創(chuàng)建、修改和刪除的方法和步驟,掌握在Navicat for MySQL中對觸發(fā)器的進行創(chuàng)建、修改和刪除,掌握觸發(fā)器觸發(fā)測試的方法。2:實驗內(nèi)容

1、創(chuàng)建觸發(fā)器audit_student,該觸發(fā)器對修改student表的時間、用戶名記錄到日志表中。

2.執(zhí)行

五、教學過程中

(三)實驗內(nèi)容的第二部分改造簡單觸發(fā)器,增加觸發(fā)類型判斷功能,驗證觸發(fā)器的改造和改造后的觸發(fā)器觸發(fā)測試。3.自行編寫student表的觸發(fā)器aduit_student_update,在對student表進行更新操作前觸發(fā),觸發(fā)時,向student_log表寫入觸發(fā)用戶、觸發(fā)時間和觸發(fā)類型。并對該新建進行觸發(fā)測試。

4.自行編寫student表的觸發(fā)器aduit_student_delete,在對student表進行刪除操作后觸發(fā),觸發(fā)時,向student_log表寫入觸發(fā)用戶、觸發(fā)時間和觸發(fā)類型。并對該新建進行觸發(fā)測試。

3:實驗結(jié)果

①輸入如下語句,建立實驗表student,如圖所示: create table student(SNO varchar(10),SNAME varchar(30),Sage Int);

②輸入如下語句,建立日志表student_log,并查看日志表是否為空,如圖所示:

create table student_log(who varchar(30),whattimeTIMESTAMP);

select * from student_log;

③輸入如下語句,在student表上語句觸發(fā)器,如圖所示: use test;

Create trigger audit_student Beforeinsert On student For each row Begin Insert into student_log(Who,whattime)Values(current_user,current_timestamp);End;

建立④輸入如下語句對觸發(fā)器進行INSERT觸發(fā)測試,如圖所示: 對student表做一個INSERT操作:

Insert into student values('1992150033','吳思遠',40);

輸入如下語句查看表student_log,檢查觸發(fā)器工作結(jié)果,表student_log中數(shù)據(jù)如圖所示:

select * from student_log;

①輸入如下語句,修改日志表結(jié)構(gòu),增加一個屬性存放觸發(fā)語句類型。如圖所示: alter table student_log add(action varchar(20));

②修改觸發(fā)器,記錄觸發(fā)語句類型。選中student表,單擊右鍵,選擇設(shè)計表,點擊觸發(fā)器選項卡,在定義中對INSERT進行編輯,如圖所示:

select * from student_log

4:實驗心得

本次實驗讓我了解 MySQL 觸發(fā)器的創(chuàng)建、修改和刪除的方法和步驟,掌握在

Navicat for MySQL 中對觸發(fā)器進行創(chuàng)建、修改和刪除的步驟,掌握了觸發(fā)器觸發(fā)測試的方法。

實驗十SQL的數(shù)據(jù)控制通過DCL(數(shù)據(jù)控制語言)實現(xiàn)

1:實驗目的

DCL 通過對數(shù)據(jù)庫用戶的授 權(quán)和權(quán)限回收命令來實現(xiàn)有關(guān)數(shù)據(jù)的存取控制,以保證數(shù)據(jù)庫的安全性

本次實驗了解 DCL 語言的 GRANT 和 REVOKE 語句對數(shù)據(jù)庫存取權(quán)限的控制,學會在Navicat for MySQL中用GRANT、REVOKE語句對數(shù)據(jù)庫存取權(quán)限進行設(shè)定。

2:實驗內(nèi)容

1.登錄mysql,創(chuàng)建用戶jason,密碼為abc123,并授權(quán)該用戶完整訪問數(shù)據(jù)庫test。即執(zhí)行如下DCL語句:GRANT ALL ON test.* TO jason@“%”IDENTIFIED BY “abc123”;2.啟動另外一個Navicat for MySQL,在MySQL –新建連接中完成jason連接參數(shù)配置

3.對user表進行授予權(quán)限操作,并用select insert 進行測試 4.對user表進行收回權(quán)限操作,用select insert語句進行測試 3:實驗結(jié)果

GRANT ALL ON test.* TO jason@“%” IDENTIFIED BY “abc123”;GRANT SELECT on mysql.host to jason;

2、將數(shù)據(jù)庫 mysql 中表 host 的查詢權(quán)限從用戶 jason 回收

3.創(chuàng)建用戶jason,密碼為abc123,并授權(quán)該用戶完整訪問數(shù)據(jù)庫test。GRANT ALL ON test.* TO jason@“%” IDENTIFIED BY “abc123”;

4.啟動另外一個Navicat for MySQL,在MySQL –新建連接中完成jason連接參數(shù)配置。為了能查詢到相應(yīng)的數(shù)據(jù),我們必須進行授權(quán)操作。語句如下: Grant select on mysql.user to jason;

授權(quán)后,現(xiàn)在切換到Navicat for MySQL,執(zhí)行之前窗口中的查詢語句:

5、接下來,切換到MySQL的命令行客戶端,創(chuàng)建一個簡單的表,切換到Navicat for MySQL,新建一個查詢:

insert into mysql.dcltest(id,name)values(1,'張三豐');

6、切換到MySQL的命令行客戶端,執(zhí)行如下授權(quán)語句,進行INSERT權(quán)限的授予: Grant insert on mysql.user to jason;

輸入如下查詢語句:

Select * from mysql.dcltest;

權(quán)限授予后,root(數(shù)據(jù)庫超級用戶)可以進行權(quán)限的回收。

7、切換到Navicat for MySQL,新建一個查詢,執(zhí)行如下插入語句: insert into mysql.dcltest(id,name)values(2,'掃地僧');執(zhí)行如下權(quán)限回收語句:

Revoke insert on mysql.dcltest from jason;

新建一個查詢,執(zhí)行如下查詢語句: select * from mysql.dcltest;

Revoke select on mysql.dcltest from jason;

4:實驗心得

通過本次實驗,我了解DCL語言的GRANT和REVOKE語句對數(shù)據(jù)庫存取權(quán)限的控制,學會在Navicat for MySQL中用GRANT、REVOKE語句對數(shù)據(jù)庫存取權(quán)限進行設(shè)定。

實驗十一MySQL的事務(wù)與鎖

1:實驗目的

事務(wù)(Transaction)是MySQL數(shù)據(jù)庫系統(tǒng)中的一個邏輯工作單元,是完成一組數(shù)據(jù)庫操作的程序執(zhí)行單元;鎖(Lock)是MySQL數(shù)據(jù)庫系統(tǒng)中并發(fā)控制的常用方法.本次實驗了解MySQL事務(wù)的設(shè)置、提交和回退的方法和步驟,掌握MySQL Command Line Client中如何進行相關(guān)操作。了解MySQL的表鎖定與鎖定解除,掌握MySQL Command Line Client中如何進行相關(guān)操作。2:實驗內(nèi)容

啟動MySQL的命令行客戶端,輸入密碼mysql(小寫);執(zhí)行

五、教學過程中

(三)實驗內(nèi)容的1部分,學習和驗證MySQL的事務(wù);在實驗步驟2的基礎(chǔ)上,在數(shù)據(jù)bankrecord的表record中,添加一個元組id為3的張六,初始余額2萬;自己寫事務(wù)完成如下操作:李四向張六轉(zhuǎn)賬5千,然后取消該轉(zhuǎn)賬;王五向李四轉(zhuǎn)賬1萬5,然后確認轉(zhuǎn)賬;執(zhí)行

五、教學過程中

(三)實驗內(nèi)容的2部分,學習和驗證MySQL的鎖;在步驟4的基礎(chǔ)上,在數(shù)據(jù)庫bookrecord的表sellrecord中,添加一個元組id為2000的書籍Oracle數(shù)據(jù)庫實用教程庫,存為2本;在當前MySQL命令行客戶端里面模擬李四購書,另外啟動一個MySQL命令行客戶端,模擬王五購書;要求使用寫鎖先鎖定后,再修改,因為庫存有兩本,所以李四和王五都能買到,庫存為0,并且兩人的名字都出現(xiàn)在buyername 3:實驗結(jié)果

create database bankrecord character set utf8 collate utf8_general_ci;use bankrecord;

create table record(id int,name varchar(20),jine decimal(8,2));

set names gbk;

insert into record values(1, '李四',20000);insert into record values(2, '王五',20000);start transaction;

update record set jine=jine-10000 where name='李四';select * from record;rollback;

select * from record;

1、查看數(shù)據(jù)庫自動提交模式是否打開:

2,按照實驗指導先建立數(shù)據(jù)庫、表和向表中插入初始賬戶記錄:

3、完成開始事務(wù),從李四賬戶轉(zhuǎn)出 1 萬元,向王五賬戶中轉(zhuǎn)入 1 萬元,提交確認轉(zhuǎn)賬:

4、安實驗指導執(zhí)行語句先建立數(shù)據(jù)庫、表和向表中插入初始書籍記錄:

5、在數(shù)據(jù)庫 bankrecord 的表 record 中,添加一個元組id 為 3 的張六,初始余額 2 萬,李四向張六轉(zhuǎn)賬 5 千,然后取消該轉(zhuǎn)賬;王五向李四轉(zhuǎn)賬 1 萬 5,然后確認轉(zhuǎn)賬(語句在圖中顯示):

6、在數(shù)據(jù)庫 bookrecord 的表 sellrecord 中,添加一個元組id 為 2000 的書籍 Oracle 數(shù)據(jù)庫實用教程庫,存為 2 本(相關(guān)語句在圖中顯示):

7、在當前 MySQL 命令行客戶端里面模擬李四購書,另外啟動一個 MySQL 命令行客戶 端,模擬王五購書(語句在圖中顯示)。

4:實驗心得

本次實驗了解 MySQL 事務(wù)的設(shè)置、提交和回退的方法和步驟,掌握 MySQL Command Line Client 中如何進行相關(guān)操作。了解 MySQL 的表鎖定與鎖定解除,掌握 MySQL Command Line Client 中如何進行相關(guān)操作。

實驗十二MySQL的常用函數(shù)MySQL 1:實驗目的

本次實驗了解 MySQL 常用字符串、日期和時間函數(shù)等的使用,掌握 MySQL Command Line Client 中如何進行相關(guān)操作。常用函數(shù)包括常用字符串、日期和時間函數(shù)等各類函數(shù)。2:實驗內(nèi)容

啟動 MySQL 的命令行客戶端,輸入密碼 mysql(小寫);執(zhí)行

五、教學過程中

(三)實驗內(nèi)容的 1 部分,學習和驗證 MySQL 的字符串函數(shù);在實驗步驟 2 的基礎(chǔ)上,學習如下兩個函數(shù)并完成題目:定位和位置函數(shù) LOCATE(substr,str),返回字符串 str 中子字符串 substr 的第一次出現(xiàn)位置,如果 str 中不包含 substr,返回 0。

請使用LOCATE函數(shù)計算needle在haystackneedlehaystack第一次出現(xiàn)的位置;子字符串函數(shù) SUBSTRING(str,pos,len),從字符串 str 返回一個長度同 len 字符相同的子字符串,起始于位置 pos;請使用 SUBSTRING 函數(shù)計算 backspace,從第 2 個字符起,長度為 5 的子字符串;字符串函數(shù)的解答腳本和結(jié)果請保存,老師會檢查;執(zhí)行

五、教學過程中

(三)實驗內(nèi)容的 2 部分,學習和驗證 MySQL 的日期和時間函數(shù);在步驟 4 的基礎(chǔ)上,學習如下一個函數(shù)并完成題目:周函數(shù) WEEK(date),返回 date 時間包含的星期數(shù);請使用 WEEK 函數(shù)計算當前日期包含的星期數(shù)。3:實驗結(jié)果

4:實驗心得

通過本次實驗掌握了MySQL 常用函數(shù)包括常用字符串、日期和時間函數(shù)等各類函數(shù),并且學會了MySQL Command Line Client 中如何進行相關(guān)操作。

第三篇:數(shù)據(jù)庫實驗報告

實驗7 索引和數(shù)據(jù)完整性的使用

1、目的與要求

(1)掌握索引的使用方法;

(2)掌握數(shù)據(jù)完整性的實現(xiàn)方法;

2、實驗準備

(1)了解索引的作用與分類;(2)掌握索引的創(chuàng)建方法;

(3)理解數(shù)據(jù)的完整性的概念與分類;(4)掌握各種數(shù)據(jù)完整性的實現(xiàn)方法。

3、實驗內(nèi)容

(1)建立索引

①使用CREATE INDEX語句創(chuàng)建索引。

對YGGL數(shù)據(jù)庫的Employees表中的DepartmentID列建立索引。在查詢分析器中輸入如下程序并執(zhí)行: USE YGGL GO CREATE INDEX depart_ind

ON Employees(DepartmentID)GO 在Employees表的Name列和Address列上建立復合索引。CREATE INDEX Ad_ind

ON Employees(Name,Address)對Departments表上的DepartmentName列建立唯一非聚集索引。CREATE UNIQUE INEDX Dep_ind ON Departments(DepartmentName)【思考與練習】

a.索引創(chuàng)建完后在對象資源管理器中查看表中的索引。b.了解索引的分類情況

c.使用CREATE INDEX語句能創(chuàng)建主題嗎? d.在什么情況下可以看到建立索引的好處?

②使用界面方式創(chuàng)建索引。

使用界面方式在Employees表的PhoneNumber列上創(chuàng)建索引。

啟動SQL Server Management Studio,在對象資源管理器中展開數(shù)據(jù)庫YGGL,展開表Employees,右擊“索引,選擇“新建索引”選項。在新建索引的窗口中填寫索引的名稱和類型,單擊“添加”按鈕,在列表框中選擇要創(chuàng)建的索引的列,選擇完單擊“確定”按鈕即完成創(chuàng)建工作。【思考與練習】

a.使用界面方式創(chuàng)建一個復合索引。

b.在Employees表的表設(shè)計窗口選擇Address列,右擊選擇“索引/鍵”菜單項,在新窗口中的Address列創(chuàng)建一個唯一的索引。

c.創(chuàng)建一個數(shù)據(jù)量很大的新表,查看使用索引和不使用索引的區(qū)別。

(2)重建索引。

重建表Employees中的所有索引。USE YGGL GO ALTER INDEX ALL

ON Employ REBUILD 【思考與練習】重建表Employees中EmployeeID列上的索引。

(3)刪除索引。

使用DROP INDEX語句刪除表Employees上的索引Depart_ind,計劃使用如下SQL語句:

DROP INDEX Depart_ind ON Employees 【思考與練習】

a.使用QROP INDEX一次刪除Employees表上的多個索引 b使用界面方式刪除Department表上的索引。

(4)數(shù)據(jù)完整性。

①創(chuàng)建一個表Employees5,只含EmployeesID,Name,Sex和Education列。將Name,設(shè)為主鍵,作為列Name的約束。對EmployeesID列進行UNIQUE約束,并作為表的約束。

CREATE TABLE Employees5(EmployeesID char(6)NOT NULL PRIMARY KEY, Sex tinyint Education char(4), CONSTRAINT UK_id UNIQUE(EmployeesID))

②刪除上例中創(chuàng)建的UNIQUE約束。ALTER TABLE Employees5 DROPCONSTRAINT UK_id GO 【思考與練習】

a.使用T-SQL命令創(chuàng)建一個新表,使用一個復合列作為主鍵,作為表的約束,并為其命名。b.使用語句為表ALTER TABLEEmployees5添加一個新列Address,并為該列定義UNIQUE約束,并了解如何使用圖形向?qū)Х绞絼h除主鍵和UNIOQUE約束。

③創(chuàng)建新表student,只考慮“號碼”和“性別”兩列,性別只能包含男或女。CREATE TABLE student(號碼char(6)NOT NULL 性別char(2)Employees

CHECK(性別 IN(“男”,“女”))

【思考與練習】 向該表插入數(shù)據(jù),“性別”列插入“男”和“女”以外的字符,查看會發(fā)生什么情況。

④創(chuàng)建新表Salary2,結(jié)構(gòu)與Salary相同,但Salary2表不可以O(shè)utCome列大于Income列。

CREATE TABLE Salary2(EmployeesID char(6)NOT NULL Income Float NOT NULL, OUTCOME FLOAT NOT NULL, CHECK(INCOME>=OUTCOME))【思考與練習】

a.向表中插入數(shù)據(jù),查看OUTCOME值比INCOME值大是會有什么情況。b.創(chuàng)建一個表Employees6,只考慮“學號”和“出生日期”兩列,出生日期必須晚于1980年1月1日。

⑤對YGGL數(shù)據(jù)庫中的Employees表進行修改,為其增加“DepartmentID”字段的CHECK約束。

use YGGL go alter table Employees add constraint depart check(DepartmentID>=1 and DepartmentID<=5)【思考與練習】測試CHECK約束的有效性。

⑥創(chuàng)建一個規(guī)則對象,用以限制輸入到該規(guī)則所綁定的列中的值只能是該規(guī)則中列出的值。

create rule list_rule as @list in('財務(wù)部','研發(fā)部','人力資源部','銷售部')go exec sp_bindrule 'list_rule','Departments.DepartmentName' go 【思考與練習】創(chuàng)建一個規(guī)則對象,限制在0~20之間。然后把他綁定知道Employees表的WorkYear字段上。

刪除上述建立的規(guī)則對象。

⑦創(chuàng)建一個表Salary3,要求所有Salary3表上EmployeeID列的值都要出現(xiàn)在Salary表中,利用參照完整性約束實現(xiàn),要求當刪除或修改Salary表上的EmployeeID列時,Salary3表中的EmployeeID值也會隨之變化

create table Salary3(EmployeeID char(6)not null primary key, InCome float not null, OutCome float(8)not null, foreign key(EmployeeID)references Salary(EmployeeID)on update cascade

on delete cascade)

4、實驗結(jié)果

(1)建立索引 ①【思考與練習】

a.索引創(chuàng)建完后在對象資源管理器中查看表中的索引。

b.了解索引的分類情況

答:索引分為兩類:分別是聚集索引和非聚集索引,其中有唯一索引和復合索引。每一個表中只可以有一個聚集索引,但可以有多個非聚集索引。c.使用CREATE INDEX語句能創(chuàng)建主題嗎? 不可以

d.在什么情況下可以看到建立索引的好處? 當要在龐大的數(shù)據(jù)庫中尋找自己想要的數(shù)據(jù)的時候,建立索引是很有好處的,優(yōu)點如下:

第一:通過創(chuàng)建唯一性索引,可以保證數(shù)據(jù)庫表中每一行數(shù)據(jù)的唯一性。

第二:可以大大加快數(shù)據(jù)的檢索速度,這也是創(chuàng)建索引的最主要的原因。第三:可以加速表和表之間的連接,特別是在實現(xiàn)數(shù)據(jù)的參考完整性方面特別有意義。

第四:在使用分組和排序子句進行數(shù)據(jù)檢索時,同樣可以顯著減少查詢中分組和排序的時間。第五,通過使用索引,可以在查詢的過程中,使用優(yōu)化隱藏器,提高系統(tǒng)的性能。

②【思考與練習】

a.使用界面方式創(chuàng)建一個復合索引。

b.在Employees表的表設(shè)計窗口選擇Address列,右擊選擇“索引/鍵”菜單項,在新窗口中的Address列創(chuàng)建一個唯一的索引。

c.創(chuàng)建一個數(shù)據(jù)量很大的新表,查看使用索引和不使用索引的區(qū)別。

(2)重建索引。

【思考與練習】重建表Employees中EmployeeID列上的索引。USE YGGL GO create index employid_ind ON Employees(EmployeeID)GO ALTER INDEX employid_ind ON Employees REBUILD GO

(3)刪除索引。

【思考與練習】

a.使用QROP INDEX一次刪除Employees表上的多個索引

USE YGGL GO DROP INDEX Employees.depart_ind,Employees.Employ_ind GO

b使用界面方式刪除Department表上的索引。

(4)數(shù)據(jù)完整性。

②【思考與練習】

a.使用T-SQL命令創(chuàng)建一個新表,使用一個復合列作為主鍵,作為表的約束,并為其命名。

USE YGGL GO CREATE TABLE Employ(EmployeeID char(8)NOT NULL, Name char(10)NOT NULL, Sex bit NOT NULL, Education char(5), CONSTRAINT UK_id PRIMARY KEY(EmployeeID,Name,Sex))

b.使用語句為表ALTER TABLEEmployees5添加一個新列Address,并為該列定義UNIQUE 約束。

USE YGGL GO ALTER TABLE Employees5 ADD Address varchar(40)NULL CONSTRAINT USK_id UNIQUE GO

C.使用界面方式為一個新表定義主鍵和UNIQUE約束,并了解如何使用圖形向?qū)Х绞絼h除主鍵和UNIQUE約束。

③【思考與練習】

向該表插入數(shù)據(jù),“性別”列插入“男”和“女”以外的字符,查看會發(fā)生什么情況。

④【思考與練習】

a.向表中插入數(shù)據(jù),查看OUTCOME值比INCOME值大是會有什么情況。

INSERT 語句與CHECK 約束“CK__Salary2__1A14E395”沖突。該沖突發(fā)生于數(shù)據(jù)庫“YGGL”,表“dbo.Salary2”。

語句已終止。

b.創(chuàng)建一個表Employees6,只考慮“學號”和“出生日期”兩列,出生日期必須晚于1980年1月1日。USE YGGL

GO CREATE TABLE Employees6(學號 char(6)NOT NULL,出生日期

varchar(20)NOT NULL

CHECK(出生日期>'1980-1-1'))

⑤【思考與練習】測試CHECK約束的有效性。

insert into Employees6 values('001','1980-1-0')

INSERT 語句與CHECK 約束“CK__Employees6__出生日期__1BFD2C07”沖突。該沖突發(fā)生于數(shù)據(jù)庫“YGGL”,表

“dbo.Employees6”, column '出生日期'。語句已終止。結(jié)果是:上面的記錄添加不進去.表現(xiàn)出了check的有效性.⑥【思考與練習】創(chuàng)建一個規(guī)則對象,限制在0~20之間。然后把他綁定知道Employees表的WorkYear字段上。USE YGGL

GO CREATE RULE Emp_rule

AS @Emp like'[0-20]' GO EXEC sp_bindrule 'Emp_rule','Employees.WorkYear' GO

刪除上述建立的規(guī)則對象。USE YGGL

GO EXEC sp_unbindrule 'Employees.WorkYear' DROP RULE Emp_rule GO

⑦a.創(chuàng)建完Salary3表后,初始化該標的數(shù)據(jù)與salary表相同。刪除salary表中一行數(shù)據(jù),在查看salary3表的內(nèi)容,看看會發(fā)生什么情況。

B.使用ALTER TABLE語句向salary表中的EmployeeID列上添加一個外鍵,要求EmployeeIs表中要刪除或修改與EmployeeID值有關(guān)的行時,檢查Salary表中有沒有與該EployeeID值相關(guān)的記錄,如果存在則拒絕更新Emloyees表。C.在對象資源管理器中建立Departments、Employees和Salary三個表之間的參照關(guān)系。

第四篇:數(shù)據(jù)庫實驗報告

數(shù)據(jù)庫系統(tǒng)原理課程設(shè)計

總結(jié)報告

學院: 軟件學院 專業(yè): 軟件工程 年級: 2009 學號: 20092647 姓名: 李野

1、開發(fā)環(huán)境

Windows7系統(tǒng)

2、DBMS系統(tǒng)架構(gòu)

采用向量的存儲結(jié)構(gòu)存儲數(shù)據(jù)字典信息;屬性信息,表結(jié)構(gòu),索引結(jié)構(gòu),用戶授權(quán)機制都用相應(yīng)的類表示;將表實體(表中內(nèi)容)存儲在文件中,方便查閱;每當執(zhí)行相應(yīng)的SQL語句時只需查閱數(shù)據(jù)字典及修改數(shù)據(jù)文件。

3、DBMS主要功能模塊

(1)DDL功能模擬(2)DML功能模擬

(3)關(guān)系數(shù)據(jù)庫系統(tǒng)的查詢優(yōu)化(4)DCL功能模擬

3.1 SQL語言的詞法和語法分析(1)功能介紹

判斷輸入的SQL語句是否符合詞法以及語法規(guī)則

(2)相關(guān)理論

將輸入的文本當成一個字符串來處理,通過匹配該字符串中的關(guān)鍵字來確定要做什么功能,若都不能匹配,則說明出現(xiàn)詞法或語法錯誤。

(3)算法描述

將輸入的文本保存在字符串s1中,將s1用換行符“n”分割,保存在array[]中,掃描字符串數(shù)組中的每個成員。

a.若以“create table”開頭,查找information文件是否含有“create table”后的表的信息,如果有,則返回true,表示數(shù)據(jù)字典中已有該表,若返回false,表示數(shù)據(jù)字典中沒有該表信息,則把相應(yīng)的屬性名及其類型寫進數(shù)據(jù)字典,并標明是否有主外鍵。b.若以“drop table”開頭,則調(diào)用“drop”函數(shù)

表示刪除表。

c.若以“alter table”開頭,判斷其后是否有“add”或“drop”,“add”表示添加屬性,“drop”表示刪除屬性。

d.若以“insert”開頭,調(diào)用“insert()”函數(shù),表示插入元組。e.若以“delete”開頭,調(diào)用“delete()”函數(shù),表示刪除元組。f.若以“update”開頭,判斷其后是否有“where”條件,若有,則調(diào)用“update()”函數(shù),否則調(diào)用“update0()”函數(shù),表示修改相應(yīng)的元組。g.若以“select”開頭,判斷其后是否有“*”,若有,則調(diào)用“selectall()”函數(shù),否則調(diào)用“select()”函數(shù),表示查詢。

h.若以“create unique index”開頭,則調(diào)用“index()”函數(shù),表示創(chuàng)建索引。

i.若以“drop index”開頭,則調(diào)用“dropindex()”函數(shù),表示刪除索引。

(4)程序流程圖

開始將文本框中內(nèi)容保存在字符串中Create table開頭Drop table開頭alter table開頭insert開頭delete開頭Create unique index開頭Drop index開頭刪除該表信息,并修改數(shù)據(jù)字典數(shù)據(jù)字典中是否有該表信息否是寫回數(shù)據(jù)字典Drop添加屬性判斷其后為“add”或“drop”add插入元組刪除元組創(chuàng)建索引刪除索引標記該表已存在刪除屬性

表3.1-1

3.2創(chuàng)建數(shù)據(jù)庫及數(shù)據(jù)操作功能(1)功能介紹

1、實現(xiàn)建立數(shù)據(jù)庫表結(jié)構(gòu)的功能。

a.支持整型、符點型、字符型數(shù)據(jù)。b.以文件形式保存基本表。c.建立相應(yīng)的數(shù)據(jù)字典。

2、實現(xiàn)輸入數(shù)據(jù)庫記錄的功能。

3、實現(xiàn)刪除數(shù)據(jù)庫記錄的功能。

4、實現(xiàn)修改數(shù)據(jù)庫記錄的功能。

5、實現(xiàn)顯示數(shù)據(jù)庫結(jié)構(gòu)和內(nèi)容(以表格形式顯示)。

6、實現(xiàn)在已有的關(guān)系中添加屬性的功能;

7、實現(xiàn)從已有的關(guān)系中刪除屬性的功能;

8、實現(xiàn)刪除表的功能。

(2)相關(guān)理論

通過編寫一系列的SQL語句,實現(xiàn)創(chuàng)建表,刪除表,插入屬性,刪除屬性,插入元組,刪除元組,修改元組,查找元組等一系列操作。

(3)算法描述

a.創(chuàng)建表

首先判斷該表是否存在,若不存在則將create table 后的語句保存,即將屬性名及類型存儲到數(shù)據(jù)字典中,否則輸出“該表已存在”。b.刪除表

首先在數(shù)據(jù)字典中將該表信息找到,并將其刪除,再找到該數(shù)據(jù)文件,也將其刪除,若該表有索引文件,也將該索引文件刪除。c.添加屬性

在數(shù)據(jù)字典中找到該表位置,將要添加的屬性名及類型追加到末尾。d.刪除屬性

在數(shù)據(jù)字典中找到該表并找到該屬性,將該屬性刪除,找到該表的數(shù)據(jù)文件,刪除此文件中該屬性域。e.插入元組

讀數(shù)據(jù)字典,找到該文件,并記錄該表屬性的名字及類型與要插入的數(shù)據(jù)進行匹配,此時注意類型為“Int”“float”型的輸入是否正確,還要注意“char()”類型是否超界。若判斷完畢,將這些數(shù)據(jù)寫到數(shù)據(jù)文件末尾,若該表有索引文件,還要基于插入新元組后的表建立新索引。f.刪除元組

查找數(shù)據(jù)文件,找到與“where”后的條件相符的元組,并刪除。g.修改元組

首先查看是否有“where”條件,若沒有,則將數(shù)據(jù)文件全部讀出,并將數(shù)據(jù)文件改成“set”后的條件;否則查找數(shù)據(jù)文件并全部讀出,找到與“where”后的條件相符的元組,根據(jù)“set”后的條件進行修改,并寫回文件中。

(4)程序流程圖

a.創(chuàng)建表程序流程圖

開始文本中以create table開頭查找數(shù)據(jù)字典是否有該表信息?否是將屬性名及類型寫進數(shù)據(jù)字典

表3.2-1

提示該表已尋在

b.刪除表程序流程圖

開始文本以“drop table”開始查找數(shù)據(jù)字典是否存在該表?是在數(shù)據(jù)字典中將該表信息刪除否提示不存在該表找到相應(yīng)數(shù)據(jù)文件并將其刪除結(jié)束

表3.3-2

c.添加/刪除屬性程序流程圖

開始文本以“alter table”開始其后為“add”或“drop”add drop在數(shù)據(jù)字典中加入該屬性信息(名字及類型)在數(shù)據(jù)字典中刪除該屬性信息找到數(shù)據(jù)文件,刪除該屬性信息結(jié)束 表3.2-3

d.插入元組程序流程圖

開始文本以“insert”開始查數(shù)據(jù)字典,記錄屬性名及類型掃描待插入的每個屬性與數(shù)據(jù)字典中的屬性比較char()int或float是否匹配或越界是否匹配不匹配或越界都匹配提示屬性類型輸入錯誤寫入數(shù)據(jù)文件尾是否有索引文件有無重寫索引文件結(jié)束 表3.2-4

e.刪除元組程序流程圖

開始文本以“delete”開始查找數(shù)據(jù)字典是否存在該表?是否讀數(shù)據(jù)文件提示不存在該表找到與“where”后相匹配的數(shù)據(jù)文件并將其刪除結(jié)束

表3.3-5

f.修改元組程序流程圖

開始文本以“update”開始其后為是否有“where”條件無有將數(shù)據(jù)文件中相應(yīng)的內(nèi)容全部改為“set”后的條件找到數(shù)據(jù)文件中符合“where”后條件的元組將該元組相應(yīng)條件改為“set”后信息是否有相應(yīng)的索引文件有無重寫索引文件結(jié)束 表3.2-6

(5)測試用例與實驗結(jié)果

a.創(chuàng)建表 測試用例: create table s(s# char(9)sname char(8)age int sex char(2)primary key s#)

create table c(c# char(5)cname char(20)teacher char(8)primary key c#)

create table sc(s# char(9)c# char(5)grade float primary out key s# from s primary out key c# from c)實驗結(jié)果: b.刪除表 測試用例: drop table sc 實驗結(jié)果:

C:插入元組 測試用例:

insert into s values('s1','lou',21,'F')insert into s values('s2','lu',20,'F')insert into s values('s3','ha',22,'M')insert into s values('s4','zhang',21,'F')insert into s values('s5','qian',20,'M')

insert into s values('s6','sun',18,'F')insert into s values('s7','lisan',21,'F')insert into s values('s8','qian',20,'M')insert into s values('s9','wugozi',18,'F')insert into c values('c1','math','zhao')insert into c values('c2','chinese','qian')insert into c values('c3','english','sun')insert into c values('c4','cs','li')insert into c values('c5','java','zhou')insert into c values('c6','c++','wu')insert into c values('c7','jsp','zheng')insert into c values('c8','j2ee','wang')insert into c values('c9','asp','sima')insert into sc values('s1','c1',67)insert into sc values('s2','c2',80)insert into sc values('s3','c3',100)insert into sc values('s4','c4',99)insert into sc values('s5','c5',87)insert into sc values('s6','c6',78)insert into sc values('s7','c7',90)insert into sc values('s8','c8',87)insert into sc values('s9','c9',78)實驗結(jié)果:

d:刪除元組 測試用例:

delete from sc where(sc.s#='s6')實驗結(jié)果:

e:修改元組 測試用例:

update sc set score=120 where s#='s5' 實驗結(jié)果:

f:添加屬性 測試用例:

Alter table s add school char(20)實驗結(jié)果:

g:刪除屬性 測試用例:

Alter table drop school

3.3索引的創(chuàng)建及刪除(1)功能介紹

a.為某關(guān)系的主屬性建立索引

b.利用索引屬性完成選擇操作,記錄完成操作花費的時間,在建立索引前的關(guān)系上執(zhí)行同樣的選擇操作并進行時間代價的比較。

c.利用索引屬性完成連接操作,記錄完成操作花費的時間,在建立索引前的關(guān)系上執(zhí)行同樣的選擇操作并進行時間代價的比較。

d.刪除索引

(2)相關(guān)理論

默認每個塊有50個字節(jié),數(shù)據(jù)文件中的每個元組有自己的首指針(指向元組首部的文件指針),索引文件中存儲的是屬性域值及其塊號(塊號通過其首指針/50得到)。

(3)算法描述

a.創(chuàng)建索引

針對表的主鍵建立索引文件,找到數(shù)據(jù)文件中要建立索引的屬性域值,并記錄該元組的首指針,將其保存在索引文件中。

b.利用索引屬性完成選擇操作

在索引文件中找到“select”語句中“where”后的條件涉及的屬性(因為是基于主鍵建立的索引,所以只能通過主鍵的索引文件來查找相應(yīng)的信息),記錄索引域后的塊號,將塊號*50就能得到相應(yīng)的文件指針,通過文件指針讀數(shù)據(jù)文件,就能找到相應(yīng)的元組。

c.利用索引屬性完成連接操作 d.刪除索引

找到相應(yīng)的索引文件將其永久刪除

(4)程序流程圖

a.創(chuàng)建索引文件

開始數(shù)據(jù)字典有該屬性?是找到數(shù)據(jù)文件中要建立索引的屬性域記錄該元組的文件否指針并/50得到塊號一并寫入索引文件結(jié)束 表3.3-1

b.利用索引屬性完成選擇操作

開始查找索引文件中與“where”后條件相符的屬性域值找到?記錄該屬性域值得塊號否塊號*50得到文件指針查找數(shù)據(jù)文件找到該元組,輸出結(jié)束 表3.3-2

是c.刪除索引文件

開始找到該索引文件?是否將該索引文件徹底刪除結(jié)束 表3.3-4

(5)測試用例與實驗結(jié)果

a:創(chuàng)建索引文件 測試用例:

create index index on s 實驗結(jié)果:

b:利用索引選擇

3.4查詢功能(1)功能介紹

a.實現(xiàn)全關(guān)系選擇操作 b.實現(xiàn)單關(guān)系投影操作

c.實現(xiàn)單關(guān)系選擇操作(允許多條件)d.實現(xiàn)單關(guān)系的選擇投影操作(允許多條件)e.實現(xiàn)兩個關(guān)系和多個關(guān)系的連接操作 f.實現(xiàn)兩個關(guān)系和多個關(guān)系的選擇和連接操作 g.實現(xiàn)兩個關(guān)系和多個關(guān)系的選擇、投影和連接操作

(2)相關(guān)理論(3)算法描述

a.全關(guān)系的選擇操作

掃描數(shù)據(jù)字典,判斷是否有該表,如果有,則掃描數(shù)據(jù)文件,將數(shù)據(jù)文件中內(nèi)容全部輸出。

b.實現(xiàn)單關(guān)系的投影操作

掃描數(shù)據(jù)字典,判斷是否有該表,若有該表,記錄要投影的屬性是第幾個,掃描數(shù)據(jù)文件,將每個元組中要查詢的屬性輸出。

c.實現(xiàn)單關(guān)系的選擇操作(允許多條件)

掃描數(shù)據(jù)字典,判斷是否有該表,若有該表,掃描數(shù)據(jù)文件,利用循環(huán)將滿足“where”后條件的元組選出。

d.實現(xiàn)單關(guān)系的選擇投影操作(允許多條件)

掃描數(shù)據(jù)字典,判斷是否有該表,若有該表,則記錄需要投影的屬性是第幾個,查找數(shù)據(jù)文件,利用循環(huán)將滿足“where”條件的元組找出并屬性相應(yīng)的屬性值。

e.實現(xiàn)兩個關(guān)系和多個關(guān)系的連接操作

掃描數(shù)據(jù)字典,判斷是否有這兩個表,若有,則查找相關(guān)屬性,將兩個表中的相關(guān)屬性依據(jù)條件進行匹配,若匹配成功,則表示連接成功,輸出連接結(jié)果。

f.實現(xiàn)兩個關(guān)系和多個關(guān)系的選擇和連接操作 在以上的連接結(jié)果中挑選符合條件的元組輸出。g.實現(xiàn)兩個關(guān)系和多個關(guān)系的選擇、投影和連接操作 在以上的結(jié)果中選擇要投影的屬性,輸出。

(4)程序流程圖

a.全關(guān)系的選擇操作

開始掃描數(shù)據(jù)字典是否有該表?掃描數(shù)據(jù)文件并全部輸出結(jié)束 表3.4-1 b.實現(xiàn)單關(guān)系的投影操作

開始掃描數(shù)據(jù)字典是否有該表?是否有要投影的屬性否記錄要投影的屬性是第幾個掃描數(shù)據(jù)文件將該屬性值域輸出結(jié)束

表3.4-2 c.實現(xiàn)單關(guān)系的選擇操作(允許多條件)

是是否

開始掃描數(shù)據(jù)字典是否有該表?是記錄“where”條件并掃描是否掃描數(shù)據(jù)文件有與之匹配的元組?否輸出提示沒有符合條件的元組結(jié)束 表3,4-3 d.實現(xiàn)單關(guān)系的選擇投影操作(允許多條件)

開始掃描數(shù)據(jù)字典是否有該表?是記錄要投影的屬性是第幾個否記錄“where”條件并掃描掃描數(shù)據(jù)文件有與之匹配的元組?否是選擇要投影的屬性值域提示沒有符合條件的元組提示沒有符合條件的元組輸出結(jié)束 表3.4-4(5)測試用例與實驗結(jié)果

測試用例:

select s#,sname,age,sex from s where s.sname='qian'ands.age>19 實驗結(jié)果:

測試用例:

select sname,age,sex from s where s.s#='s6'ands.age=18ors.sname='li' 實驗結(jié)果:

測試用例: link s,sc base sc 實驗結(jié)果:

測試用例: link s,c,sc base sc 實驗結(jié)果:

3.5查詢優(yōu)化

(1)功能介紹

在做兩個表連接時,先將需要用到的元組找到,并不做笛卡爾積,這在一定程度上減少了全部選擇的時間。

(2)相關(guān)理論

在做兩個表連接時,需要名字及類型相同的屬性用一定的條件進行匹配,如果在做笛卡爾積之前就用這些條件把要用到的元組選出來,既省空間又省時間。

(3)算法描述

首先查看表是否存在,若存在查找涉及到的屬性,記錄“where”后的條件,將兩個表中符合條件的元組都取出,將這些元組做連接。

(4)程序流程圖

開始是否存在該表?是是否有涉及到的屬性?是否記錄“where”后的條件否將符合條件的元組先選出連接結(jié)束

表3.5-1 3.6數(shù)據(jù)庫保護功能(1)功能介紹

此DBMS系統(tǒng)有兩種用戶:管理員,普通用戶。

(2)相關(guān)理論

a.插入元組、修改元組時,匹配每個屬性的類型,如果類型及長度輸入有誤,則提示輸入錯誤不寫入數(shù)據(jù)源文件,若符合條件,則查看基于每個屬性是否有索引文件,如果有,則重寫索引文件。

b.修改元組時也要判斷類型及長度是否匹配,也要重寫相應(yīng)的索引文件。c.每次做相應(yīng)操作前先考慮數(shù)據(jù)字典中是否有該表,是否有要查詢的屬性。

(3)算法描述

例如在做插入元組時,首先查找數(shù)據(jù)字典有沒有待插入的表,如果有,則記錄每個屬性類型及長度,將待插入數(shù)據(jù)與屬性進行一一比對,一旦有一個記錄不符合要求,也無法插入表中。

(4)程序流程圖

開始文本以“insert”開始查數(shù)據(jù)字典,記錄屬性名及類型掃描待插入的每個屬性與數(shù)據(jù)字典中的屬性比較char()int或float是否匹配或越界是否匹配不匹配或越界都匹配提示屬性類型輸入錯誤寫入數(shù)據(jù)文件尾是否有索引文件有無重寫索引文件結(jié)束 表3.6-1

4、總結(jié)

通過對于DBMS系統(tǒng)的模擬,使我對于數(shù)據(jù)庫系統(tǒng)有了更深刻的理解,了解了每個表信息的存儲結(jié)構(gòu),以及數(shù)據(jù)字典的相關(guān)說明,也了解了主外鍵的意義與作用,也知道了插入元組的時候?qū)傩云ヅ鋯栴},以及對表的屬性域的修改等。通過編寫程序,讓我對表連接有了更加系統(tǒng)的認識,也知道了在連接時先選出要查詢的元組更省時間,省空間。了解了怎樣存儲表信息才能既省空間又能保存表信息,沒有冗余情況。通過做實驗,我將理論與實踐有了更好的結(jié)合,不但提高了對理論的理解,更讓我對編程能力有了很好的鍛煉。

5、參考文獻

《數(shù)據(jù)庫系統(tǒng)原理》 李建中 王珊編著 電子工業(yè)出版社 《Java技術(shù)及其應(yīng)用》 王克宏 編著 高等教育出版社

第五篇:數(shù)據(jù)庫實驗報告

10包三 李雅 100910306

實驗報告

一、實驗題目:

數(shù)據(jù)庫基本操作實驗

二、實驗目的:

掌握數(shù)據(jù)庫的建立、表的設(shè)計基本方法,通過實際操作熟練掌握數(shù)據(jù)庫的基本操作——數(shù)據(jù)的輸入與導入,表的設(shè)計。

三、實驗內(nèi)容:

建立課程管理數(shù)據(jù)庫,要求:

1.輸入老師、開設(shè)課程、選課表、學生基本數(shù)據(jù)等,并輸入一些學生不同課程的考試成績。

2.建立查詢表,分別是成績查詢、學分查詢、不及格學生查詢。

3.建立窗體,分別顯示不及格學生的姓名、課程名稱、成績和班級ID。在成績查詢中顯示學生姓名及各科成績。在教師基本信息中顯示編號、職稱、工資、院系、等。同時建立開設(shè)課程表和學生基本信息的窗體查詢。提供用戶一個簡單的應(yīng)用程序界面,方便用戶操作使用。

4.制作報表。包括教師的授課報表,課程名稱及課程類別。學生的總成績報表,包括課程名稱、成績和學分。

注:課程及考試成績可以任意輸入。選課按照班級確定。

四、實驗過程:

1、數(shù)據(jù)庫表設(shè)計

在表格內(nèi)填入教師基本信息、開始課程、課程基本信息、選課表、學生基本信息。

教師基本信息:

開設(shè)課程:

/ 7

10包三 李雅 100910306

課程基本信息:

選課表:

/ 7

10包三 李雅 100910306

學生基本信息:

2、查詢表: 成績查詢:

/ 7

10包三 李雅 100910306

學分查詢:

不及格學生查詢:

/ 7

10包三 李雅 100910306

3、窗體設(shè)計: 不及格學生信息查詢:

成績查詢:

教師基本信息查詢:

開設(shè)課程信息查詢:

/ 7

10包三 李雅 100910306

學生基本信息查詢:

4、報表: 教師的授課報表:

/ 7

10包三 李雅 100910306

學生的總成績:

/ 7

下載數(shù)據(jù)庫實驗報告,(合集5篇)word格式文檔
下載數(shù)據(jù)庫實驗報告,(合集5篇).doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔相關(guān)法律責任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進行舉報,并提供相關(guān)證據(jù),工作人員會在5個工作日內(nèi)聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

相關(guān)范文推薦

    數(shù)據(jù)庫實驗報告

    課 程 實 驗 報 告 課程名稱: 數(shù)據(jù)庫系統(tǒng)概論專業(yè)班級:計科1207班學號: U201215002 姓名: 李文勇 指導教師:江勝報告日期: 2015年6月8日計算機科學與技術(shù)學院 目 錄 1 實驗一 基......

    數(shù)據(jù)庫實驗報告

    數(shù)據(jù)庫實驗報告 一、題目要求 某銀行準備開發(fā)一個銀行業(yè)務(wù)管理系統(tǒng),通過調(diào)查,得到以下的主要需求: 銀行有多個支行。各個支行位于某個城市,每個支行有唯一的名字。銀行要監(jiān)控每......

    數(shù)據(jù)庫實驗報告

    實驗4SQL高級應(yīng)用 【實驗目的】 1、掌握在SQL SERVER 2005下進行數(shù)據(jù)還原的方法。 2、掌握SQL語句的查詢統(tǒng)計功能和數(shù)據(jù)更改功能。 【實驗內(nèi)容】 1. 還原factory數(shù)據(jù)庫。 2......

    數(shù)據(jù)庫實驗報告

    南華大學 計算機科學與技術(shù)學院 實驗報告 ( 2013 ~2014 學年度 第二學期 ) 課程名稱 實驗名稱 數(shù)據(jù)庫原理與技術(shù) 姓名 張濤 學號 20124350230 專業(yè) 軟件工程 班級 02班 地點......

    數(shù)據(jù)庫原理實驗報告

    南 京 曉 莊 學 院 《數(shù)據(jù)庫原理與應(yīng)用》 課程實驗報告 實驗一 SQL Server 2005常用服務(wù)與實用工具實驗 所在院(系): 數(shù)學與信息技術(shù)學院 班級: 學號: 姓名: 1.實驗目的 (1......

    數(shù)據(jù)庫實驗報告5篇

    數(shù)據(jù)庫實驗報告 目錄 一 實驗目的 ....................................................................................... 3 二 實驗內(nèi)容 ...............................

    Oracle數(shù)據(jù)庫實驗報告

    中南林業(yè)科技大學 實驗報告 課程名稱:Oracle數(shù)據(jù)庫 專業(yè)班級: 姓名:學號:年 月日 實驗一安裝和使用Oracle數(shù)據(jù)庫 【實驗目的】 1. 掌握Oracle軟件安裝過程,選擇安裝組件 2. 掌握......

    數(shù)據(jù)庫完整性實驗報告

    實驗報告 一、實驗題目 數(shù)據(jù)庫完整性 二、實驗要求 1)建立一個被參照關(guān)系test_main,其中id為主鍵。. CREATE TABLE test_main ( id INT, value VARCHAR(10), PRIMARY KEY(id)......

主站蜘蛛池模板: 久久的爱久久久久的快乐| 男女猛烈拍拍拍无挡视频| 成人性生交大免费看| 青春草在线视频观看| 无码国内精品人妻少妇蜜桃视频| 不卡无码人妻一区二区三区| 激情偷乱人成视频在线观看| 亚洲另类无码专区国内精品| 男男19禁啪啪无遮挡免费| 日本真人边吃奶边做爽免费视频| 暖暖免费 高清 日本社区在线观看| 久久只精品99品免费久23| 丰满人妻无奈张开双腿av| 亚洲狠狠爱综合影院网页| 青青草国产三级精品三级| 人妻熟女久久久久久久| 少妇熟女视频一区二区三区| 人人妻人人澡人人爽国产| 丝袜人妻一区二区三区| 早起邻居人妻奶罩太松av| 日韩av一中美av一中文字慕| 午夜色大片在线观看| 久久久国产精品免费a片3d| 人妻精品无码一区二区三区| 国产无套白浆视频在线观看| 337p日本大胆欧美人术艺术69| 国产在线视频一区二区三区欧美图片| 丰满少妇弄高潮了www| 国产三级在线观看播放| 亚洲欧洲日韩综合久久| 六月丁香综合在线视频| 国产成人精品福利一区二区| 国产熟妇乱xxxxx大屁股网| 无码孕妇孕交在线观看| 亚洲欧美日韩在线不卡| 国产欧美va欧美va香蕉在线| 亚洲免费人成视频观看| 波多野结衣在线播放| 国产片免费福利片永久| 久久国产综合精品swag蓝导航| 中字幕久久久人妻熟女天美传媒|