周洪岩-北方工业大学-数据库实验报告-_第1页
周洪岩-北方工业大学-数据库实验报告-_第2页
周洪岩-北方工业大学-数据库实验报告-_第3页
周洪岩-北方工业大学-数据库实验报告-_第4页
周洪岩-北方工业大学-数据库实验报告-_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库技术I(2015年春)序号:数据库技术I实验报告系别:计算机科学与技术班级:计15姓名:周洪岩学号:2015331120103成绩:评语:指导教师签字:日期:实验一数据库的建立及数据维护实验目的1.学会使用企业管理器和查询分析器创建数据库、创建基本表和查看数据库属性。2.学会使用企业管理器和查询分析器向数据库输入数据,修改数据,删除数据的操作。3.在SQLyogEnt查询分析器中完成复杂查询及视图定义。实验环境及要求数据库实验要求如下环境,服务器端:Windows2000/xp、数据库服务器(Mysql5.1)、SQLyogEnt。要求:根据以上数据字典,画出该数据库的ER图,完成数据库的概念结构设计;将ER图转换成逻辑关系模式,判断逻辑数据库模式中的各个关系(表)是第几范式,如果没有达到第三范式或BC范式,请进行规范化。完成数据库的逻辑结构设计。通过企业管理器或者查询分析器实现关系模式的存储,包括确定主码、外部码等。通过企业管理器或查询分析器向数据库中输入数据。打开数据库Mysql的查询分析器,用SQL语言完成以下语句。并通过实验结果验证查询语言的正确性,将每个SQL语言及结果存盘,以备老师检查。求全体学生的学号、姓名和出生年份。求每个系的学生总人数并按降序排列。求选修了课程号为002或003的学生的学号、课程名和成绩。检索选修某课程的学生人数多于3人的教师姓名。查询所有未选课程的学生姓名和所在系。求每个同学的课程成绩的最高分,查询结果项包括:学生姓名、课程号及最高分。求所有讲授数据结构课程的教师姓名查询所有选修了李正科老师的课程的学生信息新建一个关系表S1(SNO,SNAME,SD,SA),其字段类型定义与Student表中的相应字段(SNO,SNAME,SDEPT,SAGE)的数据类型定义相同。将表Student中在计算机系‘CS’的学生数据插入到表S1中。建立计算机系的学生的视图STUDENT_CS。利用视图STUDENT_CS,将学生的001号课程的成绩提高5分实验步骤及结果1、SQLyogEnt使用1.启动SQLyogEnt服务软件:输入MySql主机地址、用户名、密码,点击“连接”按钮,显示连接已连接的数据库。2.在Mysql中建立数据库:在菜单栏上点击“数据库”,弹出数选项菜单中选择“创建数据库”,输入数据库名、选择数据库字符集、数据库校对规则,点击创建。2、查询分析器的使用在“文件”菜单中选择新建>使用当前连接查询,点击使用当前连接查询后,出现新的工作区窗口,输入sql语句。点击执行按钮,出现查询结果窗口。3、程序编写与结果1.SELECTSname,Sno,2015-Sage'YearofBirth:'FROMStudent;2.SELECTSdept,COUNT(*)AS总人数FROMStudentGROUPBYSdeptORDERBYSdept;3.SELECTc.SNO,s.SNAME,c.GRADEFROMstudents,scorecWHEREc.SNO=s.SNOANDc.CNOIN('002',003);4.SELECTt.TNAMEFROMteachert,scoresWHEREt.CNO=s.CNOGROUPBYt.TNAMEHAVINGCOUNT(s.SNO)>35.SELECTt.SNAME,t.SDEPTFROMstudenttWHEREt.SNONOTIN(SELECTst.SNOFROMstudentst,scorescWHEREst.SNO=sc.SNO)6.SELECTst.SNAME,sc.CNO,MAX(sc.GRADE)AS'最高分'FROMstudentst,scorescWHEREst.SNO=sc.SNOGROUPBYst.SNO7.SELECTc.CNO,t.TNAMEFROMcoursec,teachertWHEREc.CNAME='数据结构'ANDc.CNO=t.CNO8.SELECTs.*,c.CNO,t.TNAMEFROMscorec,teachert,studentsWHEREt.TNAME='李正科'ANDc.CNO=t.CNOANDc.SNO=s.SNO9.DROPTABLEIFEXISTS`S1`;CREATETABLE`S1`(`SNO`VARCHAR(10)NOTNULLCOMMENT'学号',`SNAME`VARCHAR(20)DEFAULTNULLCOMMENT'姓名',`SD`VARCHAR(50)DEFAULTNULLCOMMENT'系别',`SA`INT(4)UNSIGNEDZEROFILLDEFAULTNULLCOMMENT'年龄',PRIMARYKEY(`SNO`))ENGINE=INNODBDEFAULTCHARSET=utf8;INSERTINTOS1(SNO,SNAME,SD,SA)SELECTs.SNO,s.SNAME,s.SDEPTASSD,s.SAGEASSAFROMstudentsWHEREs.SDEPT='CS';10.CREATEVIEWV_STUDENT_CSASSELECTs.SNO,s.SNAME,s.SSEX,s.SDEPT,s.SAGE,c.GRADEFROMstudents,scorecWHEREs.SNO=c.SNO4、ER图实验中的问题及解决方法代码编写时总是忘记用英文符号,导致程序出现错误。检查之后改正。在使用select语句时,没有将列名明确,如将student.sno写成sno导致错误。在查过书上的资料后改正。实验总结通过本次实验,复习了SQL数据库的用法,表,视图等操作。练习了对SQL查询语句的编写和调试,为今后进一步学习数据库打下了基础。实验二B/S结构的数据库编程一、实验目的学会使用Web服务器,tomcat7.0发布应用程序。学会在IE浏览器中查看JSP网页的执行结果掌握JSP+Servlet+JDBC技术实现简单的动态网页的制作。二、实验环境及要求 数据库实验要求如下环境,服务器端:Windows7、数据库服务器(MySql5.6.24)、Web服务器(tomcat7.0)和JSP。客户端:IE9.0要求:通过一门编程工具(eclipse)编写访问数据库的应用程序,编程序设计良好的一个人机交互界面,列出实验一中的查询,将“实验一”中的10个数据库查询语句的结果显示。三、实验步骤及结果1、新建工程并配置数据库连接(1)在桌面“计算机”图标上右键单击“管理”,选择左侧的“服务和应用程序”,双击右侧栏目中“服务”。找到“MySql”双击启动数据库服务。(2)打开eclipse,在左侧空白栏处,鼠标右键单击,选择【New】,接下来选择【WebProject】,输入工程名,暂且叫【JdbcTest】,点击【finish】。工程新建完毕。(3)在工程下找到WebRoot->WEB-INF->lib目录,将需要的驱动及开发包放入其中。mysql-connector-java-5.1.17-bin.jar2、程序编写与结果(1)数据连接类编写packageutil;publicclassJdbcUtil{ static{ try{ //数据库驱动名 StringdriverName="com.mysql.jdbc.Driver"; //通过反射得到数据库驱动类 Class.forName(driverName); }catch(Exceptione){ e.printStackTrace(); } } //得到连接数据库 publicstaticConnectiongetConnection(){ Connectioncon=null; try{ //数据库位置 Stringurl="jdbc:mysql://localhost/task?useUnicode=true&characterEncoding=utf8"; //数据库用户名 Stringusername="root"; //数据库密码 Stringpwd="123456"; //得到数据库连接 con=DriverManager.getConnection(url,username,pwd); }catch(Exceptione){ e.printStackTrace(); } //返回数据库连接 returncon; } /* *关闭结果集,连接 */ publicstaticvoidclose(ResultSetrs,Statementstmt,Connectioncon){ try{ if(rs!=null) rs.close(); }catch(Exceptionex){ ex.printStackTrace(); } try{ if(stmt!=null) stmt.close(); }catch(Exceptionex){ ex.printStackTrace(); } try{ if(con!=null) con.close(); }catch(Exceptionex){ ex.printStackTrace(); } }}(2)实体类编写packageentity;/***学生表*/publicclassStudent{ //学生编号 privateStringsno; //学生名称 privateStringsname; //性别 privateStringssex;//所在系别 privateStringsdept; //学生年龄 privateintsage; publicStringgetSno(){ returnsno; } publicvoidsetSno(Stringsno){ this.sno=sno; } publicStringgetSname(){ returnsname; } publicvoidsetSname(Stringsname){ this.sname=sname; } publicStringgetSsex(){ returnssex; } publicvoidsetSsex(Stringssex){ this.ssex=ssex; } publicStringgetSdept(){ returnsdept; } publicvoidsetSdept(Stringsdept){ this.sdept=sdept; } publicintgetSage(){ returnsage; } publicvoidsetSage(intsage){ this.sage=sage; }}(3)数据库实现类编写packagedao.Impl;/**学生接口的实现类*/publicclassStudentsDaoImplimplementsStudentDao{ Stringsql=null; PreparedStatementps=null;ResultSetrs=null;Studentstudent=null;/**显示全部的学生信息*/ publicList<Student>seachStudent(Connectioncon){ //定义List集合 List<Student>list=newArrayList<Student>(); //查询语句 sql="select*fromstudent"; try{ //预编译sql语句 ps=con.prepareStatement(sql); //得到查询后的结果集 rs=(ResultSet)ps.executeQuery(); while(rs.next()){ //将机结果集封装成学生对象 student=newStudent(rs.getString("sno"),rs.getString("sname"),rs.getString("ssex"),rs.getString("sdept"),rs.getInt("sage")); //加入集合中 list.add(student); } }catch(SQLExceptione){e.getMessage(); } //得到查询结果集 returnlist; }}(4)测试接口类实现类编写,并执行测试数据连接packagetest;publicclassTestStudent{ publicstaticvoidmain(String[]args){ Connectioncon=(Connection)JdbcUtil.getConnection(); StudentsDaoImplss=newStudentsDaoImpl(); List<Student>stList=ss.seachStudent(con); for(Students:stList){ System.out.println(s.toString()); } }}执行测试类结果:(5)servlet转发类编写packageservlet;publicclassStudentServletextendsHttpServlet{ privatestaticfinallongserialVersionUID=1L; publicvoidservice(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ //得到连接数据库 Connectioncon=(Connection)JdbcUtil.getConnection(); StudentDaostDao=newStudentsDaoImpl(); List<Student>stList=stDao.seachStudent(con); request.setAttribute("stuents",stList); request.getRequestDispatcher("student.jsp").forward(request,response); }}(6)展示页面jsp编写<%@pagelanguage="java"pageEncoding="UTF-8"import="java.util.*"import="entity.Student"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html> <head> <title>students</title> </head> <body> <tableborder="1px"cellspacing="0"cellpadding="0"width="317"align="center"> <captionalign="top">学生信息</caption> <tr><td>SNO</td><td>SNAME</td><td>SSEX</td><td>SDEPT</td><td>SAGE</td></tr> <% List<Student>stList=(List<Student>)request.getAttribute("stuents"); for(Studentst:stList){ %> <tr> <td><%=st.getSno()%></td><td><%=st.getSname()%></td><td><%=st.getSsex()%></td><td><%=st.getSdept()%></td><td><%=st.getSage()%></td> </tr> <% }%> </table> </bo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论