周洪巖-北方工業(yè)大學-數(shù)據(jù)庫實驗報告-_第1頁
周洪巖-北方工業(yè)大學-數(shù)據(jù)庫實驗報告-_第2頁
周洪巖-北方工業(yè)大學-數(shù)據(jù)庫實驗報告-_第3頁
周洪巖-北方工業(yè)大學-數(shù)據(jù)庫實驗報告-_第4頁
周洪巖-北方工業(yè)大學-數(shù)據(jù)庫實驗報告-_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

數(shù)據(jù)庫技術I(2015年春)序號:數(shù)據(jù)庫技術I實驗報告系別:計算機科學與技術班級:計15姓名:周洪巖學號:2015331120103成績:評語:指導教師簽字:日期:實驗一數(shù)據(jù)庫的建立及數(shù)據(jù)維護實驗目的1.學會使用企業(yè)管理器和查詢分析器創(chuàng)建數(shù)據(jù)庫、創(chuàng)建基本表和查看數(shù)據(jù)庫屬性。2.學會使用企業(yè)管理器和查詢分析器向數(shù)據(jù)庫輸入數(shù)據(jù),修改數(shù)據(jù),刪除數(shù)據(jù)的操作。3.在SQLyogEnt查詢分析器中完成復雜查詢及視圖定義。實驗環(huán)境及要求數(shù)據(jù)庫實驗要求如下環(huán)境,服務器端:Windows2000/xp、數(shù)據(jù)庫服務器(Mysql5.1)、SQLyogEnt。要求:根據(jù)以上數(shù)據(jù)字典,畫出該數(shù)據(jù)庫的ER圖,完成數(shù)據(jù)庫的概念結構設計;將ER圖轉換成邏輯關系模式,判斷邏輯數(shù)據(jù)庫模式中的各個關系(表)是第幾范式,如果沒有達到第三范式或BC范式,請進行規(guī)范化。完成數(shù)據(jù)庫的邏輯結構設計。通過企業(yè)管理器或者查詢分析器實現(xiàn)關系模式的存儲,包括確定主碼、外部碼等。通過企業(yè)管理器或查詢分析器向數(shù)據(jù)庫中輸入數(shù)據(jù)。打開數(shù)據(jù)庫Mysql的查詢分析器,用SQL語言完成以下語句。并通過實驗結果驗證查詢語言的正確性,將每個SQL語言及結果存盤,以備老師檢查。求全體學生的學號、姓名和出生年份。求每個系的學生總人數(shù)并按降序排列。求選修了課程號為002或003的學生的學號、課程名和成績。檢索選修某課程的學生人數(shù)多于3人的教師姓名。查詢所有未選課程的學生姓名和所在系。求每個同學的課程成績的最高分,查詢結果項包括:學生姓名、課程號及最高分。求所有講授數(shù)據(jù)結構課程的教師姓名查詢所有選修了李正科老師的課程的學生信息新建一個關系表S1(SNO,SNAME,SD,SA),其字段類型定義與Student表中的相應字段(SNO,SNAME,SDEPT,SAGE)的數(shù)據(jù)類型定義相同。將表Student中在計算機系‘CS’的學生數(shù)據(jù)插入到表S1中。建立計算機系的學生的視圖STUDENT_CS。利用視圖STUDENT_CS,將學生的001號課程的成績提高5分實驗步驟及結果1、SQLyogEnt使用1.啟動SQLyogEnt服務軟件:輸入MySql主機地址、用戶名、密碼,點擊“連接”按鈕,顯示連接已連接的數(shù)據(jù)庫。2.在Mysql中建立數(shù)據(jù)庫:在菜單欄上點擊“數(shù)據(jù)庫”,彈出數(shù)選項菜單中選擇“創(chuàng)建數(shù)據(jù)庫”,輸入數(shù)據(jù)庫名、選擇數(shù)據(jù)庫字符集、數(shù)據(jù)庫校對規(guī)則,點擊創(chuàng)建。2、查詢分析器的使用在“文件”菜單中選擇新建>使用當前連接查詢,點擊使用當前連接查詢后,出現(xiàn)新的工作區(qū)窗口,輸入sql語句。點擊執(zhí)行按鈕,出現(xiàn)查詢結果窗口。3、程序編寫與結果1.SELECTSname,Sno,2015-Sage'YearofBirth:'FROMStudent;2.SELECTSdept,COUNT(*)AS總人數(shù)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='數(shù)據(jù)結構'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圖實驗中的問題及解決方法代碼編寫時總是忘記用英文符號,導致程序出現(xiàn)錯誤。檢查之后改正。在使用select語句時,沒有將列名明確,如將student.sno寫成sno導致錯誤。在查過書上的資料后改正。實驗總結通過本次實驗,復習了SQL數(shù)據(jù)庫的用法,表,視圖等操作。練習了對SQL查詢語句的編寫和調試,為今后進一步學習數(shù)據(jù)庫打下了基礎。實驗二B/S結構的數(shù)據(jù)庫編程一、實驗目的學會使用Web服務器,tomcat7.0發(fā)布應用程序。學會在IE瀏覽器中查看JSP網(wǎng)頁的執(zhí)行結果掌握JSP+Servlet+JDBC技術實現(xiàn)簡單的動態(tài)網(wǎng)頁的制作。二、實驗環(huán)境及要求 數(shù)據(jù)庫實驗要求如下環(huán)境,服務器端:Windows7、數(shù)據(jù)庫服務器(MySql5.6.24)、Web服務器(tomcat7.0)和JSP。客戶端:IE9.0要求:通過一門編程工具(eclipse)編寫訪問數(shù)據(jù)庫的應用程序,編程序設計良好的一個人機交互界面,列出實驗一中的查詢,將“實驗一”中的10個數(shù)據(jù)庫查詢語句的結果顯示。三、實驗步驟及結果1、新建工程并配置數(shù)據(jù)庫連接(1)在桌面“計算機”圖標上右鍵單擊“管理”,選擇左側的“服務和應用程序”,雙擊右側欄目中“服務”。找到“MySql”雙擊啟動數(shù)據(jù)庫服務。(2)打開eclipse,在左側空白欄處,鼠標右鍵單擊,選擇【New】,接下來選擇【W(wǎng)ebProject】,輸入工程名,暫且叫【JdbcTest】,點擊【finish】。工程新建完畢。(3)在工程下找到WebRoot->WEB-INF->lib目錄,將需要的驅動及開發(fā)包放入其中。mysql-connector-java-5.1.17-bin.jar2、程序編寫與結果(1)數(shù)據(jù)連接類編寫packageutil;publicclassJdbcUtil{ static{ try{ //數(shù)據(jù)庫驅動名 StringdriverName="com.mysql.jdbc.Driver"; //通過反射得到數(shù)據(jù)庫驅動類 Class.forName(driverName); }catch(Exceptione){ e.printStackTrace(); } } //得到連接數(shù)據(jù)庫 publicstaticConnectiongetConnection(){ Connectioncon=null; try{ //數(shù)據(jù)庫位置 Stringurl="jdbc:mysql://localhost/task?useUnicode=true&characterEncoding=utf8"; //數(shù)據(jù)庫用戶名 Stringusername="root"; //數(shù)據(jù)庫密碼 Stringpwd="123456"; //得到數(shù)據(jù)庫連接 con=DriverManager.getConnection(url,username,pwd); }catch(Exceptione){ e.printStackTrace(); } //返回數(shù)據(jù)庫連接 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)數(shù)據(jù)庫實現(xiàn)類編寫packagedao.Impl;/**學生接口的實現(xiàn)類*/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)測試接口類實現(xiàn)類編寫,并執(zhí)行測試數(shù)據(jù)連接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()); } }}執(zhí)行測試類結果:(5)servlet轉發(fā)類編寫packageservlet;publicclassStudentServletextendsHttpServlet{ privatestaticfinallongserialVersionUID=1L; publicvoidservice(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ //得到連接數(shù)據(jù)庫 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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論