数据库实验报告_第1页
数据库实验报告_第2页
数据库实验报告_第3页
数据库实验报告_第4页
数据库实验报告_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

《数据库原理》实验报告学号:041060124姓名:陈云飞南京航空航天大学计算机科学与技术学院实验一:SQL定义功能、数据插入1.建立教学数据库的三个根本表:S(Sno,Sname,Ssex,Sage,Sdept)学生〔学号,姓名,性别,年龄,系〕SC(Sno,Cno,Grade)选课〔学号,课程号,成绩〕C(Cno,Cname,Cpno,Ccredit)课程〔课程号,课程名,先行课,学分〕//创立表SQL>CREATETABLES2(SnoCHAR(9)PRIMARYKEY,3SnameCHAR(20)UNIQUE,4SgenderCHAR(20),5SageSMALLINT,6SdeptCHAR(20)7);表已创立。SQL>CREATETABLEC2(CnoCHAR(4)PRIMARYKEY,3CnameCHAR(40),4CpnoCHAR(4),5CcreditSMALLINT,6FOREIGNKEY(Cpno)REFERENCESC(Cno)7);表已创立。SQL>SQL>CREATETABLESC2(SnoCHAR(9),3CnoCHAR(4),4CradeSMALLINT,5PRIMARYKEY(Sno,Cno),6FOREIGNKEY(Sno)REFERENCESS(Sno),7FOREIGNKEY(Cno)REFERENCESC(Cno)8);表已创立。2.DROPTABLE、ALTERTABLE、CREATEINDEX、DROPINDEX及INSERT语句输入数据。//删除表//没选默认restrict(有限制条件),cascadeCONSTRAINTS(没限制条件)DROPTABLESC;DROPTABLES;DROPTABLEC;//结果显示SQL>DROPTABLESC;表已删除。SQL>DROPTABLES;表已删除。SQL>DROPTABLEC;表已删除。//增加列SQL>ALTERTABLESADDEntranceDATE;表已更改。//S表插入数据SQL>INSERTINTOS(Sno,Sname,Sgender,Sage,Sdept)2VALUES('041060124','陈云飞','男',20,'软件工程');已创立1行。SQL>INSERTINTOS(Sno,Sname,Sgender,Sage,Sdept,Entrance)2VALUES('041060126','史太齐','男',21,'软件工程','21-8月-03');已创立1行。SQL>INSERTINTOS(Sno,Sname,Sgender,Sage,Sdept,Entrance)2VALUES('041060128','小梁','男',18,'软件工程','21-8月-2010');已创立1行。SQL>INSERTINTOS(Sno,Sname,Sgender,Sage,Sdept,Entrance)2VALUES('041060112','心心','女',19,'机械工程','21-9月-2009');已创立1行。SQL>INSERTINTOS(Sno,Sname,Sgender,Sage,Sdept,Entrance)2VALUES('041060101','小倩','女',20,'信息平安','30-5月-12');已创立1行。SQL>INSERTINTOS(Sno,Sname,Sgender,Sage,Sdept,Entrance)2VALUES('041060102','洁','女',21,'互联网','09-9月-12');已创立1行。SQL>INSERTINTOS(Sno,Sname,Sgender,Sage,Sdept,Entrance)2VALUES('041060103','泽林','男',21,'电子商务',NULL);已创立1行。SQL>select*fromS;SNOSNAMESGENDERSAGESDEPTENTRANCE---------------------------------------------------------------------------------------------041060124陈云飞男20软件工程041060126史太齐男21软件工程21-8月-03041060128小梁男18软件工程21-8月-10041060112心心女19机械工程21-9月-09041060101小倩女20信息平安30-5月-12041060102洁女21互联网09-9月-12041060103泽林男21电子商务已选择7行。SQL>//C表插入数据SQL>INSERTINTOC(Cno,Cname,Cpno,Ccredit)2VALUES('2','数学',NULL,2);已创立1行。SQL>INSERTINTOC(Cno,Cname,Cpno,Ccredit)2VALUES('6','数据结构',NULL,2);已创立1行。SQL>INSERTINTOC(Cno,Cname,Cpno,Ccredit)2VALUES('7','PASCAL语言','6',4);已创立1行。SQL>INSERTINTOC(Cno,Cname,Cpno,Ccredit)2VALUES('5','数据结构','7',4);已创立1行。SQL>INSERTINTOC(Cno,Cname,Cpno,Ccredit)2VALUES('1','数据库','5',4);已创立1行。SQL>INSERTINTOC(Cno,Cname,Cpno,Ccredit)2VALUES('3','信息系统','1',4);已创立1行。SQL>INSERTINTOC(Cno,Cname,Cpno,Ccredit)2VALUES('4','操作系统','6',3);已创立1行。SQL>SQL>INSERTINTOC(Cno,Cname,Cpno,Ccredit)2VALUES('10','C语言',NULL,3);已创立1行。SQL>INSERTINTOC(Cno,Cname,Cpno,Ccredit)2VALUES('8','计算机网络','7',3);已创立1行。SQL>INSERTINTOC(Cno,Cname,Cpno,Ccredit)2VALUES('9','计算机仿真','7',3);已创立1行。SQL>select*fromC;CNOCNAMECPNOCCREDIT----------------------------------------------------------2数学26数据结构27PASCAL语言645数据结构741数据库543信息系统144操作系统6310C语言38计算机网络739计算机仿真73已选择10行。//SC表插入数据SQL>INSERTINTOSC(Sno,Cno,Crade)2VALUES('041060124','1',92);已创立1行。SQL>INSERTINTOSC(Sno,Cno,Crade)2VALUES('041060124','2',90);已创立1行。SQL>INSERTINTOSC(Sno,Cno,Crade)2VALUES('041060124','4',85);已创立1行。SQL>INSERTINTOSC(Sno,Cno,Crade)2VALUES('041060124','3',55);已创立1行。SQL>INSERTINTOSC(Sno,Cno,Crade)2VALUES('041060124','5',78);已创立1行。SQL>INSERTINTOSC(Sno,Cno,Crade)2VALUES('041060124','6',98);已创立1行。SQL>INSERTINTOSC(Sno,Cno,Crade)2VALUES('041060124','7',65);已创立1行。SQL>INSERTINTOSC(Sno,Cno,Crade)2VALUES('041060124','8',85);已创立1行。SQL>INSERTINTOSC(Sno,Cno,Crade)2VALUES('041060124','9',84);已创立1行。SQL>INSERTINTOSC(Sno,Cno,Crade)2VALUES('041060124','10',89);已创立1行。SQL>SQL>SQL>SQL>INSERTINTOSC(Sno,Cno,Crade)2VALUES('041060126','1',80);已创立1行。SQL>INSERTINTOSC(Sno,Cno,Crade)2VALUES('041060126','3',99);已创立1行。SQL>INSERTINTOSC(Sno,Cno,Crade)2VALUES('041060126','7',80);已创立1行。SQL>INSERTINTOSC(Sno,Cno,Crade)2VALUES('041060126','8',99);已创立1行。SQL>INSERTINTOSC(Sno,Cno,Crade)2VALUES('041060126','9',80);已创立1行。SQL>INSERTINTOSC(Sno,Cno,Crade)2VALUES('041060126','10',80);已创立1行。SQL>SQL>INSERTINTOSC(Sno,Cno,Crade)2VALUES('041060101','5',56);已创立1行。SQL>INSERTINTOSC(Sno,Cno,Crade)2VALUES('041060101','1',70);已创立1行。SQL>SQL>INSERTINTOSC(Sno,Cno,Crade)2VALUES('041060102','1',50);已创立1行。SQL>INSERTINTOSC(Sno,Cno,Crade)2VALUES('041060102','4',86);已创立1行。SQL>select*fromSC;SNOCNOCRADE-----------------------0410601241920410601242900410601244850410601243550410601245780410601246980410601247650410601248850410601249840410601241089041060126180SNOCNOCRADE-----------------------0410601263990410601267800410601268990410601269800410601261080041060101556041060101170041060102150041060102486已选择20行。//索引SQL>CREATEUNIQUEINDEXStusnoONS(Sno);CREATEUNIQUEINDEXStusnoONS(Sno)*第1行出现错误:ORA-01408:此列列表已索引SQL>CREATECLUSTERINDEXStusnameONS(Sname);CREATECLUSTERINDEXStusnameONS(Sname)*第1行出现错误:ORA-00941:缺失簇名SQL>createuniqueindexSentranceonS(Entrance);索引已创立。//删除索引SQL>dropindexSentrance;索引已删除。_______________________________________________________________________________实验二:数据查询1.查询选修1号课程的学生学号与姓名。SQL>selectS.Sno,Sname2fromS,SC3whereS.Sno=SC.SnoandSCo='1';SNOSNAME-----------------------------041060124陈云飞041060126史太齐041060101小倩041060102洁2.查询选修课程名为数据结构的学生学号与姓名。SQL>selectSno,Sname2fromS3whereSnoin(4selectSno5fromSC6whereCnoin(7selectCno8fromC9whereCname='数据结构')10);SNOSNAME-----------------------------041060124陈云飞041060101小倩3.查询不选1号课程的学生学号与姓名。SQL>selectSno,Sname2fromS3wherenotexists(4select*5fromSC6whereSno=S.SnoandCno='1');SNOSNAME-----------------------------041060128小梁041060112心心041060103泽林4.查询学习全部课程学生姓名。 SQL>selectSno,Sname2fromS3wherenotexists(4select*5fromC6wherenotexists(7select*8fromSC9whereSno=S.SnoandCno=Co)10);SNOSNAME-----------------------------041060124陈云飞5.查询所有学生除了选修1号课程外所有成绩均及格的学生的学号和平均成绩,其结果按平均成绩的降序排列。SQL>selectSno,AVG(Crade)2fromSC3whereCno<>'1'andCrade>=604groupbySno5orderbyAVG(Crade)desc;SNOAVG(CRADE)-------------------04106012687.60410601028604106012484.256.查询选修数据库原理成绩第2名的学生姓名。SQL>selectSname2fromS3whereSnoin(4selectSno5fromSC,C6whereSCo=CoandCname='数据库'andCrade=(7selectMax(Crade)8fromSC,C9whereSCo=CoandCname='数据库'andCrade<>(10selectMax(Crade)11fromSC,C12whereSCo=CoandCname='数据库'))13);SNAME--------------------史太齐7.查询所有3个学分课程中有3门以上〔含3门〕课程获80分以上〔含80分〕的学生的姓名。SQL>selectSname2fromS3whereSnoin(4selectSno5fromSC,C6whereSCo=CoandCcredit=3andCrade>=807groupbySno8HavingCOUNT(*)>=39);SNAME--------------------陈云飞史太齐8.查询选课门数唯一的学生的学号。_____________________________SQL>selectsno2fromscx3havingcount(sno)notin(4selectcount(cno)5fromscy6wherex.sno<>y.sno7groupbysno8)groupbysno;SNO---------041060124041060126______________________________9.查询选修一号课程成绩为第二名的学生学号SQL>selectsno2fromSC3wherecno=1andCradein(4selectmax(Crade)5fromSC6wherecno=1andCradenotin(7selectmax(Crade)8fromSC9wherecno=1)10);SNO---------04106012610.SELECT语句中各种查询条件的实验。实验三:数据修改、删除1.把1号课程的非空成绩提高10%。//修改成绩超过100分的SQL>updateSC2setCrade=Crade*1.13whereCno='1'andCradeisnotnull;已更新4行。SQL>updateSC2setCrade=1003whereCno='1'andCrade>100;已更新1行。2.在SC表中删除课程名为数据结构的成绩的元组。SQL>deletefromSC2whereCnoin(3selectCno4fromC5whereCname='数据结构'6);已删除3行。3.在S和SC表中删除学号为041060124的所有数据。SQL>deletefromSC2whereSno='041060124';已删除8行。SQL>deletefromS2whereSno='041060124';已删除1行。实验四:视图的操作1.建立男学生的视图,属性包括学号、姓名、选修课程名和成绩。Createviewgstudent(sno,sname,cname,grade)ASSelectsyang.sno,sname,cyangame,gradefromsyang,scyang,cyangwheresyang.sno=scyang.snoandscyango=cyangoandssex=1;2.在男学生视图中查询平均成绩大于80分的学生学号与姓名。SQL>createviewSMan(Sno,Sname,Cname,Crade)2as3selectS.Sno,Sname,Cname,Crade4fromS,SC,C5whereSC.Sno=S.SnoandCo=SCoandSgender='男';视图已创立。实验五:库函数,授权控制计算每个学生有成绩的课程门数、平均成绩。SQL>selectSno,Count(Cno),AVG(Crade)2fromSC3whereCradeisnotnull4groupbySno;SNOCOUNT(CNO)AVG(CRADE)-----------------------------041060101177041060102270.5041060126687.66666673. 实验完成后,撤消建立的根本表和视图。//创立用户St,密码dumasSQL>createuserSt2identifiedbydumas;用户已创立。//2授予对于S,SC,C的使用权授给StudentSQL>grantallprivileges2onStoStudent;授权成功。SQL>SQL>grantallprivileges2onSCtoStudent;授权成功。SQL>SQL>grantallprivileges2onCtoStudent;授权成功。SQL>dropviewSMan;视图已删除。SQL>droptableSC;表已删除。SQL>droptableS;表已删除。SQL>droptableC;表已删除。实验六:综合实验:实现一个小型管理信息系统10学时熟练掌握VisualC++和Pro*C访问数据库的方法,设计和实现学生通讯录或学生选课的一个小型管理信息系统。要求具有数据的增加、删除、修改和查询的根本功能,并尽可能提供较多的查询功能,用户界面要友好。课程结束前提交实验报告和程序。通讯录实验报告一、实验平台操作系统:WindowsXP开发工具:NetBeans数据库:Oracle9i二、系统介绍数据库局部包含一张表是tb_LinkMan其中建立表对应的SQL语句如下:本通讯录会首先建立表本系统功能模块划分:对数据的删除模块;A.可以鼠标选中表格中要修改的记录,右键弹出式菜单,直接可以删除B.也可以点击按钮“删除”〔2〕对数据的查询模块;A.全部查询B.按条件查询(3)对数据的添加模块;主要特色是实现了图片的添加〔按路径添加〕(4)对数据的修改模块;A.可以鼠标选中表格中要修改的记录,右键弹出式菜单,直接可以修改B.也可以点击按钮“修改”C.然后点击按钮“保存”三、实验步骤:数据库设计通讯录模块使用的是Oracle9i。数据库只有包含一个联系人表tb_LinkMan。tb_LinkMan包含8个字段,各个字段涵义如下:列名数据类型说明IDInt编号,主键NameString姓名SexString性别TelephoneStringAddressString住址QQStringQQ号码SortnameString分类名称PicturepathString存储图片路径编写程序〔1〕.封装联系人信息的类LinkMan在本模块中,用户对联系人信息进行管理。通常定义一个类来保存这些信息。将他们设置成私有变量,并提供get()和set()方法。代码如下:publicclassLinkMan{privateintID=0;privateStringname=null;privateStringsex=null;privateStringtelephone=null;privateStringQQ=null;privateStringsortname=null;privateStringaddress=null;privateStringpicturepath=null;publicintgetID(){returnID;}publicvoidsetID(intID){this.ID=ID;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){=name;}publicStringgetSex(){returnsex;}publicvoidsetSex(Stringsex){this.sex=sex;}publicStringgetTelephone(){returntelephone;}publicvoidsetTelephone(Stringtelephone){this.telephone=telephone;}publicStringgetQQ(){returnQQ;}publicvoidsetQQ(StringQQ){this.QQ=QQ;}publicStringgetSortName(){returnsortname;}publicvoidsetSortName(Stringsortname){this.sortname=sortname;}publicStringgetAddress(){returnaddress;}publicvoidsetAddress(Stringaddress){this.address=address;}publicStringgetPicturePath(){returnpicturepath;}publicvoidsetPicturePath(StringpicturePath){this.picturepath=picturePath;}}获得数据库连接的类DBConnecter本程序后台使用的是Oracle9i,在使用JDBC操作数据时候,需要先获得数据库连接对象,这里使用DBConnecter类中的getConn()方法来实现。最重要的是要把“ojdbc14_g.jar”加载到库里。代码如下;/**Tochangethistemplate,chooseTools|Templates*andopenthetemplateintheeditor.*/packageaddresspeople;importjava.sql.Connection;importjava.sql.DriverManager;importjavax.swing.JOptionPane;/****@author陈云飞*/publicclassDBConnecter{privatestaticDBConnecterconnecter=newDBConnecter();publicDBConnecter(){try{Class.forName("oracle.jdbc.driver.OracleDriver");//加载数据驱动}catch(ClassNotFoundExceptione){JOptionPane.showMessageDialog(null,"数据库驱动失败,请将JTDS驱动动态配置到构建路径。\n"+e.getMessage());}}publicstaticConnectiongetConn(){try{Connectionconn=null;Stringurl;url="jdbc:oracle:thin:陈云飞-PC:1158/em";//数据库的路径Stringusername="system";//数据库登录名字Stringpassword="c041060124";//密码conn=DriverManager.getConnection(url,username,password);//建立连接returnconn;//返回连接}catch(Exceptione){JOptionPane.showMessageDialog(null,"数据库连接失败。\n请检查数据库用户名和密码是否正确。"+e.getMessage());returnnull;}}}〔3〕.操作联系人信息的类OperateLinkMan好本程序是将联系人的信息保存到数据库中,在需要对联系人信息进行查询、删除、修改、增加等操作调用此类中相关函数。代码如下:=1\*GB3①publicstaticVectorquery()//查询所有人信息=2\*GB3②publicstaticVectorquery(StringfieldName,Stringvalue)//按条件查询=3\*GB3③publicstaticvoidinsert(LinkManlinkman)//插入联系人=4\*GB3④publicstaticvoidupdata(LinkManm)//数据修改的更新=5\*GB3⑤publicstaticvoiddelete(intID)//删除数据(4).添加联系人addlinkman类本程序设计了添加联系人的界面,特别是对图片的处理,单独把添加联系人独立出来,因为大局部通讯录除了查询,就是添加联系人,单独独立出来能够更加容易操作。代码如下:按钮“保存”代码:Privatevoidbtn_saveActionPerformed(java.awt.event.ActionEventevt){//获得各文本区域的内容//TODOaddyourhandlingcodehere:Stringxm=tf_name.getText().trim();Stringxb=tf_nan.isSelected()?"男":"女";Stringdz=tf_address.getText().trim();Stringdh=tf_telephone.getText().trim();Stringqq=tf_qq.getText().trim();Stringsort=tf_sort.getText().trim();Stringid=tf_id.getText().trim();intID=Integer.parseInt((String)id);LinkManlinkman=newLinkMan();linkman.setName(xm);linkman.setSex(xb);linkman.setAddress(dz);linkman.setTelephone(dh);linkman.setQQ(qq);linkman.setSortName(sort);linkman.setID(ID);linkman.setPicturePath(PicturePath);//获得图片路径,其中PicturePath是全局变量,在privatevoidbtn_pictureActionPerformed(java.awt.event.ActionEventevt)函数中赋值//OperateLinkMan.insert(linkman);//插入数据库btn_add.setEnabled(true);btn_save.setEnabled(false);}//选择图片按钮Privatevoidbtn_pictureActionPerformed(java.awt.event.ActionEventevt){//TODOaddyourhandlingcodehere:JFileChooserchooser=newJFileChooser("C:\\Users\\陈云飞\\Pictures");//用文件选择器chooser翻开图片路径FileNameExtensionFilterfilter=newFileNameExtensionFilter("JPG&PNG&JEPG&GIFImages","jpg","JEPG","PNG","gif");chooser.setFileFilter(filter);intreturnVal=chooser.showOpenDialog(this);if(returnVa

温馨提示

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

评论

0/150

提交评论