![数据库实验报告模版_第1页](http://file4.renrendoc.com/view/11b51ffc01810150d5d09c590ff4fa64/11b51ffc01810150d5d09c590ff4fa641.gif)
![数据库实验报告模版_第2页](http://file4.renrendoc.com/view/11b51ffc01810150d5d09c590ff4fa64/11b51ffc01810150d5d09c590ff4fa642.gif)
![数据库实验报告模版_第3页](http://file4.renrendoc.com/view/11b51ffc01810150d5d09c590ff4fa64/11b51ffc01810150d5d09c590ff4fa643.gif)
![数据库实验报告模版_第4页](http://file4.renrendoc.com/view/11b51ffc01810150d5d09c590ff4fa64/11b51ffc01810150d5d09c590ff4fa644.gif)
![数据库实验报告模版_第5页](http://file4.renrendoc.com/view/11b51ffc01810150d5d09c590ff4fa64/11b51ffc01810150d5d09c590ff4fa645.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《数据库系统原理》课程试验姓名:班级:学号:佛山科学技术学院计算机系12月
目录TOC\o"1-3"\h\u15968一.试验需用表格 311469二.试验内容 5316452.1SQL数据定义 5164102.2试验二SQL数据查询 787772.3试验三连接、嵌套和集合查询 11259762.4试验四SQL的数据更新 16134782.5试验五视图的定义和维护 18151332.6试验六触发器和存储过程 2320768三.试验感想 27一.试验需用表格学生-课程数据库xskc中用到的三个表文献如下:学生表:StudentSno(学号)Sname(姓名)Ssex(性别)Sage(年龄)Sdept(所在系)李勇男20CS(计算机科学系)刘晨女19CS(计算机科学系)王敏女18MA(数学系)张立男19IS(信息系)课程表:CourseCno(课程号)Cname(课程名)Cpno(先修课)Ccredit(学分)1数据库542数学23信息系统144操作系统635数据构造746数据处理27PASCAL64学生选课表:SCSno(学号)Cno(课程号)Grade(成绩)192285388290380
二.试验内容2.1SQL数据定义一、试验目的和规定1.掌握运用SQL查询分析器和企业管理器进行数据库及基本表的定义、删除与修改;2.掌握索引的建立与删除的措施。二、试验内容与环节(一)建立数据库通过企业管理器或查询分析器建立学生-课程数据库xskc。createdatabasexskcon(name=xskc_data,filename='e:\sjksy\xskc_data.mdf')logon(name=xskc_log,filename='e:\sjksy\xskc_log.ldf')注:先在E:盘上建立一种文献夹(例如:E:\sjksy),数据库文献保留到自建的文献夹中。(二)基本表的定义、修改与删除1.定义基本表运用查询分析器或企业管理器创立基本表,并输入数据。【题1-01】建立一种学生表Student,它由学号Sno、姓名Sname、性别Ssex、年龄Sage、所在系Sdept五个属性构成。规定“学号”为主键,“姓名”不能为空,“性别”默认值为“男”。CREATETABLEStudent(SnoCHAR(9)PRIMARYKEY,SnameCHAR(20)NOTNULL,SsexCHAR(2)DEFAULT‘男’,SageINT,SdeptCHAR(20));阐明:在MicrosoftSQLServer的查询分析器(QueryAnalyzer)中使用单条SQL语句,其末尾不需要分号“;”作为命令结尾标识。一般,SQLServer对大多数末尾带有分号的SQL命令都能顺利执行,但对少数的SQL命令,末尾若带分号,则SQLServer会给出错误信息提醒。例如,若在试验五的例1的SQL命令末尾加上一种分号“;”,SQLServer就会出现“Incorrectsyntaxnear';'”的提醒,虽然SQLServer实际上已经执行了该命令。【题1-02】建立课程表Course,它由课程号Cno、课程名Cname、先修课Cpno、Ccredit学分四个属性构成。规定“课程号”为主键,“课程名”属性不能为空。CREATETABLECourse(CnoCHAR(4)PRIMARYKEY,CnameCHAR(40)NOTNULL,CpnoCHAR(4),CcreditINT);【题1-03】建立学生选修课表SC,包括学号Sno、课程号Cno、成绩Grade三个字段。规定建立主键及与student、kc表联接的外键,并创立检查约束(Grade>=0andGrade<=100)。CREATETABLESC(SnoCHAR(9),CnoCHAR(4),GradeINT,PRIMARYKEY(Sno,Cno),FOREIGNKEY(Sno)REFERENCESStudent(Sno),FOREIGNKEY(Cno)REFERENCESCourse(Cno));2修改基本表运用查询分析器或企业管理器修改基本表。【题1-04】向基本表Student中增长“入课时间”属性列,其属性名为S_entrance,数据类型为日期型。ALTERTABLEStudentADDS_entranceDATETIME;
【题1-05】将Student表中Sage(年龄)的数据类型改为SMALLINT型。ALTERTABLEStudentALTERCOLUMNSageSMALLINT;【题1-06】增长课程名称必须取唯一值的约束条件。ALTERTABLECourseADDUNIQUE(Cname);【题1-07】将Student表的Sdept列容许空值的属性更改为不容许为空。ALTERTABLEStudentALTERCOLUMNSdeptCHAR(20)NOTNULL;【题1-08】删除Student表中的S_entrance列。ALTERTABLEStudentDROPCOLUMNS_entrance;3删除基本表【题1-09】删除Student表。DROPTABLEStudent;阐明:此表删除后,请立即将其建立起来,以便背面的例子使用。(三)索引的建立和删除1建立索引【题1-10】在基本表Student的Sname(姓名)列上建立一种聚簇索引,并且Student中的物理记录将按照Sname值的升序寄存。其语句为:CREATECLUSTEREDINDEXStu_SnameONStudent(Sname);【题1-11】分别为学生-课程数据库中的Student,Course,SC三个表建立索引。其中Student表按Sno(学号)升序建唯一索引,Course表按Cno(课程号)升序建唯一索引,SC表按Sno(学号)升序和Cno(课程号)号降序建唯一索引。其语句为:CREATEUNIQUEINDEXStu_SnoONStudent(Sno);CREATEUNIQUEINDEXCou_CnoONCourse(Cno);CREATEUNIQUEINDEXSCnoONSC(SnoASC,CnoDESC);2删除索引【题1-12】删除Student表的Stu_Sname索引。DROPINDEXStudent.Stu_Sname;
2.2试验二SQL数据查询一、试验目的和规定1.掌握SQLServer查询分析器的使用措施,加深对SQL查询语句的理解。2.纯熟掌握查询语句的一般格式。3.纯熟掌握数据查询中的排序、分组、记录、计算和集合的操作措施。二、试验内容及环节1无条件查询【题2-01】查询全体学生的详细记录。这是一种无条件的选择查询,其命令为:SELECT*/*这里的“*”等价于ALL*/FROMStudent;其成果为Student表中的所有数据。【题2-02】查询全体学生的姓名(Sname)、学号(Sno)、所在系(Sdept)。这是一种无条件的投影查询,其命令为:SELECTSname,Sno,SdeptFROMStudent;【题2-03】查询全体学生的学号(Sno)、姓名(Sname)及出生年份。由于SELECT子句的<目的列体现式>不仅可以是表中的属性列,也可以是体现式,故可以查询通过计算的值。其命令为:SELECTSno,Sname,-Sageas‘-Sage’FROMStudent;【题2-04】查询全体学生的学号、姓名、出生年份和所在系,规定用小写字母表达所有系名。其命令为:SELECTSno,Sname,-Sage'YearofBirth',LOWER(Sdept)SdeptFROMStudent;【题2-05】查询选修了课程的学生学号。其命令为:SELECTDISTINCTSnoFROMSC;2条件查询【题2-06】查询数学系(MA)全体学生的学号(Sno)和姓名(Sname)。其命令为:SELECTSno,SnameFROMStudentWHERESdept='MA';【题2-07】查询考试成绩有不及格的学生的学号。SELECTDISTINCTSnoFROMSCWHEREGrade<60;【题2-08】查询所有年龄在20岁如下的学生姓名(Sname)及年龄(Sage)。其命令为:SELECTSname,SageFROMStudentWHERESage<20;【题2-09】查询所有年龄在18~20岁(包括18岁和20岁)之间的学生姓名(Sname)及年龄(Sage)。其命令为:SELECTSname,SageFROMStudentWHERESage=18ANDSage<=22;或SELECTSname,SageFROMStudentWHERESageBETWEEN18AND22;【题2-10】查询年龄不在18-20岁之间的学生姓名(Sname)及年龄(Sage)。其命令为:SELECTSname,SageFROMStudentWHERESageNOTBETWEEN18AND20;【例11】查询计算机系、数学系和信息系学生的学号(Sno)、姓名(Sname)和性别(Ssex)。其命令为:SELECTSno,Sname,Ssex
FROMStudentWHERESdeptIN('CS','MA','IS');等价于:SELECTSno,Sname,SsexFROMStudentWHERESdept='CS'ORSdept='MA'ORSdept='IS';【例12】查询既不是信息系(IS)、数学系(MA)、也不是计算机系(CS)的学生的姓名(Sname)和性别(Ssex)。其命令为:SELECTSname,SsexFROMStudentWHERESdeptNOTIN('IS','MA','CS');【例13】查询所有姓刘的学生的姓名(Sname)、学号(Sno)和性别(Ssex)。其命令为:SELECTSname,Sno,SsexFROMStudentWHERESnameLIKE'刘%';【例14】查询姓“刘”且全名为4个中文的学生的姓名(Sname)和所在系(Sdept)。其命令为:SELECTSname,Sdept
FROMStudentsWHERESnameLIKE'刘____';【例15】查询所有不姓刘的学生姓名(Sname)和年龄(Sage)。SELECTSname,SageFROMStudentsWHERESnameNOTLIKE'刘%';【例16】查询课程名为“DB_设计”的课程号(Cno)和学分(Ccredit)。其命令为:SELECTCno,CcreditFROMCourseWHERECnameLIKE'DB\_设计'ESCAPE'\';【例17】查询以"DB_"开头,且倒数第2个中文字符为“设”的课程的详细状况。其命令为:SELECT*FROMCourseWHERECnameLIKE'DB\_%设__'ESCAPE'\';【例18】假设某些学生选修课程后没有参与考试,因此有选课记录,但没有考试成绩。试查询缺乏成绩的学生的学号(Sno)和对应的课程号(Cno)。其命令为:SELECTSno,CnoFROMReportsWHEREGradeISNULL;【例19】查询所有有成绩的学生学号(Sno)和课程号(Cno)。其命令为:SELECTSno,Cno
FROMSC
WHEREGradeISNOTNULL;【题20】查询计算机系年龄在20岁如下的学生姓名。3查询成果排序例24查询选修了3号课程的学生的学号(Sno)和成绩(Grade),并按成绩降序排列。其命令为:SELECTSno,GradeFROMSCWHERECno='3'ORDERBYGradeDESC;【例25】查询全体学生状况,查询成果按所在系的系名(Sdpet)升序排列,同一系中的学生按年龄(Sage)降序排列。其命令为:SELECT*FROMStudentORDERBYSdept,SageDESC;4集函数的使用例26查询学生总人数。其命令为:SELECTCOUNT(*)FROMStudent;例27查询选修了课程的学生人数。其命令为:SELECTCOUNT(DISTINCTSno)FROMSC;例28计算选修2号课程的学生平均成绩。其命令为:SELECTAVG(Grade)FROMSCWHERECno='2';例29查询选修2号课程的学生最高分数。其命令为:SELECTMAX(Grade)FROMSCWHERECno='2';例30查询学生15122选修课程的总学分数。其命令为:SELECTSUM(Ccredit)FROMSC,CourseWHERESno='15122'ANDSC.Cno=Course.Cno;5查询成果分组例31求各个课程号(Cno)及对应的选课人数。其命令为:SELECTCno,COUNT(Sno)CntSnoFROMSCGROUPBYCno;例32查询选修了3门或3门以上课程的学生学号(Sno)。其命令为:SELECTSnoFROMReportsGROUPBYSnoHAVINGCOUNT(Cno)>3
2.3试验三连接、嵌套和集合查询一、试验目的和规定1.掌握SQLServer查询分析器的使用措施,加深对SQL查询语句的理解。2.纯熟掌握查询语句的一般格式。3.纯熟掌握连接、嵌套和集合查询的使用。二、试验内容及环节(一)连接查询1不一样表之间的连接查询【题3-01】查询每个学生及其选修课程的状况。本查询实际上是波及Student与SC两个表的连接操作。这两个表之间的联络是通过公共属性Sno实现的,因此,其操作命令为:SELECTStudent.*,SC.*FROMStudent,SCWHEREStudent.Sno=SC.Sno;阐明:若在以上等值连接中把目的列中反复的属性列去掉则为自然连接XE"自然连接",其命令为SELECTStudent.Sno,Sname,Ssex,Sage,Sdept,Cno,GradeFROMStudent,SCWHEREStudent.Sno=SC.Sno;2自身连接【例35】查`询每一门课的间接先修课(即先修课的先修课)。在Course表关系中,只有每门课的直接先修课信息,而没有先修课的先修课。要得到这个信息,必须先对一门课找到其先修课,再按此先修课的课程号,查找它的先修课程。这就需要要将Course表与其自身连接。为以便连接运算,这里为Course表取两个别名分别为A,B。则完毕该查询的SQL语句为:SELECTA.Cno,A.Cname,B.CpnoFROMCourseA,CourseBWHEREA.Cpno=B.Cno;3外连接【例36】把例33中的等值连接改为左连接。该左连接操作在SQLServer中的命令格式为:SELECTStudent.Sno,Sname,Ssex,Sdept,Cno,GradeFROMStudentLEFTJOINSCONStudent.Sno=SC.Sno;阐明:以上左连接操作也可以用如下的右连接操作替代,其成果完全同样。SELECTStudent.Sno,Sname,Ssex,Sdept,Cno,GradeFROMSCRIGHTJOINStudentONSC.Sno=Student.Sno;4复合条件连接【例37】【例38】查询每个学生的学号(Sno)、姓名(Sname)、选修的课程名(Cname)及成绩(Grade)。本查询波及到三个表的连接操作,完毕该查询的SQL语句如下:SELECTStudent.Sno,Sname,Cname,GradeFROMStudent,SC,CourseWHEREStudent.Sno=SC.SnoANDSC.Cno=Course.Cno;(二)嵌套查询1带谓词IN的嵌套查询【例39】查询与“李伟”在同一种系学习的学生学号(Sno)、姓名(Sname)和系名(Sdept)。该查询可构造嵌套查询实现,其SQL语句如下:SELECTSno,Sname,SdeptFROMStudentWHERESdeptIN(SELECTSdeptFROMStudentWHERESname=’李伟’);阐明:本例中的查询也可以用自身连接来完毕,其SQL语句如下:SELECTA.Sno,A.Sname,A.SdeptFROMStudentA,StudentBWHEREA.Sdept=B.SdeptANDB.Sname=’李伟’;【例40】查询选修了编号为“2”的课程的学生姓名(Sname)和所在系(Sdept)。SELECTSname,SdeptFROMStudentsWHERESnoIN(SELECTSnoFROMSCWHERECno='2');【例41】查询选修了课程名为“数据构造”的学生学号(Sno)和姓名(Sname)。本查询波及学号、姓名和课程名(Cname)三个属性。学号和姓名寄存在Student表中,课程名的寄存在Course表中,但Student与Course两个表之间没有公共属性,必须通过SC表建立它们之间的联络。因此本查询实际上波及三个关系的连接操作。SELECTSno,Sname/*③最终在Studen关系中*/FROMStudent/*取出Sno和Sname*/WHERESnoIN(SELECTSno/*②然后在SC关系中找出*/FROMSC/*选修了3号课程的学生学号*/WHERECnoIN(SELECTCno/*①首先在Course关系中*/FROMCourse/*找出“数据构造”的课程号*/WHERECname=‘数据构造’));/*成果为5号*/阐明:本查询同样可以用连接查询实现:SELECTS.Sno,SnameFROMStudentS,SCR,CourseCWHERES.Sno=R.SnoANDR.Cno=C.CnoANDC.Cname='数据构造';2带有比较运算符的嵌套查询【例42】将例39改为带有比较运算符的嵌套查询。由于一种学生只也许在一种系学习,因此子查询的成果是一种值,因此可以用=替代IN,其SQL语句如下:SELECTSno,Sname,SdeptFROMStudentWHERESdept=(SELECTSdeptFROMStudentWHERESname=’李伟’);3带谓词ANY或ALL的嵌套查询【例43】查询计算机系(CS)的不超过自动化系所有学生的年龄的学生姓名(Sname)和年龄(Sage)。其查询命令为SELECTSname,SageFROMStudentWHERESdept<>'CS'ANDSage<=ALL(SELECTSageFROMStudentWHERESdept='CS');阐明:本查询也可以用集函数来实现。其SQL语句如下:SELECTSname,SageFROMStudentWHERESdept<>'CS'ANDSage<=(SELECTMIN(Sage)FROMStudentWHERESdept='CS');4带谓词EXISTS的嵌套查询【例44】查询所有选修了编号为“1”课程的学生姓名(Sname)和所在系(Sdept)。本查询的SQL语句是:SELECTSname,SdeptFROMStudentWHEREEXISTS(SELECT*FROMSCWHERESno=Student.SnoANDCno='1');【例45】将例39改为带谓词EXISTS的查询,其SQL语句如下SELECTSno,Sname,SdeptFROMStudentAWHEREEXISTS(SELECT*FROMStudentsBWHEREB.Sdept=A.SdeptANDB.Sname=’李伟’);【例46】查询选修了所有课程的学生姓名(Sname)和所在系。由于没有全称量词,可将题目的意思转换成等价的用存在量词的形式:查询这样的学生,没有一门课程是他不选修的。其SQL语句为:SELECTSname,SdeptFROMStudentWHERENOTEXISTS(SELECT*FROMCourseWHERENOTEXISTS(SELECT*FROMSCWHERESno=Student.SnoANDCno=Course.Cno));(三)集合查询【例48】查询计算机系(CS)的学生或年龄不不小于20岁的学生信息。SELECT*FROMStudentWHERESdept='CS'UNIONSELECT*FROMStudentWHERESage<=20;【例49】查询计算机系(CS)的学生且年龄不不小于20岁的学生的交集,这实际上就是查询数学系中年龄不不小于20岁的学生。SELECT*FROMStudentWHERESdept='CS'ANDSage<=20;【例50】查询计算机系的学生与年龄不不小于20岁的学生的差集。本查询的等价说法是,查询数学系中年龄不小于20岁的学生。SELECT*FROMStudentWHERESdept='CS'ANDSage>20;
2.4试验四SQL的数据更新一、试验目的和规定掌握SQL数据插入、修改和删除语句的一般格式和使用措施。二、试验内容及环节1.插入数据【题4-01】将学生陈冬的信息(学号:15128;姓名:陈冬;性别:男;所在系:IS;年龄:18岁)插入到Student表中。INSERTINTOStudent(Sno,Sname,Ssex,Sdept,Sage)VALUES(‘15128’,’陈冬’,’男’,’IS’,18);或INSERTINTOStudent(Sno,Sname,Ssex,Sage,Sdept)VALUES(‘15128’,’陈冬’,’男’,18,’IS’);或INSERTINTOStudentVALUES(‘15128’,’陈冬’,’男’,18,’IS’);【题4-02】插入一条选课记录(’15128’,’1’)INSERTINTOSC(Sno,Cno)VALUES(‘15128’,’1’);【题4-03】设数据库中已经有一种关系History_Student,其关系模式与Student完全同样,试将关系Student中的所有元组插入到关系History_Student中去,其SQL命令为:INSERTINTOHistory_StudentSELECT*FROMStudent;【例4-04】对每一种系,求学生的平均年龄,并把成果存入表文献Dept_age中。Dept_age表文献属性为:Sdept(系名)、Avg_age(平均年龄)。INSERTINTODept_age(Sdept,Avg_age)SELECTSdept,AVG(Sage)FROMStudentGROUPBYSdept;2.修改数据【题4-05】将学号为“15121”的学生年龄改为22岁。即要修改满足条件的一种元组的属性值。UPDATEStudentSETSage=22WHERESno=’15121’;【题4-06】将所有学生的年龄增长1岁。即要修改多种元组的值。UPDATEStudentSETSage=Sage+1;【题4-07】将计算机科学系所有学生的成绩置零。由于学生所在系的信息在Student表中,而学习成绩在SC表中,因此,可以将SELECT子查询作为WHERE子句的条件体现式。故该更新规定的SQL命令为:UPDATESCSETGrade=0WHERE‘CS’=(SELECTSdeptFROMStudentWHEREStudent.Sno=SC.Sno);3.删除数据【题4-08】删除学号为15128的学生记录。DELETEFROMStudentWHERESno=’15128’;【题4-09】删除所有学生的选课记录。DELETEFROMSC;这条DELETE语句将删除SC的所有元组,使SC成为空表。【题4-10】删除计算机科学系所有学生的选课记录。DELETEFROMSCWHERE‘CS’=(SELECTSdeptFROMStudentWHEREStudent.Sno=SC.Sno);
2.5试验五视图的定义和维护一、试验目的和规定1.掌握SQL视图建立、修改和删除;2.掌握SQL视图查询。二、试验内容措施一:运用SQL语言实现视图的建立、删除、查询、更新(一)定义视图1建立视图【题5-01】建立数学系学生的视图,并规定进行修改和插入操作时仍需保证该视图只有数学系(MA)的学生,视图的属性名为Sno,Sname,Sage,Sdept。CREATEVIEWC_StudentASSELECTSno,Sname,Sage,SdeptFROMStudentWHERESdept=’MA’WITHCHECKOPTION【题5-02】建立学生的学号(Sno)、姓名(Sname)、选修课程名(Cname)及成绩(Grade)的视图。本视图由三个基本表的连接操作导出,其SQL语句如下:CREATEVIEWStudent_CRASSELECTStudent.Sno,Sname,Cname,GradeFROMStudent,SC,CourseWHEREStudent.Sno=SC.SnoANDSC.Cno=Course.Cno【题5-03】定义一种反应学生出生年份的视图。CREATEVIEWStudent_birth(Sno,Sname,Sbirth)ASSELECTSno,Sname,-SageFROMStudent2删除视图【题5-04】删除视图Student_birth。DROPVIEWStudent_birth;(二)查询视图【题5-05】在数学系的学生视图C_Student中找出年龄(Sage)不不小于20岁的学生姓名(Sname)和年龄(Sage)。SELECTSname,SageFROMC_StudentWHERESage<20;阐明:本例转换后的查询语句为:SELECTSname,SageFROMStudentWHERESdept=’MA’ANDSage<20;【题5-06】在Student_CR视图中查询成绩在85分以上的学生学号(Sno)、姓名(Sname)和课程名称(Cname)。SELECTSno,Sname,CnameFROMStudent_CRWHEREGrade>85;(三)更新视图【题5-07】将数学系(MA)学生视图C_Student中学号为15123的学生姓名改为“黄海”。UPDATEC_StudentSETSname='黄海'WHERESno='15123';阐明:DBMS自动转换为对基本表的更新语句如下:UPDATEStudentSETSname='黄海'WHERESno='15123'ANDSdept='数学';【题5-08】向数学系学生视图C_Student中插入一种新的学生记录,其中学号为“15124”,姓名为“王海”,年龄为20岁。INSERTINTOC_StudentVALUES('15124','王海',20,’MA’);【题5-09】删除数学系学生视图C_Student中学号为“15124”的记录。DELETEFROMC_StudentWHERESno=’15124’措施二:运用企业管理器和视图创立向导实现视图的建立、删除、查询、更新视图是根据子模式建立的虚拟表。一种视图可以由一种表构造,也可以由多种表构造。运用企业管理器和视图创立向导进行创立,查看和修改视图就如同对表的操作同样,非常轻易。1.创立视图下面运用了SQLServer中提供的视图创立向导,来实现建立计算机科学系(CS)选修了1号课程的学生视图。(1)打开企业管理器窗口,确认服务器,打开数据库文献夹,选中新视图所在的数据库(此例为xskc)。(2)选择菜单:[工具]|[向导](3)在如图5-1所示的向导选择对话框中,单击数据库左边的“+”号,使之展开。选择“创立视图向导”项,单击“确定”按键。图5-1向导选择对话框(4)进入创立视图向导后,首先出现的是欢迎使用创立视图向导对话框,其中简朴简介了该向导的功能。单击“下一步”后,就会出现选择数据库对话框。(5)在选择数据库对话框中,选择视图所属的数据库。本例的数据库为“xskc”。单击“下一步”按键,则进入选择表对话框。(6)在选择表对话框中,列出了指定数据库中所有顾客定义的表。顾客可以从中选择构造视图所需的一种表或者多种表,被选中的表成为构造视图的参照表。选择构造视图参照表的措施是:用鼠标单击表后的“包括在视图中”列,使复选框为选中状态。在本例的数据库中选中学生表(Student)和选课表(SC)。单击“下一步”按键,则进入选择对话框。(7)列选择对话框中以表格形式列出了创立视图参照表的所有属性,每个属性占表的一行,创立视图参照属性可以在表格中选出。选择视图参照属性的措施是用鼠标单击属性名后边的“选择列”列,使复选框为选中状态。本例中Student.Sno、Student.Sname、SC.Grade属性要被选中。单击“下一步”按键,进入创立视图的定义限制对话框,如图5-2所示。图5-2定义限制对话框(8)在定义限制对话框中,输入表的连接和元组选择条件。本例输入:WHERESdept=’CS’andStudent.Sno=SC.SnoandSC.Cno=’1’。单击“下一步”按键,出现视图名对话框。(9)在输入视图名对话框中输入所建视图的标识名。本例的视图名为“CSSC-View”。单击“下一步”按键,则出现视图创立完毕对话框。在完毕对话框中给出了根据前面对话框输入的内容译成的SQL语句。您可以认真阅读该SQL语句,假如发现与规定有不符合之处可以直接进行修改。确认无误后单击“完毕”按钮。随即出现一种告知顾客已成功创立视图的信息框,单击“确认”按钮后,整个创立视图工作就完毕了。2.查看和修改视图视图创立好后,就可以运用它进行查询信息了。假如发现视图的构造不能很好地满足规定,还可以在企业管理器对它进行修改。在企业管理器中修改视图构造需要首先选择服务器,数据库,并使数据库展开,然后用鼠标右击要修改的视图,在弹出的菜单上选择“设计视图”项,则弹出一种视图设计对话框,如图5-3所示。当对其修改完毕后关闭窗口,新的视图构造就会取代原先的构造。图5-3
2.6试验六触发器和存储过程一、试验目的1.通过试验使学生加深对数据完整性的理解,学会创立和使用触发器。2.纯熟创立存储过程,体会存储过程的作用。二、试验内容1.触发器①在学生表Student中定义一种触发器tri1,保证新添加的学生的年龄(Sage)在16~25岁之间。②在成绩表SC中定义一种触发器tri2,当修改一种记录时,保证此记录的成绩(Grade)在0~100分之间。③在学生表Student中创立一种触发器tri2,当删除学生表Student中学生时,自动删除成绩表SC中对应学生的选课记录。④在学生表Student中创立一种触发器tri4,当修改学生表Student中学生的学号时,自动修改成绩表SC中的对应学号值。并验证该触发器与否可以正常工作。⑤在学生表Student中创立一种触发器tri5,当删除学生表Student中学生时,自动删除成绩表SC中对应学生的选课记录;当修改学生表Student中学生的学号时,自动修改成绩表SC中的对应学号值。并验证该触发器与否可以正常工作。2.存储过程①运用存储过程查找Student表中所有人的记录②运用存储过程查找Student表中某学号的记录③运用存储过程查找Student表中某学号、某门课程的记录④计算出某学生的平均分⑤创立一种带返回值的存储过程,返回某人的平均成绩⑥创立一种存储过程pro6将课程中某门课程的学分修改为指定的值,其中某门课程的课程号、指定的值通过参数传递。并多次调用执行该存储过程来修改不一样的课程的学分值。三、详细实现1.触发器①在学生表Student中定义一种触发器tri1,保证新添加的学生的年龄(Sage)在16~25岁之间。【创立触发器】createtriggertri1onstudentforinsertasif(selectSagefrominserted)>25or(selectSagefrominserted)<16beginprint‘年龄在16-25岁之间’rollbackend【调用触发器】insertintoStudentvalues('31001','王涛','男',30,'IS')②在成绩表SC中定义一种触发器tri2,当修改一种记录时,保证此记录的成绩(Grade)在0~100分之间。createtriggertri2onSCforupdateasifnotexists(select*frominsertedwhereGradebetween0and100)print‘成绩应在0-100分之间’rollback注:就是插入语句后,假如inserted表(插入或更新影响行构成的表)内的值不在0-100之间,就撤销插入。【调用触发器】updateSCsetGrade=120whereSno='15122'
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年合肥货运资格证答题库
- 北师大版历史七年级上册第4课《夏商西周的更迭》听课评课记录
- 人教版历史七年级上册第7课《战国时期的社会变化》听课评课记录1
- 2024-2025学年高中物理专题07能量量子化和光的粒子性练习含解析
- 2024-2025学年高中语文课时作业12寄欧阳舍人书含解析粤教版选修唐宋散文蚜
- 行政人事部年终总结
- 美术组工作计划上学期
- 信息技术学科计划
- 营销总监年度工作计划
- 学生会成员新学期工作计划
- 海南省儋州市各县区乡镇行政村村庄村名明细及行政区划代码居民村民委员会
- 人力资源管理专业毕业设计论文
- 法理学-(第五版)完整版ppt全套教学教程课件(最新)
- 香港地图高清矢量可填充编辑PPT模板(精美)
- 《朝天子-咏喇叭》
- 氧化还原反应方程式的配平(八大配平技巧)-PPT课件
- 天津人社局解除劳动合同证明书
- (高清正版)JJF(浙)1090—2014薄片千分尺校准规范
- 2020年采购部年度目标计划 采购部工作目标
- 阳光分级阅读高一上The Emperor Penguin课件
- mil-std-1916抽样标准(中文版)
评论
0/150
提交评论