合工大数据库上机实验2.docx
《合工大数据库上机实验2.docx》由会员分享,可在线阅读,更多相关《合工大数据库上机实验2.docx(39页珍藏版)》请在冰豆网上搜索。
合工大数据库上机实验2
《数据库及应用》课程实验报告
实验名称:
VisualFoxPro6.0的基本操作
实验类型:
验证设计
实验学时:
8学时
学号:
姓名:
班级:
指导教师:
罗贺
实验地点:
管理学院一号楼四楼机房
实验时间:
2012年11月19日、26日
二〇一二年十二月十日
添加30条数据
(3)求每门课的平均成绩,并把结果存入average表;
解:
USEh:
\数据库实验作业二\实验二\score表.dbfEXCLUSIVE
selescore表.Cno,avg(score表.score)as平均分;
fromscore表;
intotableaverage;
groupbyscore表.Cno
Browse
截图:
(4)将学生“马丽鹃”的出生日期改为“1982.8.20”;
解:
USEh:
\数据库实验作业二\实验二\student表.dbfEXCLUSIVE
editforsname='马丽娟'
截图:
(5)将所有学生的zipcode属性列值填补上;
解:
replZipcodewith230006
replallZipcodewith230006
USEh:
\student.dbfEXCLUSIVE
modifystructure
replallZipcodewith230006
截图:
(6)将average表中的所有课程的平均成绩置零;
解:
USEh:
\数据库实验作业二\实验二\average.dbfEXCLUSIVE
replall平均分with0
截图:
(7)删除average表中的课程号为‘c007’的平均成绩记录;
解:
USEh:
\数据库实验作业二\实验二\average.dbfEXCLUSIVE
deleteforCno='C007'
browse
pack
Browse
截图:
(8)删除所有average表中平均成绩记录;
解:
deleteall
pack
browse
截图:
(9)建立一个临时学生信息表(tstudent),删除该表中的学号前六位为‘001011’的所
有学生记录。
解:
Select*;
fromstudent;
intocursortstudent;
wheresubstr(Sno,1,6)!
='001011'
browse
截图:
(10)查询全体学生的学号与姓名;
解:
SelectSno,Sname;
Fromstudent
截图:
(11)查询全体学生的学号、姓名、所属班级;
解:
SelectSno,Sname,Sclass;
Fromstudent
截图:
(12)查询全体学生的详细记录;
解:
Select*;
Fromstudent
截图:
(13)查询全体学生的姓名及其年龄;
解:
SelectSname,year(date())-year(Sbirthday)asage;
Fromstudent
截图:
(14)查询全体学生的姓名、出生年份;
解:
SelectSname,Sbirthday;
Fromstudent
截图:
(15)查询所有修过课的学生的学号;
解:
Selectstudent.Sno;
Fromscore,student;
Wherescore.Sno=student.Sno
截图:
(16)查询“信管系0101”班全体学生名单;
解:
SelectSname;
Fromstudent;
WhereSclass='信管系0101'
截图:
(17)查询查询所有年龄在27岁以下的学生姓名及其年龄;
解:
SelectSname,year(date())-year(Sbirthday)asage;
Fromstudent;
Whereyear(date())-year(Sbirthday)<=27
截图:
(18)查询考试成绩有不及格的学生的学号;
解:
SelectSno;
Fromscore;
WhereScore<60
截图:
(19)查询年龄在15至28岁之间的学生姓名、班级和年龄;
解:
SelectSname,Sclass,year(date())-year(Sbirthday)asage;
Fromstudent;
Whereyear(date())-year(Sbirthday)>15
andyear(date())-year(Sbirthday)<28
截图:
(20)查询年龄不在15至28岁之间的学生姓名、班级和年龄;
解:
SelectSname,Sclass,year(date())-year(Sbirthday)asage;
Fromstudent;
Whereyear(date())-year(Sbirthday)<=15
oryear(date())-year(Sbirthday)>=28
截图:
(21)查询“信管系0101”和“电商系0102”班的学生的姓名和班级信息;
解:
SelectSname,Sclass;
Fromstudent;
WhereSclass='信管系0101'orSclass='电商系0102'
截图:
(22)查询既不是“信管系0101”也不是“电商系0102”班的学生的姓名和班级信息;
解:
SelectSname,Sclass;
Fromstudent;
WhereSclass!
='信管系0101'andSclass!
='电商系0102'
截图:
(23)查询学号为“011113104”的学生的详细情况;
解:
Select*;
Fromstudent;
WhereSno='011113104'
截图:
(24)查询学号以“0111”打头的学生信息;
解:
Select*;
Fromstudent;
Wheresubstr(Sno,1,4)='0111'
截图:
(25)查询所有姓“张”学生的学号、姓名、性别、年龄;
解:
SelectSno,Sname,year(date())-year(Sbirthday)asage;
Fromstudent;
WhereSnamelike'张%'
截图:
(26)查询名字中第二个字有“海”字的学生的学号、姓名、性别、年龄;
解:
SelectSno,Sname,year(date())-year(Sbirthday)asage;
Fromstudent;
Wheresubstr(Sname,3,2)='海'
截图:
(27)查询所有不姓“刘”学生的姓名;
解:
SelectSname;
Fromstudent;
Wheresubstr(Sname,1,2)!
='刘'
截图:
(28)查询课程号以“C”开头的最后两个字母为“05”的课程号和课程名;
解:
SelectCno,Cname;
Fromcourse;
WhereCnolike'C%'andsubstr(Cno,3,2)='05'
截图:
(29)某些学生选修某门课程后没有参加考试,所以有选修课记录,但没有考试成绩,试查
找缺少考试成绩的学生和相应的课程号;
解:
SelectSno,Cno;
Fromscore;
WhereScore=0
截图:
(30)查找全部有成绩记录的学生学号、课程号;
解:
SelectSno,Cno;
Fromscore;
WhereScore!
=0
截图:
(31)查找“电商系0101”班年龄在27岁以下的学生学号、姓名;
解:
SelectSno,Sname;
Fromstudent;
WhereSclass='电商系0101'andyear(date())-year(Sbirthday)<27
截图:
(32)查找选修了“C001”号课程的学生学号及其成绩,查询结果按分数降序排序;
解:
SelectSno,Score;
Fromscore;
WhereCno='C001';
OrderbyScoredesc
截图:
(33)查询全体学生情况,查询结果按所在班级升序排列,对同一班级中的学生按年龄降序
排列;
解:
Select*,year(date())-year(Sbirthday)asage;
Fromstudent;
OrderbySclassasc,agedesc
截图:
(34)查询学生总人数;
解:
Selectcount(Sno)as学生总人数;
Fromstudent
截图:
(35)查询选修了课程的学生人数;
解:
Selectcount(Sno)as选修了课程的学生人数;
Fromscore
截图:
(36)在所有课程中查询最高分的学生学号和成绩;
解:
SelectSno,max(Score)as最高分;
Fromscore
截图:
(37)查询学习“C001”课程的学生最高分数;
解:
Selectmax(Score)as最高分数;
Fromscore;
WhereCno='C001'
截图:
(38)计算各个课程号与相应的选课人数;
解:
SelectCno,count(*)as选课人数;
Fromscore;
GroupbyCno
截图:
(39)查询“电商系0102”班选修了两门课程以上的学生学号、姓名;
解:
Selectstudent.Sno,student.Sname,count(*)as选课门数;
Fromscore,student;
WhereSclass='电商系0102'andscore.Sno=student.Sno
GroupbyCno;
havingcount(*)>=2
截图:
(40)自然连接student和score表;
解:
Select*;
Fromstudentfulljoinscore;
Onstudent.Sno=score.Sno
截图:
(41)使用自身连接查询每一门课程的间接先行课(即先行课的先行课)
解:
Selectx.Cno,y.Cpno;
Fromcourseasx,courseasy;
Wherex.Cpno=y.Cno
Groupbyx.Cno
截图:
(42)使用复合条件连接查询选修“c001”号课程且成绩在90分以上的所有同学;
解:
Selectstudent.Sno,student.Sname,score.Score;
Fromstudent,score;
Wherestudent.Sno=score.Sno;
andscore.Cno='C001';
andscore.Score>=90
截图:
(43)使用复合条件连接查询每个学生选修的课程名及其成绩;
解:
Selectcourse.Cname,score.Score;
Fromcourse,score;
Wherecourse.Cno=score.Cno
截图:
(44)查询选修了全部课程的学生;
解:
Selectstudent.Sno,student.Sname;
Fromstudent;
WhereSnoin;
(selectscore.Sno;
Fromscore;
Groupbyscore.Sno;
Havingcount(*)=7)
截图:
(45)查询至少选修全部学分数为4个学分的课程的学生的学号、姓名;
解:
selectstudent.Sno,student.Sname;
fromstudent,score,course;
wherestudent.Sno=score.Sno;
andscore.Cno=course.Cno;
groupbyscore.Sno;
havingsum(course.Credit)>=4
截图:
(46)查询所有选修了C001号课程的学生学号、姓名;
解:
Selectstudent.Sno,student.Sname;
Fromstudent;
WhereSnoin;
(selectscore.Sno;
Fromscore;
Wherescore.Cno='C001')
截图:
(47)查询选修了课程C001或c007的学生学号、姓名;
解:
Selectstudent.Sno,student.Sname;
Fromstudent;
WhereSnoin;
(selectscore.Sno;
Fromscore;
Wherescore.Cno='C001'orscore.Cno='C007')
截图:
(48)查询“会计系0102”班的学生及年龄不大于27岁(现有年龄)的学生;
解:
Select*;
Fromstudent;
WhereSclass='会计系0102'andyear(date())-year(Sbirthday)<=27
截图:
(49)查询既选修了课程C001又选修了课程c007的所有学生学号、姓名;
解:
Selectstudent.Sno,student.Sname;
Fromstudent;
WhereSnoin;
(selectscore.Sno;
Fromscore;
Wherescore.Cnoin('C001','C007');
Groupbyscore.Sno;
Havingcount(Cno)=2)
截图:
(50)查询选修了课程名为“数据库原理”的学生的学号、姓名、性别、年龄;
解:
Selectstudent.Sno,student.Sname,year(date())-year(Sbirthday)asage;
fromstudent,score,course;
wherecourse.Cname='数据库原理';
andstudent.Sno=score.Sno;
andscore.Cno=course.Cno
截图:
(51)查询其他班中比“信管系0101”班所有学生年龄都小的学生名单;
解:
SelectSname;
Fromstudent;
WhereSbirthday>all;
(selectSbirthday;
Fromstudent;
WhereSclass='信管系0101')
截图:
(52)查询与“齐振国”在同一个班学习的学生学号、姓名、性别、年龄;
解:
SelectSno,Sname,year(date())-year(Sbirthday)asage;
Fromstudent;
WhereSclassin;
(selectSclass;
Fromstudent;
WhereSname='齐振国')
截图:
(53)建立“信管系0101”班学生的视图,定义视图名为“info_student1”;
截图:
(55)建立“信管系0101”班选修了“C001”课程的学生的视图,定义视图名为
“info_C001_student1”;
截图:
(56)建立“信管系0101”班选修了“C001”课程且成绩在90分以上的学生的视图,定义
视图名为“info_c001_student2”;
截图:
(57)定义一个反映学生年龄的视图,定义视图名为“vbirthday_student”;
截图:
(58)将学生表中所有女生记录定义为一个视图,视图名为“vfemale_student”;
截图:
(59)将学生的学号及其平均成绩定义为一个视图,视图名为“vaverage_student”;
截图:
(60)删除视图“info_student1”,删除后即重建;
解:
Deleteviewinfo_student1
截图:
(61)在“信管系0101”班学生视图中找出年龄小于27岁(现在的年龄)的学生;
解:
useinfo_student2
select*;
frominfo_student2;
whereyear(date())-year(Sbirthday)<27
截图:
(62)利用视图查询“信管系0101”班选修了“C001”课程的学生;
解:
SelectSname;
Fromviewinfo_C001_student2
截图:
(63)通过“信管系0101”班info_student2视图中学号“011111103”的学生姓名改为“潘
长江”;
解:
Modifyviewinfo_student2
截图:
(63)向“信管系0101”班info_student1视图中插入一个新学生记录,其中:
学号:
011111136,姓名:
张艺谋,性别:
男,出生日期:
1987.11.9;
截图:
(65)通过视图info_student1删除信管系0101班学号为“011111135”、姓名为“黄健中”
的学生记录;
解:
Deletefrominfo_student1;
WhereSno='011111135'
截图: