数据库原理及应用实验报告数据库原理及应用实验报告学院:信息科学与工程学院班级:计算机2010-1班学号:3100717109姓名:薛斌————————————————————————————————————————时间:2012年5月机房号:05503J得分:实验1创建数据库与数据表实验目的:1.熟悉SQLSERVER环境;2.掌握数据库和数据表的创建和删除,实践SQL的CREATE、ALTER和DROP命令;3.掌握数据表的创建和数据记录的插入方法。实验内容:2.创建供应系统“GYXT”数据库。(注:可采用可视窗体和SQL命令两种方法创建。)下面写出实现如下操作的SQL语句:(1)创建供应系统“GYXT”数据库。CREATEDATABASEGYXT;(2)建立供应商表S。CREATETABLES(SNOCHAR(4)PRIMARYKEY,SNAMEVARCHAR(20),CITYVARCHAR(20));(3)建立零件表P。CREATETABLEP(PNOCHAR(4)PRIMARYKEY,PNAMEVARCHAR(20),COLORVARCHAR(4),WEIGHTSMALLINT);(4)建立工程项目表J。CREATETABLEJ(JNOCHAR(4)PRIMARYKEY,JNAMEVARCHAR(20),CITYVARCHAR(20));数据库原理及应用实验报告第1页,共11页(5)建立供应情况表SPJ。CREATETABLESPJ(SNOCHAR(4)NOTNULL,PNOCHAR(4)NOTNULL,JNOCHAR(4)NOTNULL,QTYINT,PRIMARYKEY(SNO,PNO,JNO),FOREIGNKEY(SNO)REFERENCESS(SNO),FOREIGNKEY(PNO)REFERENCESP(PNO),FOREIGNKEY(JNO)REFERENCESJ(JNO));(6)应用INSERTINTO命令将相应数据写入到供应商表S、零件表P、工程项目表J和供应情况表SPJ四个数据表。INSERTINTOSVALUES('S1','精益','天津');INSERTINTOSVALUES('S2','万胜','北京');INSERTINTOSVALUES('S3','东方','北京');INSERTINTOSVALUES('S4','丰泰隆','上海');INSERTINTOSVALUES('S5','康健','南京');INSERTINTOPVALUES('P1','螺母','红',12);INSERTINTOPVALUES('P2','螺栓','绿',17);INSERTINTOPVALUES('P3','螺丝刀','蓝',14);INSERTINTOPVALUES('P4','螺丝刀','红',14);INSERTINTOPVALUES('P5','凸轮','蓝',40);INSERTINTOPVALUES('P6','齿轮','红',30);INSERTINTOJVALUES('J1','三建','北京');INSERTINTOJVALUES('J2','一汽','长春');INSERTINTOJVALUES('J3','弹簧厂','天津');INSERTINTOJVALUES('J4','造船厂','天津');INSERTINTOJVALUES('J5','机车厂','唐山');INSERTINTOJVALUES('J6','无线电厂','常州');INSERTINTOJVALUES('J7','半导体厂','南京');数据库原理及应用实验报告第2页,共11页INSERTINTOSPJVALUES('S1','P1','J1',200);INSERTINTOSPJVALUES('S1','P1','J3',100);INSERTINTOSPJVALUES('S1','P1','J4',700);INSERTINTOSPJVALUES('S1','P2','J2',100);INSERTINTOSPJVALUES('S2','P3','J1',400);INSERTINTOSPJVALUES('S2','P3','J2',200);INSERTINTOSPJVALUES('S2','P3','J4',500);INSERTINTOSPJVALUES('S2','P3','J5',400);INSERTINTOSPJVALUES('S2','P5','J1',400);INSERTINTOSPJVALUES('S2','P5','J2',100);INSERTINTOSPJVALUES('S3','P1','J1',200);INSERTINTOSPJVALUES('S3','P3','J1',200);INSERTINTOSPJVALUES('S4','P5','J1',100);INSERTINTOSPJVALUES('S4','P6','J3',300);INSERTINTOSPJVALUES('S4','P6','J4',200);INSERTINTOSPJVALUES('S5','P2','J4',100);INSERTINTOSPJVALUES('S5','P3','J1',200);INSERTINTOSPJVALUES('S5','P6','J2',200);INSERTINTOSPJVALUES('S5','P6','J4',500);数据库原理及应用实验报告第3页,共11页时间:2012年5月机房号:05503J得分:实验2简单查询和连接查询实验目的:1.熟练掌握SQLServer查询分析器的使用方法,加深对标准SQL查询语句的理解。2.熟练掌握简单表的数据查询、数据排序和数据连接查询的操作方法。实验内容:1.基于实验一创建的教学管理JXGL数据库,实现数据的基本查询操作。2.基于实验一创建的供应系统GYXT数据库,实现数据的基本查询操作。实验步骤:写出下列操作的SQL语句。1.在教学管理JXGL数据库中进行如下操作:(1)求数学系学生的学号和姓名。SELECTSno,SnameFROMSTUDENTWHERESdept='MA';(2)求选修了课程的学生学号。SELECTSnoFROMSC;(3)求选修了数学课的学生学号和成绩,并要求对查询结果按成绩降序排列,如果成绩相同则按学号升序排列。SELECTSC.Sno,SC.GradeFROMSC,COURSEWHERESC.Cno=COURSE.CnoANDCOURSE.Cname='数学'ORDERBYGradeDESC,Sno;(4)求选修数学课其且成绩在80-90之间的学生学号和成绩,并将成绩乘以系数0.8输出。SELECTSC.Sno,SC.Grade*0.8FROMSC,COURSEWHERESC.Cno=COURSE.CnoANDCname='数学'AND(GradeBETWEEN80AND90);(5)求数学系或计算机系姓刘的学生的信息。SELECT*FROMSTUDENTWHERESnameLIKE'刘%'AND(Sdept='MA'ORSdept='CS');数据库原理及应用实验报告第4页,共11页(6)求缺少了成绩的学生的学号和课程号。SELECTSno,CnoFROMSCWHEREGradeISNULL;(7)查询每个学生的情况以及他(她)所选修的课程。SELECTSTUDENT.Sno,Sname,Ssex,Sage,Sdept,COURSE.CnameFROMSTUDENT,COURSE,SCWHERESTUDENT.Sno=SC.SnoANDSC.Cno=COURSE.Cno;(8)求学生的学号、姓名、选修的课程名及成绩。SELECTSTUDENT.Sno,Sname,COURSE.Cname,GradeFROMSTUDENT,COURSE,SCWHERESTUDENT.Sno=SC.SnoANDCOURSE.Cno=SC.Cno;(9)求选修数学课且成绩为90分以上的学生学号、姓名、及成绩。SELECTSTUDENT.Sno,Sname,GradeFROMSTUDENT,COURSE,SCWHERESTUDENT.Sno=SC.SnoANDCOURSE.Cno=SC.CnoANDCOURSE.Cname='数学'ANDGrade90;(10)查询每一门课的间接先行课(即先行课的先行课)。SELECTCOURSE.CpnoFROMCOURSEWHERECOURSE.CnoIN(SELECTCpnoFROMCOURSE);数据库原理及应用实验报告第5页,共11页2.在供应系统GYXT数据库中进行如下操作:(1)求供应工程J1零件的供应商号SNO。SELECTSNOFROMSPJWHEREJNO='J1';(2)求供应工程J1零件P1的供应商号SNO。SELECTSNOFROMSPJWHEREJNO='J1'ANDPNO='P1';(3)统计每种零件的供应总量。SELECTPNO,SUM(QTY)FROMSPJGROUPBYPNO;数据库原理及应用实验报告第6页,共11页时间:2012年5月机房号:05503J得分:实验3嵌套查询和集合查询实验目的:1.熟练掌握SQLServer查询分析器的使用方法,加深对标准SQL查询语句的理解。2.熟练掌握数据查询中的嵌套、分组、统计、计算和组合的操作方法。实验内容:1.基于实验一创建的教学管理JXGL数据库,实现数据的高级查询操作。2.基于实验一创建的供应系统GYXT数据库,实现数据的基本查询操作。实验步骤:写出下列操作的SQL语句。1.在教学管理JXGL数据库中进行如下操作:(1)求选修了数学的学生的学号和姓名。SELECTSTUDENT.Sno,STUDENT.SnameFROMSTUDENTWHERESTUDENT.SnoIN(SELECTSC.SnoFROMSCWHERESC.CnoIN(SELECTCOURSE.CnoFROMCOURSEWHERECOURSE.Cname='数学'));(2)求数学课程成绩高于李勇的学生学号和成绩。SELECTSC.Sno,SC.GradeFROMSC,COURSEWHERESC.Cno=COURSE.CnoANDCOURSE.Cname='数学'ANDSC.Grade(SELECTSC.GradeFROMSC,STUDENT,COURSEWHERESTUDENT.Sname='李勇'ANDSC.Sno=STUDENT.SnoANDCOURSE.Cname='数学'ANDCOURSE.Cno=SC.Cno);(3)求其他系中年龄小于计算机系年龄最大者的学生。SELECTSTUDENT.Sno,STUDENT.Sname,STUDENT.SageFROMSTUDENTWHERESTUDENT.Sdept!='MA'ANDSage(SELECTMAX(Sage)FROMSTUDENTASXWHEREX.Sdept='MA');数据库原理及应用实验报告第7页,共11页(4)求其他系中比计算机系学生年龄都小的学生。SELECTSTUDENT.Sno,STUDENT.Sname,STUDENT.SageFROMSTUDENTWHERESTUDENT.Sdept!='CS'ANDSTUDENT.Sage(SELECTMIN(Sage)FROMSTUDENTASXWHEREX.Sdept='CS');(5)求选修了数学课的学生姓名。SELECTSTUDENT.SnameFROMSTUDENTWHERESTUDENT.SnoIN(SELECTSC.SnoFROMSCWHERESC.CnoIN(SELECTCOURSE.CnoFROMCOURSEWHERECOURSE.Cname='数学'));(6)求没有选修数学课的学生姓名。SELECTSTUDENT.SnameFROMSTUDENTWHERESTUDENT.S