SQL實(shí)驗(yàn)三--數(shù)據(jù)的更新操作和視圖-實(shí)驗(yàn)報(bào)告_第1頁
SQL實(shí)驗(yàn)三--數(shù)據(jù)的更新操作和視圖-實(shí)驗(yàn)報(bào)告_第2頁
SQL實(shí)驗(yàn)三--數(shù)據(jù)的更新操作和視圖-實(shí)驗(yàn)報(bào)告_第3頁
SQL實(shí)驗(yàn)三--數(shù)據(jù)的更新操作和視圖-實(shí)驗(yàn)報(bào)告_第4頁
SQL實(shí)驗(yàn)三--數(shù)據(jù)的更新操作和視圖-實(shí)驗(yàn)報(bào)告_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、實(shí)驗(yàn)三 數(shù)據(jù)的更新操作和視圖 本實(shí)驗(yàn)需要2學(xué)時(shí)。一、實(shí)驗(yàn)?zāi)康?1、掌握視圖的創(chuàng)建、修改和刪除操作.2、掌握數(shù)據(jù)庫數(shù)據(jù)更新(增加、修改、刪除)操作。二、實(shí)驗(yàn)內(nèi)容和步驟1、視圖(1)建立名為UV_SC的視圖。該視圖可以讓我們看到每個(gè)學(xué)生的姓名、選修課程名和成績。(2)利用UV_SC視圖,查看平均成績在80分以上的學(xué)生姓名.(3)建立名為UV_Course的視圖,該視圖顯示每門課的課程名和選修該課程的學(xué)生人數(shù)。(4)修改視圖UV_Course,在視圖中增加一列,顯示選修該課程所有學(xué)生的平均成績。(5)建立名為UV_IS_Depart的視圖。該視圖可以用來查看“信息系”的學(xué)生的學(xué)號、姓名、年齡和系名.

2、并保證對該視圖的修改滿足系名為信息系的條件。(6)建立名為UV_Student的加密視圖。該視圖可以用來查看每個(gè)學(xué)生選修的課程門數(shù)和平均成績.(7)利用UV_Student視圖,查詢平均成績在80分以上的學(xué)生學(xué)號。(8)能否利用視圖UV_Student,修改某個(gè)學(xué)生的平均成績?(9)刪除視圖UV_Student。 2、數(shù)據(jù)更新 (1)向STUDENT表增加如下記錄:SnoSnameSsexSageSaddressSdept95011王一鳴男20福州市計(jì)算機(jī)系(2)將學(xué)號'95011',成績80,以及課程表中的所有課程號插入到SC表中。(3)建立與表STUDENT同結(jié)構(gòu)的空表ST

3、UD。然后利用INSERT命令把表STUDENT中年齡大于19的學(xué)生記錄添加到表STUD。(注意:可以使用select into語句實(shí)現(xiàn)同結(jié)構(gòu)空表的創(chuàng)建,再使用insert命令插入記錄;或者使用單條select into語句實(shí)現(xiàn)等同的功能)(4)為“95002"的學(xué)生增加選修“操作系統(tǒng)”和“數(shù)據(jù)結(jié)構(gòu)”這兩門課的選課記錄。(5)把課程名為“操作系統(tǒng)”的成績從成績表SC中刪除。(試用三種方式完成) (6)將女生的成績提高10%.(試用三種方式完成)(7)如果學(xué)生“張三”的數(shù)據(jù)結(jié)構(gòu)的成績低于65,則加上10分。(8)將成績最低的學(xué)生的成績加上10分.(9)將前3名成績最高的學(xué)生的成績減去1

