《MySQL数据库原理及应用实验报告书.docx》由会员分享,可在线阅读,更多相关《MySQL数据库原理及应用实验报告书.docx(45页珍藏版)》请在课桌文档上搜索。
1、实验1创建和维护数据库一、实验目的(I)掌握在WindoWS平台下安装与配置MySQ1.8.0的方法.(2)掌樨启动极芬并登录MySQ1.8.0数据库的方法和步展.(3) 了解手工配5MySQ1.8O的方法.(4)常押MySQ1.数据库的相关概念,(5)掌握使用NaViCat工具和SQ1.语句创建和删除数据库的方法.二、实验内衣及步骡(1) SEWindows平台下安装与配J1.MySQ1.8.0。(2)在服务时话框中,手动启动或者关闭MySQ1.80服务,(本四要求:掌握基本操作记住没有启动服务时的错误提示,在使用过程中要学会解决问题【操作方法】选择控制面板】|【管理工具】I【服务】,在打开
2、的【服务】窗口中找到“MySQ1.SO”服务项,点击左上角的启动此服务”按钮即可启动此服务。同样,在该曲口中,点击左上角的“停止此账务“按钮即可停止此取务。(3)使用NC1.命令只动或关闭MySQ1.80服务.(在下面空行处写出相应的命令)启动服务:netstartmysq1.80关闭服务:netstopmysq1.8()(4)分别用NaViCa1.工具和命令行方式登录MySQ1.(在下面空行处写出相应的命令)nysq1.h1.oca1.hosturoo-p按【Enter】键后,按照提示输入r。“用户的密码即可成功登录MySQ1.(5)创建数据阵.使用NaViCat管理工具创建学生信息管理数据
3、库gradcm.使用SQ1.语句创建数据库MyDB.(在下面空行处写出所用的SQ1.谱句)CREATEDATABASEMyDB:(6)杳看数据库属性。在NaViCa1.中告看创建后的gradem数据库和MyDB数据库的状态,变看数据球是否存在,当前是打开还是关闭状态. 利用SHOWDATABASES命令显示当前的所有数据库.SHOWDATABASES:(7)删除数据库。 使用NaViCaI图形工具删除gmdem数据速。【探作方法】(I)启动NaViCaI,并确保与服务建立连接。(2)在【连接】窗格中展开服务器,鼠标右击要削除的数据第gradcm.从快捷菜单中选择【制除数据库】命令.(3)在弹出
4、的【确认删除】对话框中,单击【确定】按钮,确认删除.使用SQ1.语句刷除MyDB数据库.(在下面空行处写出所用的SQ1.语句)DROPDATABASEMyDB;41.11SHOWDATABASES命令显示当前的所有数据库。(将今沏结果战图放在下面空行处)SHOWDATABASES;四、实睑总结I、收获2,存在的问题实验2创建与维护数据表一、实验目的(I)掌握表的基础知识”(2)掌握使用Navicat管理工具和SQ1.语句创建表的方法.(3)掌握表的蟋改、查看、刑除等基本操作方法。二、实验内容及步骤1)在grade11数据库中创建表1表5所示结构的衣。表Istudent表的表结构字段名称数据类型
5、长度小数位数是否允许NU1.1.frt说明snochar10否主键Snainevarchar8是SSCXchar2是Sbinhdayda1.e是sa1.dnessvarchar50是sdcptchar16是specia1.ityVa1.Vhar20是表2course表(课程名称表)的表结构字段名称数据类型氏度小数位数是否允许NU1.1.位说明enochar5否主键cnamcvarchar20否表3sc表”迎钟j表)的表结构字段名称数据类型长度小数位数是否允许NU1.1.值说明snocharIO否组合主雄、外健cnchar5否俎合主维、外键degreedecima1.41是表4teacher表(
6、教师表)的表结构字段名称数据类型氏度小数位数是否允许NU1.1.值说明Inochar3否主键Inamcvarchar8是ISeKchar2是Ibirthdayda1.e是tdcptchar16表5teaching表(授课表)的表结构字段名称数据类型氏度小数位数是否允许NU1.1.值说明cnochar5否组合主圾、外键1.nchar3否组合主键、外键CtcrmIinyint1是(2)向表I至表5输入数据记录,见表6一去10,表6学生关系表Studen1.SnOsnameSSeXsbirthdaysaddresssckpspecia1.ity2(X)50101李为男1987-01-12山东济南计算
7、机工程系计算机应用20050201刘晨女1988-06-04山东营岛信息工程系电子商务2(X)50301王敏女1989-12-23江苏苏州数学系数学20050202张立男1988-08-25河北唐山信恩工程系电子商务表7课程关系表COUrsecnoC1.uI1.nCcnocnamcCOI数据库C03信息系统C02数学C04操作系统表8成绩发SCsnoCI1.Odegree20()50101CO1.922(X)50101C028525OIOIC038820050201C0290200502()1C0380表9教师表teachertnotnamcISCX(birthdaytdcptIOI李新男19
8、77-0112计算机工程系102钱军女1968-06-(计算机工程系201王小花女1979-12-23信恩工程系202张小营男1968-08-25信息工程系表10授课表teachingcnotnoctcrmCt)I1012C02102IC032013C042024(3)修改表结构。将3ikH发进行亚制,红制后的我名为JiUIdenJepy1. 向SUIdemqPy1.表中增加“入学时间”列.其数据类型为日期型. 招S1.iidenjcopy1.表中的SdCPt字段长度改为20. 将SIUden1.COPy1.表中的sxxia1.i1.y字段刷除C(4)利用SQ1.命令完成以下对衣的操作利用Cr
9、Cagab1.C命令完成JUudcn1.表和CoUISC表的定义CCreatetab1.eStIKkn1.(snochar(IO)PRIMARYKEY.MIanKvarchar(8).SSeXchar(2),Sbirihdaydace,saddrcssvarchar(50),sdcpchar(1.6),specia1.ityvarchar(20):Createtab1.ecourse(cnoChar(5)PRIMARYKEY,cnameVarChar(20)notnu1.1.):利用droptab1.e命令删除衣suden1.,copy1.DROPTAB1.EUUden1.copyI;四、思考
10、题(I)主键可以建立在“做可以为NU1.1.”的列上吗?不可以(2)在定义基本衣语句时,NOTNU1.1.参数的作用是什么?NoTNU1.1.指不允许为空值,该列必须输入数抠.五、实验总结:I收获2,存在的时即一、实验目的(1)常提SE1.ECT语句的基本用法.(2)使用WHERE子句进行有条件的查彻.掌握使用IN和NOT1.N,BETWEEN“AND和NOIBETWEEN-AND来缩小查询范围的方法“(4)利用1.1.KE子句实现字句用匹配壹询。二、实段内容及步骤在上次实般建立的Gnidem数据库中完成卜面杳询:(1)森询所有学生的基本信息;se1.ect*fromstudent;查询所有课
11、程的基本信息:se1.ect,fromcourse;杳询所有学生的成绩信息。se1.ect*fromsc;2)杳询所有学生的学号、姓名、性别和出生I期,se1.ectsno,sname,sse,sbirthdayfromstudent;(3)资询所行课程的课程名称.se1.ectcnamefromcourse;18andSSeX=,女;(7)查询所有男生的信息。se1.ect*fromstudentWhereSSeX=男;(8)查询所有任课教师的姓名(tnamc)和所在系别(KkPt)”se1.ecttname,tdeptfromteacher;(9)查询“电子商务”专业的学生姓名、性别和出生
12、日期.se1.ectsname,sse,SbirthdayfromstudentWhereSPeCia1.ity=,电子商务。(IO)心询SIUden1去中的所有系名。se1.ectdistinctsdeptfromstudent:(inSjcor课程的开课学期.se1.ectctermfromteachingWherecno=,c01,;(12)查询成绩在80-90分之间的学生学号及课号.se1.ectsno,cnofromscWheredegreebetween80and90;或:se1.ectsno,cnofromscWheredegree=80anddegree=90;(13)衽询在1
13、970年I月IH之前出生的男教师信息。se1.ect*fromteacherWheretbirthday查询名字中第二个字是“小”字的男生的学生姓名和地址。se1.ectSname,saddressfromstudentWheresname1.ike_小andssex,物(19)查询名称以“计算机”开头的课程名称.se1.ectcnamefromcourseWherecname1.ike计JW1.%;(20)查附计算机工程系和软件工程系的学生信息.se1.ect*fromstudentWheresdept三,计算机工程系,。rSdept=,软件工程系,;或Ise1.ectcnamefromco
14、urseWherecnamein(计算机工程系?软件工程系);三、思考题1、IJKE的通配符有哪些?分别代表什么含义?%:代表任意多个任意字符:_:代表1个任意字符。2、知道学生的出生n朝,如何求出其年龄?利用友达式ycar(curdate()-,car(sbirthday).可求出学生的年.3、IS能用“=”来代行吗?不能4、关键字A1.1.和DIST1.NCT有什么不同的含义?A1.1.:保留查询结果中的所有行.包括取值重复的行:DISTINCT:去掉查询结果中的很亚行。四、实验总结:I、收获2,存在的问题一、实验目的:(I)利用GRoUPBY子句对2E询结果分组.利用ORDERBY子句对
15、查询结果排序.(3)掌握聚集函数的使用方法。二、实验内容及步骤在Gradem数据库中完成下面查闻:(1)统计有学生选修的课程的门数,se1.ectcount(distinctcno)fromsc;计算-c0,课程的平均成绩.se1.ectavg(degree)fromscwherecno=01*;或:se1.ectavg(degree)fromscgroupbycnohavingCnO=c1.;3;(8)查卸成绩不及格的学生学号及课号,并按成绩降序排列se1.ectsno,cnofromscwheredegree=1.;(IO)统计输出各系学生的人数se1.ectsdept,count(*)f
16、romstudentgroupbysdept;(11)统计各系的男、女生人数.se1.ectsdept,sse,count(*)fromstudentgroupbysdept,sse;(12)统计各班人数,se1.ectc1.assno,count(*)fromstudentgroupbyc1.assno;(13)统计各班男、女生人数.se1.ectc1.assno,sse,count(*)fromstudentgroupbyc1.assno,sse;(14)统计各系的老师人数,并按人数升序排序.se1.ecttdept,count(*)fromteachergroupbytdeptorder
17、bycount(*);(15)统计不及格人数超过10人的课程号。se1.ectcnofromscwheredegree10;(I6)统计选修人数超过IO人的课程号.se1.ectcnofromscgroupbycnohavingcount(*)10;(17)查询软件工程系的男生信息.查询结果按出生日期升序排序,出生H期相同的按地址降序排序.se1.ectfromstudentwhereSdePt=软件工程系andSSeX=男orderbySbirthdayasc,saddressdesc;三、思考题(I)聚集函数能否直接使用在SE1.ECT子句、HAVING千句、WHERE子句、GRoUPBY
18、子句中?可以宜接用在SE1.EC子句和HAVING子句:不能直接用在WHERE子句和GROUPBY子句.(2) WHERE子句与HAVING子句有何不同?作用对象不同:WHERE千句作用于被查询的发:HAVING子句作用于结果组,选择满足条件的结果组。四、实验总结:h收获2,存在的问即一、实验目的掌提SE1.ECT语句在多表查询中的应用.(2)掌握多表连接的几种连接方式及应用.二、实验内容及步骤Gradcm数据庠中完成下面查询:三1.;(6)查询姓“王”的学生所学的课程名称.se1.ectcnamefromstudenta,courseb,sccwherea.sno=o=oandsname1.
19、ike王;(7)查前选修JAVA程序设计基础”课程R成绩在80-90分之间的学生学号及成绩.se1.ectsno,degreefromcoursea,scbo=oandcname=,JAVA程序设计基础,anddegreebetween80and90;(8)查彻选修“JAVA程序设计基础”课程且成绩在80-90分之间的学生姓名及成绩.se1.ectsname,degreefromstudentazcourseb,sccwherea.sno=o=oandcname=fJAVA程序设计基础,anddegreebetween80and90;(9) ii!R程成绩及格的男同学的学生信息及课程号与成绩.
20、se1.ecta.*,cno,degreefromstudenta,scbwherea.sno=b.snoandSSeX=男anddegree=60;(IO)咨询选修“cO4”课程的学生的平均年龄.se1.ectavg(year(curdate()-year(sbirthday)fromstudenta,scbwherea.sno=b.snoandCnO=c04;(三)查询学习课程名为“高等数学”的学生学号和姓名.se1.ecta.sno,snamefromstudenta,scbfcoursecwherea.sno=o=oandCname=,高等数学,;(12)查询“张青”教师任课的课程号.
21、选修我课程的学生的学号和成绩,se1.ectb.*fromteachera,scb,teachingcwherea.tno=o=oandtname=张青;(13)杳询“张青”教师任课的课程号,选修其课程的学生的姓名。o,snamefromteachera,scb,teachingc,studentdwherea.tno=o=oandb.sno=d.snoandtname=张青;(14)查询在第3学期所开课程的课程名称及成绩se1.ectcname,degreefromcoursea,scb,teachingco=o=oandcterm=3;(15Sii-c02,号课程不及格的学生信息,se1.
22、ecta.*fromstudenta,scbwherea.sno=b.snoandCno=c02anddegree=90;查询同时选修了a1.和“a02”课程的学生姓名和成绩。se1.ectSname,b.degree,c.degreefromstudenta,scb,sccwherea.sno=b.snoandb.sno=o=,aOo=,a02,;三、思考题(1)指定一个较短的别名有什么好处?为了简化表名(2)内连接与外连接有什么区别?内连接中,只有在两个表中匹能的行才能在结果集中出现:外连接中,可以只限制一个发,而对另个不加限制.全外连接可以对两个表都不加限制.(3)“=”与IN在什么情况
23、下作用相同?WHERE条件中用于判断的值只有一个时,“=与“IN”作用是相同的。四、实殴总结:1、收获2、存在的问KS一、实验目的(I)掌握嵌套查询的使用方法.(2)掌握相关子查询与嵌套子查询的区别.(3)掌握带IN谓词的子查询的使用方法.(se1.ectsnofromstudentwhereSname=于晓梅)andsbirthdaya1.1.(se1.ectSbirthdayfromstudentwhereSSeX=女);(13)查询成绩比平均成绩高的学生的学号及成绩.se1.ectsno,degreefromscwheredegree(se1.ectavg(degree)fromsc);
24、(14)杳询成缄比该课程平均成绩高的学生的学号及成绩,se1.ectsno,degreefromscawheredegree(se1.ectavg(degree)o=o);(15)查询不讲授-cor课的教师姓名.se1.ecttnamefromteacherwheretnonotin(se1.ecttnofromteachingwherecno=zc01/);(16)杳询“C02”号课程不及格的学生信息。se1.ect*fromstudentwheresnoin(se1.ectsnofromscwherecno=,c02,anddegree60);(17)查前没有选修“C02r课程的学生学号及
25、姓名.se1.ectsno,snamefromstudentwheresnonotin(se1.ectsnofromscwherecno=,c02,);(18)杳询选修了“思想品第教Ff”课程的学生学号、姓名及系别。se1.ectsno,sname,ssexfromstudentwheresnoin(se1.ectsnofromscwherecno=(se1.ectcnofromcoursewhereCname=,思想品德教育,);三、思考题(1)子杳询一般分为几种?两种:相关于查彻和不相关于查询(2)相关子查询的执行过程是什么?1)子交询为父杳询的包一个元俎(行)执行一次,父查询将子查询引用
26、列的值传给子查询:2)如果子查询的任何行与其匹配,则父查询取此行放入结果表:3)回到I),直到处理完外部表的每一行。四、实般总结,1、收获2,存在的问题一、实殴目的:掌握利用INSERT命令实现*块数据的插入操作.(2)掌握利用UPDATE命令实现时去数据的修改操作。(3)掌握利用DE1.ETE命令实现时去数据的删除操作。二、实验内容及步骤在Gradem数据库中完成下面操作:注意:在完成实验即目前先备份StUdCnt、SC,C。UrSC这3个衣.备份表名自定.(1)向SuIdCnt表中插入记录(,2OO5O2()3O1,“张静”.,,198I321,女计算机系”电千商务Iinsertintos
27、tudent(sno,sname,Sbirthday,sse,sdept,specia1.ity)VaIUeS(205020301,张。J1981-3-21女,;tHH1.系,一J:(2)插入学号为“2005030201”、姓匕为李四”的学牛信息.insertintostudent(sno,sname)va1.ues(2005030201/,);(3)将学号为“200701010厂的学生姓名改为“张华”,系别改为“数字媒体系”,专业改为“多媒体技术”.updatestudentsetSname=张华,sdept=数Y媒体系,specia1.ity=多媒体技术,WhereSnO=20070101
28、01;(4)将-王隹酥”同学的专业t为“计徵机信息笆理。updatestudentsetSPeCia1.ity=计驾机信息管理,wheresname=*Jif1.1JH,;(5)雨除学号为“2丽雨1”的学生记录,一de1.etefromstudentwheresno=12005030201,;(6)恻除“电子工程系”所有学生的选i记录,de1.etefroSCWhereSnoin(se1.ectSnOfroStUdentWhereSdePt=电/I系);(7)删除SC表中尚无成微的选课记录。de1.etefromscwheredegreeisnu1.1.;(8)把“张涛”同学的选课记录全部删除
29、,de1.etefromscwheresno=(se1.ectsnofromstudentwheresname=,i,);三:思考题(I)DROP命令和DE1.ETE命令的本质区别地什么?DRoP:删除表,包括衣的数据相去的结构:DE1.ETE:删除衣中的数据.(2)利用INSERT、UPDATE和DE1.ETE命令可以同时对多个我进行操作吗?不可以,“能同时对一个表进行操作四、实验总结:K收获2,存在的问题实验8数据查询与维护综合实验一、实验目的:(I)进一步掌握SE1.ECT语句的功能及使用方法。(2)进一步掌握SE1.EeT语句中各种查闻条件的表示方法:(3)进一步掌握连接查询和嵌套查询
30、的绘合应用:(4)进步掌握利用INSERT命令实现时衣数据的插入操作:(5)进一步掌握利用UPDATE命令实现对表数据的修改操作;(6)进一步掌握利用DE1.ETE命令实现对表数据的IM除操作。二、实验内容及步I1.在Gradem数据库中完成下面操作:(1)查询以4DBJ开头,且倒数第3个字符为i,的课程的详细情况:(提示:用转义字符)se1.ect4fromcoursewherecnamc1.ike,db-%i_*escape7:(2)查询名字中第2个字为阳的学生姓名和学号及选修的课程号、课程名:se1.ectsname,so,cno,cnamcfromstucknta,courscbtsc
31、cwherea.sno-o-oandsnamc1.ike二阳%t今思考能否用嵌套查询?不能3)列出选修了高等数学或者大学英语,的学生学号、姓名、所在院系.选修课程号及成绩;se1.ecta.sno.snamc,sdcp(,o,dcgrecfromstucicnta,coursch,scCwherea.sno=o=)ICmiIm喜学orCnanW=大语.j或:se1.ecta,sno,o.degreefromstudenta.scbwherea.sno-b.snoandenoin(se1.ectenofromcouncwhereCnamC-高等数学orCnamci大学英语)(4)列出选修了,高等
32、数学,和大学英语的学生学号、姓名.所在院系、选修课程号及成绩;(提示g用自连接)se1.ecta.sno.snamc,sdcp(,o,o,b.dcgrcc,c.dcgrccfromstudenta.scb.scc.councd.coursccwherea.sno=b.snoandb.sno=o=o=amc=jJ等数学andecwmc=大学英语二诙se1.ecta.sno,o.degreefromstudentascbwherea.sno=b.snandb.snoin(sc1.fromscb.coursecwherebxn=oandCniImC=新等数学,)andb.snoin(sc1.ectsnofromscb,o=oandCnamC=大学英语)(5)只选修大学英语”和“高等数学”两门课程的学生的翦本信息:Se1.ectafromstu(knt3SCbWherea.sno=b.snoand