欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      實(shí)驗(yàn)報(bào)告五數(shù)據(jù)庫(kù)(最終定稿)

      時(shí)間:2021-02-11 11:02:39下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫(xiě)寫(xiě)幫文庫(kù)小編為你整理了多篇相關(guān)的《實(shí)驗(yàn)報(bào)告五數(shù)據(jù)庫(kù)》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫(xiě)寫(xiě)幫文庫(kù)還可以找到更多《實(shí)驗(yàn)報(bào)告五數(shù)據(jù)庫(kù)》。

      第一篇:實(shí)驗(yàn)報(bào)告五數(shù)據(jù)庫(kù)

      實(shí)驗(yàn)報(bào)告

      《數(shù)據(jù)庫(kù)原理應(yīng)用及應(yīng)用》實(shí)驗(yàn)報(bào)告

      題目:

      實(shí)驗(yàn)五:1、表的更新

      2、視圖的創(chuàng)建、查詢(xún)及更新

      日期

      2014-04-08

      班級(jí)

      學(xué)號(hào) 2 姓名

      成績(jī)

      實(shí)驗(yàn)環(huán)境:在已安裝的安全的 0 SQL Server 2000 上

      實(shí)驗(yàn)內(nèi)容與完成情況:

      一、

      表的更新

      1.插入 Insert into Values

      或 Insert into

      Select

      2.修改

      Update

      Set

      Where

      3.刪除

      DELETE

      WHERE 二、視圖的創(chuàng)建

      create view s(sno,sname,cno,cname,grade)as select student.sno,sname ,sc.cno,cname,grade from student,sc,course where student.sno=sc.sno and sc.cno=course.cno 查詢(xún)

      select * from s 視圖刪除

      Drop view s 視圖的更新 Update s Set Grade=grade+3

      P.115:

      一、插入元組 例 1

      結(jié)果:

      例 2

      結(jié)果:

      例 3

      結(jié)果:

      例 4

      二、修改數(shù)據(jù) 例 5

      結(jié)果:

      例 6

      結(jié)果:

      例 7

      結(jié)果:

      三、刪除數(shù)據(jù) 例 8

      結(jié)果:

      例 9

      結(jié)果:

      例 10

      結(jié)果:

      建立視圖 例 1

      例 2

      例 3

      例 4

      例 5

      例 6

      例 7

      例 8

      例 9

      例 10

      例 11

      更新視圖 例 12

      結(jié)果:

      例 13

      結(jié)果:

      例 14

      結(jié)果:

      出現(xiàn)的問(wèn)題及解決方法:

      教師評(píng)語(yǔ)

      第二篇:數(shù)據(jù)庫(kù)實(shí)驗(yàn)報(bào)告

      實(shí)驗(yàn)一 PowerDesigner 的 CDM 應(yīng)用

      1:實(shí)驗(yàn)?zāi)康?/p>

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

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

      4.實(shí)驗(yàn)心得

      初次接觸數(shù)據(jù)庫(kù)原理實(shí)驗(yàn),相對(duì)來(lái)說(shuō)還是比較陌生,但老師講解還相對(duì)比較清楚,并且實(shí)驗(yàn)報(bào)告寫(xiě)的十分清楚,只是遇到多建立了一個(gè)實(shí)體而無(wú)法刪除的問(wèn)題,通過(guò)同學(xué)的幫助也解決了,相對(duì)來(lái)說(shuō)第一次實(shí)驗(yàn)還是比較順利的。

      實(shí)驗(yàn)二 PowerDesigner 的 PDM 應(yīng)用

      1.實(shí)驗(yàn)?zāi)康?/p>

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

      2.實(shí)驗(yàn)內(nèi)容

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

      3.實(shí)驗(yàn)結(jié)果

      4.實(shí)驗(yàn)心得

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

      實(shí)驗(yàn) 三Navicat for MySQL的使用和SQL語(yǔ)言數(shù)據(jù)定義語(yǔ)言DDL 1.實(shí)驗(yàn)?zāi)康?/p>

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

      1.啟動(dòng)Navicat for MySQL。

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

      4.實(shí)驗(yàn)心得

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

      實(shí)驗(yàn) 四 SQL語(yǔ)言數(shù)據(jù)定義語(yǔ)言DDL 1:實(shí)驗(yàn)?zāi)康?/p>

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

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

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

      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語(yǔ)句建表CourseAa,相應(yīng)的SQL語(yǔ)句為: CREATE TABLE CourseAa(Aa1 Varchar(20), Aa2 INTEGER, Aa3 decimal(10)); 截圖如下:

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

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

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

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

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

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

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

      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語(yǔ)句刪除視圖View_Choosebb。相應(yīng)的SQL語(yǔ)句如下: DROP VIEW View_choosebb;11.用Create Index語(yǔ)句對(duì)表ChooseBb的Bb2屬性建立一個(gè)升序索引,索引名Index_bb2。用Create Index語(yǔ)句對(duì)表ChooseBb的Bb4屬性建立一個(gè)降序索引,索引名Index_bb4。相應(yīng)的SQL語(yǔ)句如下:

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

      DROP INDEX Index_bb2 ON ChooseBb;

      4:實(shí)驗(yàn)中遇到的問(wèn)題及心得體會(huì)

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

      2、由于理論課時(shí)查詢(xún)語(yǔ)言之學(xué)到了表的查詢(xún),到后面實(shí)驗(yàn)中涉及視圖的建立及查詢(xún),也不清楚是怎么回事,而且由于對(duì)查詢(xún)語(yǔ)句的不熟悉,實(shí)驗(yàn)過(guò)程中進(jìn)行緩慢,視圖的部分是課下看書(shū)慢慢寫(xiě)的,沒(méi)有截圖。

      通過(guò)這次實(shí)驗(yàn),初步了解了SQL語(yǔ)言中DDL語(yǔ)言的CREATE、DROP、ALTER對(duì)表、索引、視圖的操作,掌握在Navicat for MySQL中用DDL語(yǔ)言進(jìn)行對(duì)表、索引、視圖的增加、刪除和改動(dòng)。掌握使用SQL語(yǔ)句增加或刪除約束。因?yàn)閷?shí)驗(yàn)過(guò)程中對(duì)這些語(yǔ)句的不熟悉耽誤課很長(zhǎng)時(shí)間,還需課下多下工夫多看、多寫(xiě)。

      實(shí)驗(yàn)五

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

      1:實(shí)驗(yàn)?zāi)康?/p>

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

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

      2實(shí)驗(yàn)內(nèi)容

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

      3:實(shí)驗(yàn)代碼及結(jié)果

      1、用Create Table語(yǔ)句建立test表,其語(yǔ)句和截圖如下所示; 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語(yǔ)句建立test_temp表,其語(yǔ)句同1。

      3、用INSERT語(yǔ)句對(duì)表test_temp,插入如實(shí)驗(yàn)報(bào)告中的三條記錄,其插入語(yǔ)句和截圖如下: 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','學(xué)生新區(qū)19-7-1');

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

      SELECT * FROM test_temp;

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

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

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

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

      WHERE Score<=500 AND Age>=21;

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

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

      4實(shí)驗(yàn)心得

      這次實(shí)驗(yàn)從實(shí)驗(yàn)原理還是實(shí)驗(yàn)操作來(lái)說(shuō)還是相對(duì)簡(jiǎn)單的,但越是對(duì)簡(jiǎn)單的是就越容易犯迷糊,這次件表命名給了我很多啟示,以后對(duì)細(xì)節(jié)還是要十分注意的。

      實(shí)驗(yàn)六 SQL語(yǔ)言數(shù)據(jù)查詢(xún)語(yǔ)言DQL

      1:實(shí)驗(yàn)?zāi)康?/p>

      本次實(shí)驗(yàn)了解 SQL 語(yǔ)言的 SELECT 語(yǔ)句對(duì)數(shù)據(jù)的查詢(xún),學(xué)會(huì)在 Navicat for MySQL 中用 SELECT 語(yǔ)句對(duì)表中的數(shù)據(jù)進(jìn)行簡(jiǎn)單查詢(xún)、連接查詢(xún)、嵌套查詢(xún)和組 合查詢(xún)。2:實(shí)驗(yàn)原理

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

      1.用 Create Table 建立 Student 表:

      2.用 Create Table 建立 Course 表:

      3.用 Create Table 建立 Choose 表:

      4.用 INSERT 語(yǔ)句向 Student 表中插入 3 個(gè)元組:

      5.用 INSERT 語(yǔ)句向 Course 表中插入 3 個(gè)元組:

      6.用 INSERT 語(yǔ)句向 Choose 表中插入 7 個(gè)元組:

      7.用 SELECT 語(yǔ)句,查詢(xún)計(jì)算機(jī)學(xué)院學(xué)生的學(xué)號(hào)和姓名。

      8.用 SELECT 語(yǔ)句的 between?and?表示查詢(xún)條件,查詢(xún)年齡在 20~23 歲的學(xué) 生信息。

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

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

      Min():

      Sum();

      avg():

      11.用 SELECT 語(yǔ)句對(duì)空值(NULL)的判斷條件,查詢(xún) Course 表中先修課稱(chēng)編號(hào)為 空值的課程編號(hào)和課程名稱(chēng)。

      12.用 SELECT 語(yǔ)句的連接查詢(xún),查詢(xún)學(xué)生的學(xué)號(hào)、姓名、選修的課程名及成績(jī)。

      13.用 SELECT 的存在量詞 EXISTS,查詢(xún)與“張三”在同一個(gè)學(xué)院學(xué)習(xí)的學(xué)生信 息。

      14.用 SELECT 語(yǔ)句的嵌套查詢(xún),查詢(xún)選修 C1 課程的成績(jī)低于“張三”的學(xué)生的 學(xué)號(hào)和成績(jī)。

      15.用 SELECT 語(yǔ)句的組合查詢(xún)(UNION),查詢(xún)選修了 C1 課程或者選修了 C3 課程 的學(xué)生學(xué)號(hào)。

      16.用 SELECT 語(yǔ)句的組合查詢(xún)(UNION)與 DISTINCT 短語(yǔ),查詢(xún)選修了 C1 課程或 者選修了 C3 課程的學(xué)生學(xué)號(hào),并取消重復(fù)的數(shù)據(jù)。

      4.實(shí)驗(yàn)心得

      本次實(shí)驗(yàn)室相對(duì)于前幾次來(lái)說(shuō)比較困難的一次,因?yàn)檎Z(yǔ)句剛學(xué)過(guò),下去也沒(méi)有及時(shí)去練習(xí),對(duì)于很多還是比較困難,在本次實(shí)驗(yàn)中通過(guò)練習(xí),讓我了解 SQL 語(yǔ)言的 SELECT 語(yǔ)句對(duì)數(shù)據(jù)的查詢(xún),學(xué)會(huì)在 Navicat forMySQL 中用 SELECT 語(yǔ)句對(duì)表中的數(shù)據(jù)進(jìn)行簡(jiǎn)單查詢(xún)、連接查詢(xún)、嵌套查詢(xún)和組合查詢(xún)。課下時(shí)間也會(huì)多多練習(xí)SQl語(yǔ)句。

      實(shí)驗(yàn)七

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

      1:實(shí)驗(yàn)?zāi)康?/p>

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

      1、按照實(shí)驗(yàn)指導(dǎo)安裝Apache http Server。成功后,截圖如下:

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

      3、實(shí)驗(yàn)測(cè)試成功,截圖如下:

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

      4:實(shí)驗(yàn)心得

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

      實(shí)驗(yàn)八 MySQL的存儲(chǔ)過(guò)程

      1:實(shí)驗(yàn)?zāi)康?/p>

      存儲(chǔ)過(guò)程分為兩類(lèi):1.系統(tǒng)提供的存儲(chǔ)過(guò)程;2.用戶(hù)自定義存儲(chǔ)過(guò)程。

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

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

      2:實(shí)驗(yàn)內(nèi)容

      1、MySQL Command Line Client中創(chuàng)建存儲(chǔ)過(guò)程,按照實(shí)驗(yàn)指導(dǎo)書(shū)創(chuàng)建第一、第二個(gè)存儲(chǔ)過(guò)程及其調(diào)用。

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

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

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

      3:實(shí)驗(yàn)結(jié)果

      4:心得體會(huì)

      通過(guò)此次實(shí)驗(yàn),學(xué)會(huì)了在MySQL Command Line Client中創(chuàng)建存儲(chǔ)過(guò)程及其調(diào)用,并傳遞參數(shù)對(duì)其進(jìn)行調(diào)用測(cè)試.實(shí)驗(yàn)九MySQL的觸發(fā)器和SQL語(yǔ)言數(shù)據(jù)控制語(yǔ)言DCL 1:實(shí)驗(yàn)?zāi)康?/p>

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

      1、允許/限制對(duì)表的修改;

      2、自動(dòng)生成派生列,比如自增字段;

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

      4、提供審計(jì)和日志記錄;

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

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

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

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

      2.執(zhí)行

      五、教學(xué)過(guò)程中

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

      4.自行編寫(xiě)student表的觸發(fā)器aduit_student_delete,在對(duì)student表進(jìn)行刪除操作后觸發(fā),觸發(fā)時(shí),向student_log表寫(xiě)入觸發(fā)用戶(hù)、觸發(fā)時(shí)間和觸發(fā)類(lèi)型。并對(duì)該新建進(jìn)行觸發(fā)測(cè)試。

      3:實(shí)驗(yàn)結(jié)果

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

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

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

      select * from student_log;

      ③輸入如下語(yǔ)句,在student表上語(yǔ)句觸發(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;

      建立④輸入如下語(yǔ)句對(duì)觸發(fā)器進(jìn)行INSERT觸發(fā)測(cè)試,如圖所示: 對(duì)student表做一個(gè)INSERT操作:

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

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

      select * from student_log;

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

      ②修改觸發(fā)器,記錄觸發(fā)語(yǔ)句類(lèi)型。選中student表,單擊右鍵,選擇設(shè)計(jì)表,點(diǎn)擊觸發(fā)器選項(xiàng)卡,在定義中對(duì)INSERT進(jìn)行編輯,如圖所示:

      select * from student_log

      4:實(shí)驗(yàn)心得

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

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

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

      1:實(shí)驗(yàn)?zāi)康?/p>

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

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

      2:實(shí)驗(yàn)內(nèi)容

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

      3.對(duì)user表進(jìn)行授予權(quán)限操作,并用select insert 進(jìn)行測(cè)試 4.對(duì)user表進(jìn)行收回權(quán)限操作,用select insert語(yǔ)句進(jìn)行測(cè)試 3:實(shí)驗(yàn)結(jié)果

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

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

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

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

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

      5、接下來(lái),切換到MySQL的命令行客戶(hù)端,創(chuàng)建一個(gè)簡(jiǎn)單的表,切換到Navicat for MySQL,新建一個(gè)查詢(xún):

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

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

      輸入如下查詢(xún)語(yǔ)句:

      Select * from mysql.dcltest;

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

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

      Revoke insert on mysql.dcltest from jason;

      新建一個(gè)查詢(xún),執(zhí)行如下查詢(xún)語(yǔ)句: select * from mysql.dcltest;

      Revoke select on mysql.dcltest from jason;

      4:實(shí)驗(yàn)心得

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

      實(shí)驗(yàn)十一MySQL的事務(wù)與鎖

      1:實(shí)驗(yàn)?zāi)康?/p>

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

      啟動(dòng)MySQL的命令行客戶(hù)端,輸入密碼mysql(小寫(xiě));執(zhí)行

      五、教學(xué)過(guò)程中

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

      五、教學(xué)過(guò)程中

      (三)實(shí)驗(yàn)內(nèi)容的2部分,學(xué)習(xí)和驗(yàn)證MySQL的鎖;在步驟4的基礎(chǔ)上,在數(shù)據(jù)庫(kù)bookrecord的表sellrecord中,添加一個(gè)元組id為2000的書(shū)籍Oracle數(shù)據(jù)庫(kù)實(shí)用教程庫(kù),存為2本;在當(dāng)前MySQL命令行客戶(hù)端里面模擬李四購(gòu)書(shū),另外啟動(dòng)一個(gè)MySQL命令行客戶(hù)端,模擬王五購(gòu)書(shū);要求使用寫(xiě)鎖先鎖定后,再修改,因?yàn)閹?kù)存有兩本,所以李四和王五都能買(mǎi)到,庫(kù)存為0,并且兩人的名字都出現(xiàn)在buyername 3:實(shí)驗(yàn)結(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ù)庫(kù)自動(dòng)提交模式是否打開(kāi):

      2,按照實(shí)驗(yàn)指導(dǎo)先建立數(shù)據(jù)庫(kù)、表和向表中插入初始賬戶(hù)記錄:

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

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

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

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

      7、在當(dāng)前 MySQL 命令行客戶(hù)端里面模擬李四購(gòu)書(shū),另外啟動(dòng)一個(gè) MySQL 命令行客戶(hù) 端,模擬王五購(gòu)書(shū)(語(yǔ)句在圖中顯示)。

      4:實(shí)驗(yàn)心得

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

      實(shí)驗(yàn)十二MySQL的常用函數(shù)MySQL 1:實(shí)驗(yàn)?zāi)康?/p>

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

      啟動(dòng) MySQL 的命令行客戶(hù)端,輸入密碼 mysql(小寫(xiě));執(zhí)行

      五、教學(xué)過(guò)程中

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

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

      五、教學(xué)過(guò)程中

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

      4:實(shí)驗(yàn)心得

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

      第三篇:數(shù)據(jù)庫(kù)實(shí)驗(yàn)報(bào)告

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

      1、目的與要求

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

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

      2、實(shí)驗(yàn)準(zhǔn)備

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

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

      3、實(shí)驗(yàn)內(nèi)容

      (1)建立索引

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

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

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

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

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

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

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

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

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

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

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

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

      (2)重建索引。

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

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

      (3)刪除索引。

      使用DROP INDEX語(yǔ)句刪除表Employees上的索引Depart_ind,計(jì)劃使用如下SQL語(yǔ)句:

      DROP INDEX Depart_ind ON Employees 【思考與練習(xí)】

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

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

      ①創(chuàng)建一個(gè)表Employees5,只含EmployeesID,Name,Sex和Education列。將Name,設(shè)為主鍵,作為列Name的約束。對(duì)EmployeesID列進(jìn)行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 【思考與練習(xí)】

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

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

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

      【思考與練習(xí)】 向該表插入數(shù)據(jù),“性別”列插入“男”和“女”以外的字符,查看會(huì)發(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))【思考與練習(xí)】

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

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

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

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

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

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

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

      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、實(shí)驗(yàn)結(jié)果

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

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

      b.了解索引的分類(lèi)情況

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

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

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

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

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

      ②【思考與練習(xí)】

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

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

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

      (2)重建索引。

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

      (3)刪除索引。

      【思考與練習(xí)】

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

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

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

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

      ②【思考與練習(xí)】

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

      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.使用語(yǔ)句為表ALTER TABLEEmployees5添加一個(gè)新列Address,并為該列定義UNIQUE 約束。

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

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

      ③【思考與練習(xí)】

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

      ④【思考與練習(xí)】

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

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

      語(yǔ)句已終止。

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

      GO CREATE TABLE Employees6(學(xué)號(hào) char(6)NOT NULL,出生日期

      varchar(20)NOT NULL

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

      ⑤【思考與練習(xí)】測(cè)試CHECK約束的有效性。

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

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

      “dbo.Employees6”, column '出生日期'。語(yǔ)句已終止。結(jié)果是:上面的記錄添加不進(jìn)去.表現(xiàn)出了check的有效性.⑥【思考與練習(xí)】創(chuàng)建一個(gè)規(guī)則對(duì)象,限制在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ī)則對(duì)象。USE YGGL

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

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

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

      第四篇:數(shù)據(jù)庫(kù)實(shí)驗(yàn)報(bào)告

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

      總結(jié)報(bào)告

      學(xué)院: 軟件學(xué)院 專(zhuān)業(yè): 軟件工程 年級(jí): 2009 學(xué)號(hào): 20092647 姓名: 李野

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

      Windows7系統(tǒng)

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

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

      3、DBMS主要功能模塊

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

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

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

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

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

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

      (3)算法描述

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

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

      表示刪除表。

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

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

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

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

      (4)程序流程圖

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

      表3.1-1

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

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

      a.支持整型、符點(diǎn)型、字符型數(shù)據(jù)。b.以文件形式保存基本表。c.建立相應(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)在已有的關(guān)系中添加屬性的功能;

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

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

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

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

      (3)算法描述

      a.創(chuàng)建表

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

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

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

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

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

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

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

      (4)程序流程圖

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

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

      表3.2-1

      提示該表已尋在

      b.刪除表程序流程圖

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

      表3.3-2

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

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

      d.插入元組程序流程圖

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

      e.刪除元組程序流程圖

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

      表3.3-5

      f.修改元組程序流程圖

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

      (5)測(cè)試用例與實(shí)驗(yàn)結(jié)果

      a.創(chuàng)建表 測(cè)試用例: 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)實(shí)驗(yàn)結(jié)果: b.刪除表 測(cè)試用例: drop table sc 實(shí)驗(yàn)結(jié)果:

      C:插入元組 測(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)實(shí)驗(yàn)結(jié)果:

      d:刪除元組 測(cè)試用例:

      delete from sc where(sc.s#='s6')實(shí)驗(yàn)結(jié)果:

      e:修改元組 測(cè)試用例:

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

      f:添加屬性 測(cè)試用例:

      Alter table s add school char(20)實(shí)驗(yàn)結(jié)果:

      g:刪除屬性 測(cè)試用例:

      Alter table drop school

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

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

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

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

      d.刪除索引

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

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

      (3)算法描述

      a.創(chuàng)建索引

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

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

      在索引文件中找到“select”語(yǔ)句中“where”后的條件涉及的屬性(因?yàn)槭腔谥麈I建立的索引,所以只能通過(guò)主鍵的索引文件來(lái)查找相應(yīng)的信息),記錄索引域后的塊號(hào),將塊號(hào)*50就能得到相應(yīng)的文件指針,通過(guò)文件指針讀數(shù)據(jù)文件,就能找到相應(yīng)的元組。

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

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

      (4)程序流程圖

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

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

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

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

      是c.刪除索引文件

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

      (5)測(cè)試用例與實(shí)驗(yàn)結(jié)果

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

      create index index on s 實(shí)驗(yàn)結(jié)果:

      b:利用索引選擇

      3.4查詢(xún)功能(1)功能介紹

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

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

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

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

      掃描數(shù)據(jù)字典,判斷是否有該表,如果有,則掃描數(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)將滿(mǎn)足“where”后條件的元組選出。

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

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

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

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

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

      (4)程序流程圖

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

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

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

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

      是是否

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

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

      測(cè)試用例:

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

      測(cè)試用例:

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

      測(cè)試用例: link s,sc base sc 實(shí)驗(yàn)結(jié)果:

      測(cè)試用例: link s,c,sc base sc 實(shí)驗(yàn)結(jié)果:

      3.5查詢(xún)優(yōu)化

      (1)功能介紹

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

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

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

      (3)算法描述

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

      (4)程序流程圖

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

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

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

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

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

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

      (3)算法描述

      例如在做插入元組時(shí),首先查找數(shù)據(jù)字典有沒(méi)有待插入的表,如果有,則記錄每個(gè)屬性類(lèi)型及長(zhǎng)度,將待插入數(shù)據(jù)與屬性進(jìn)行一一比對(duì),一旦有一個(gè)記錄不符合要求,也無(wú)法插入表中。

      (4)程序流程圖

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

      4、總結(jié)

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

      5、參考文獻(xiàn)

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

      第五篇:數(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)。提供用戶(hù)一個(gè)簡(jiǎn)單的應(yīng)用程序界面,方便用戶(hù)操作使用。

      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

      下載實(shí)驗(yàn)報(bào)告五數(shù)據(jù)庫(kù)(最終定稿)word格式文檔
      下載實(shí)驗(yàn)報(bào)告五數(shù)據(jù)庫(kù)(最終定稿).doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


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

      相關(guān)范文推薦

        數(shù)據(jù)庫(kù)實(shí)驗(yàn)報(bào)告

        課 程 實(shí) 驗(yàn) 報(bào) 告 課程名稱(chēng): 數(shù)據(jù)庫(kù)系統(tǒng)概論專(zhuān)業(yè)班級(jí):計(jì)科1207班學(xué)號(hào): U201215002 姓名: 李文勇 指導(dǎo)教師:江勝報(bào)告日期: 2015年6月8日計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 目 錄 1 實(shí)驗(yàn)一 基......

        數(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)控每......

        數(shù)據(jù)庫(kù)實(shí)驗(yàn)報(bào)告

        實(shí)驗(yàn)4SQL高級(jí)應(yīng)用 【實(shí)驗(yàn)?zāi)康摹?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......

        數(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ù)據(jù)庫(kù)原理實(shí)驗(yàn)報(bào)告

        南 京 曉 莊 學(xué) 院 《數(shù)據(jù)庫(kù)原理與應(yīng)用》 課程實(shí)驗(yàn)報(bào)告 實(shí)驗(yàn)一 SQL Server 2005常用服務(wù)與實(shí)用工具實(shí)驗(yàn) 所在院(系): 數(shù)學(xué)與信息技術(shù)學(xué)院 班級(jí): 學(xué)號(hào): 姓名: 1.實(shí)驗(yàn)?zāi)康?(1......

        數(shù)據(jù)庫(kù)實(shí)驗(yàn)報(bào)告5篇

        數(shù)據(jù)庫(kù)實(shí)驗(yàn)報(bào)告 目錄 一 實(shí)驗(yàn)?zāi)康?....................................................................................... 3 二 實(shí)驗(yàn)內(nèi)容 ...............................

        Oracle數(shù)據(jù)庫(kù)實(shí)驗(yàn)報(bào)告

        中南林業(yè)科技大學(xué) 實(shí)驗(yàn)報(bào)告 課程名稱(chēng):Oracle數(shù)據(jù)庫(kù) 專(zhuān)業(yè)班級(jí): 姓名:學(xué)號(hào):年 月日 實(shí)驗(yàn)一安裝和使用Oracle數(shù)據(jù)庫(kù) 【實(shí)驗(yàn)?zāi)康摹?1. 掌握Oracle軟件安裝過(guò)程,選擇安裝組件 2. 掌握......

        數(shù)據(jù)庫(kù)完整性實(shí)驗(yàn)報(bào)告

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