4、0分。(10)為沒有選課的學(xué)生自動(dòng)增加選修“01”課程的選課記錄。(11)把選修“數(shù)學(xué)”不及格的成績?nèi)扛某煽罩?。?2)刪除成績低于總平均成績的女生的選課記錄。三、實(shí)驗(yàn)環(huán)境四、調(diào)試過程五、實(shí)驗(yàn)結(jié)果六、總結(jié)通過此次實(shí)驗(yàn):1. 我知道了視圖不是一張真實(shí)的表格,是一個(gè)虛擬的存在形式。2. 掌握了對視圖的創(chuàng)建(create or replace):當(dāng)視圖不存在時(shí)可使用create進(jìn)行創(chuàng)建;而如果不確定視圖是否已存在,但此時(shí)又需要建立一張此名稱的視圖時(shí),可使用replace創(chuàng)建,如果視圖名已存在也不會(huì)出現(xiàn)沖突,而是進(jìn)行替換.3. 在創(chuàng)建視圖時(shí)如果使用了with check option表示在視圖上執(zhí)行

5、UPDATEINSERT或DELETE操作時(shí),要保證所修改的行滿足視圖定義中的謂詞條件,即SELECT查詢子句中的限定條件:如Where條件,這樣可以確保數(shù)據(jù)修改后仍可通過視圖看到修改的數(shù)據(jù)。4. 分清楚了對視圖結(jié)構(gòu)的修改(alter)、對視圖數(shù)據(jù)的修改(update)。同時(shí)對視圖上的計(jì)算列、內(nèi)置函數(shù)列和行集合函數(shù)列不能修改。5. 知道了對視圖數(shù)據(jù)的刪除操作(delete)。6. 通過第二題的訓(xùn)練也使我對數(shù)據(jù)庫數(shù)據(jù)的更新語句有了更多的體會(huì)和認(rèn)識.7. 第二題第五小題,要求三種方法,只寫出了兩種,第三種有點(diǎn)沒轍.而其他題目有的沒要求,因?yàn)樵谒伎歼^程有別的思路,也有多寫了相關(guān)方法。附錄: -1、視

6、圖-(1)建立名為UV_SC的視圖.該視圖可以讓我們看到每個(gè)學(xué)生的姓名、選修課程名和成績。create view UV_SCasselect sname,cname,gradefrom student s,course c,scwhere s。sno=sc。sno and o=sc。cnoselect * from UV_SC(2)利用UV_SC視圖,查看平均成績在分以上的學(xué)生姓名。select snamefrom UV_SCgroup by snamehaving avg(grade)>80-(3)建立名為UV_Course的視圖,該視圖顯示每門課的課程名和選修該課程的學(xué)生人數(shù)。cre

7、ate view UV_Courseasselect cname,count(*) as'選修人數(shù)'from course c,scwhere o=ogroup by cnameselect from UV_Course-(4)修改視圖UV_Course,在視圖中增加一列,顯示選修該課程所有學(xué)生的平均成績。alter view UV_Courseasselect cname,count() as 選修人數(shù)',avg(grade) as '平均成績from course c,scwhere o=ogroup by cnameselect * from UV_Cou

8、rse-(5)建立名為UV_IS_Depart的視圖。該視圖可以用來查看“信息系”的學(xué)生的學(xué)號、姓名、年齡和系名。并保證對該視圖的修改滿足系名為信息系的條件。create view UV_IS_Departasselect sno,sname,sage,sdeptfrom student swhere sdept='信息系with check option select from UV_IS_Depart-(6)建立名為UV_Student的加密視圖。該視圖可以用來查看每個(gè)學(xué)生選修的課程門數(shù)和平均成績.create view UV_Student(sno,course_no,avg_g

9、rade)with encryptionasselect sno,count(),avg(grade)from scgroup by snoselect from UV_Student-(7)利用UV_Student視圖,查詢平均成績在分以上的學(xué)生學(xué)號.select snofrom UV_Studentwhere avg_grade>=80-(8)能否利用視圖UV_Student,修改某個(gè)學(xué)生的平均成績?update UV_Studentset avg_grade=70where sno=95001-(9)刪除視圖UV_Student。drop view UV_Student2、數(shù)據(jù)更新

10、-(1)向STUDENT表增加如下記錄:SnoSnameSsexSageSaddressSdept-95011王一鳴男20福州市計(jì)算機(jī)系insert into student(sno,sname,ssex,sage,saddress,sdept)values(95011',王一鳴','男',20,'福州市',計(jì)算機(jī)系')alter table studentadd saddress varchar(50) null-修改表結(jié)構(gòu),增加saddress列select *from studentwhere sno=95011'(2)將學(xué)

11、號',成績,以及課程表中的所有課程號插入到SC表中。insert into sc(sno,cno,grade)select 95011,cno,80from courseselect * from sc(3)建立與表STUDENT同結(jié)構(gòu)的空表STUD。然后利用INSERT命令把表STUDENT中年齡大于的學(xué)生記錄添加到表STUD。(注意:可以使用select into語句實(shí)現(xiàn)同結(jié)構(gòu)空表的創(chuàng)建,再使用insert命令插入記錄;或者使用單條select into語句實(shí)現(xiàn)等同的功能)-法一select * into STUDfrom studentwhere sage19-法二select

12、into STUDfrom studentwhere 1=0insert into STUD(sno,sname,sage,ssex,sdept,saddress)select sno,sname,sage,ssex,sdept,saddress from studentwhere sage>19select * from STUD-(4)為“”的學(xué)生增加選修“操作系統(tǒng)"和“數(shù)據(jù)結(jié)構(gòu)”這兩門課的選課記錄。insert into sc(sno,cno,grade)select 95002,cno,null from coursewhere cname=操作系統(tǒng) or cname=

13、數(shù)據(jù)結(jié)構(gòu)'select * from sc(5)把課程名為“操作系統(tǒng)”的成績從成績表SC中刪除。(試用三種方式完成)-法一delete from sc where cno in(select cno from course where cname='操作系統(tǒng)' )-法二delete from sc where exists(select cno from course cwhere cname='操作系統(tǒng) and o=sc。cno)-法三-(6)將女生的成績提高。(試用三種方式完成)-法一update scset grade=grade*1。1where sno

14、 in(select snofrom studentwhere ssex=女)-法二update scset grade=grade*1。1where exists(select snofrom student swhere ssex=女 and s。sno=sc。sno)-法三update scset grade=grade*1.1where(select count()from student swhere s。sno=sc.sno and ssex=女')=(select count(*) from course where cno=sc。cno)-(7)如果學(xué)生“張三”的數(shù)據(jù)結(jié)

15、構(gòu)的成績低于,則加上分。update scset grade=grade+10where exists(select snofrom student swhere s。sno=sc。sno and sname=張三'and cno in(select cnofrom coursewhere cname='數(shù)據(jù)結(jié)構(gòu))-查看結(jié)果select sname,cname,gradefrom student s,course c,scwhere s.sno=sc。sno and c。cno=sc。cno and sname=張三 and cname='數(shù)據(jù)結(jié)構(gòu)-(8)將成績最低的學(xué)

16、生的成績加上分。update scset grade=grade+10where grade in(select min(grade)from sc)-(9)將前名成績最高的學(xué)生的成績減去分。update scset grade=grade10where grade in(select top 3 gradefrom scorder by grade desc)-(10)為沒有選課的學(xué)生自動(dòng)增加選修“”課程的選課記錄。insert into sc(sno,cno,grade)select sno,01',null from studentwhere sno not in(select distinct(sno)-不顯示重復(fù)值from sc)select from sc-(11)把選修“數(shù)學(xué)”不及格的成績?nèi)扛某煽罩?。update scset grade=nullwhere sno in(select snofrom course cwhere o=c。cno and cname='數(shù)學(xué) and grade60)-(12)刪除成績低于總平均成績的女生的選課記錄.-法一delete from sc刪除該女生成績低于總平均成績的該選修記錄where sno in(select s。snofro

溫馨提示

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

最新文檔

評論

0/150

提交評論