付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据库实验课程:数据库原理实验名称:SQL 操作及数据库专实 实验学姓业:日 期:日期:号:名:验2010 年 5 月 13 日至 6 月 10 日2010 年 6 月 20 日040740305段伟伟小实验:SQL 基本操作1一:SQL 定义功能、数据.21.建立教学数据库的三个基本表22: DROP TABLE、ALTER TABLE、CREATE INDEX、DROP INDEX 及 INSERT 语句输入数据.3二: 数据查询61.查询选修 1 号课程的学生学号与。.62查询选修课程名为数据库的学生学号与。.63查询不选 1 号课程的学生学号与。.64查询学习全部课程学生。.75查询所
2、有学生除了选修 1 号课程外的学号和平均成绩,其结果按平均成绩的降序排列。76查询选修数据库原理成绩第 2 名的学生。.87. 查询所有 3 个学分课程中有 3 门以上(含 3 门)课程获 80 分以上(含 80 分)的学生的。.98. 查询选课门数唯一的学生的学号。9三:数据修改、删除11把 1 号课程的非空成绩提高 10。11在 SC 表中删除课程名为数据结构的成绩的元组。11在 S 和 SC 表中删除学号为 95002 的所有数据。11四:视图的操作131.建立男学生的视图,属性包括学号、选修课程名和成绩。132 在男学生视图中查询平均成绩大于 80 分的学生学号与。 .13五:库函数,
3、控制14计算每个学生有成绩的课程门数、平均成绩。14使用 GRANT 语句,把对基本表 S、SC、C 的使用权限授给其它用户。14综合实验:实现一个小型管理信息系统15一实验题目:学生系统15二实验环境:15三实验目的:15四实验步骤:15建立 ODBC 数据源15应用 AppWizard 生成初始应用程序“Addresslist”16设置菜单与程序18功能实现22五运行图示:39六实验感想:43小实验:SQL 基本操作一:SQL 定义功能、数据1. 建立教学数据库的三个基本表create table S(Sno CHAR (9) PRIMARY KEY,Sname CHAR (20) UNI
4、QUE,Ssex CHAR (2),Sage SMALLSdept CHAR(20);acreate table C(Cno CHAR (4) PRIMARY KEY,Cname CHAR (40),Cpno CHAR (4),Ccredit SMALLFOREIGN KEY (Cpno) REFERENC(Cno);create table SC(Sno CHAR (9),Cno CHAR (4),Grade SMALLPRIMARY KEY (Sno, Cno),FOREIGN KEY (Sno) REFERENo),FOREIGN KEY (Cno) REFERENC(Cno);2: D
5、ROP TABLE、ALTER TABLE、CREATE INDEX、DROP INDEXINSERT 语句输入数据及* INSRET 语句 *inserto S values,男,20,CS);(200215121,inserto S values,女,19,CS);(200215122,inserto S values,女,18,MA);(200215123,inserto S values,男,19,IS);(200215125,inserto C values(2,数学,2);inserto C values(6,数据处理,2);inserto C values(4,操作系统,6,3)
6、;inserto C values(7,PASCAL 语言,6,4);inserto C values(5,数据结构,7,4);inserto C values(1,数据库,5,4);inserto C values(3,信息系统,1,4);inserto SC values(200215121,1,92);inserto SC values(200215121,2,85);inserto SC values(200215121,3,88);inserto SC values(200215122,2,90);inserto SC values(200215122,3,80);ALTER TAB
7、LE 语句*alter table S ADD S_entrance DATE;alter table S alter COLUMN Sage;/有误alter table C ADD UNIQUE(Cname);CREATE INDEX 语句*/有误create unique index Stusno ONo);/有误create unique indexo ON C(Cno);create unique index SCon ON SC(Sno ASC, Cno DESC);二: 数据查询1.查询选修 1 号课程的学生学号与。selecto, snamefrom S,SCwhereo=SC
8、.sno ando=1;2查询选修课程名为数据库的学生学号与。selecto,snamefrom S,SC,Cwhereo=SC.sno ando andame=数据库;3查询不选 1 号课程的学生学号与。select sno, snamefrom Swhere not exists(select * from SCwhere sno=oand cno=1);4查询学习全部课程学生。select snamefrom Swhere not exists(select *from Cwhere not exists(select *from SCwhere sno=oando);5查询所有学生除了
9、选修1 号课程外的学号和平均成绩,其结果按平均成绩的降序排列。SELECTo,AVG(Grade)FROM S,C,SCWHEREoANDo1ANDGrade=60ANDo=SC.SnoGROUP BY(o)ORDER BY AVG(Grade) DESC;6查询选修数据库原理成绩第 2 名的学生。select snamefrom S, SC,Cwhereo=SC.snoandoandame=信息系统andGrade=(select max(Grade)fromSC,Cwhereo andame=信息系统 andGrade!=(selectmax(Grade)fromSC,Cwhereoand
10、ame=信息系统);7. 查询所有 3 个学分课程中有 3 门以上(含3 门)课程获80 分以上(含 80 分)的学生的。select snamefrom sc,c,swhereoandsc.sno=oandsc.grade=80andc.ccredit=4groupbyo,snamehaving count(o)=3;8. 查询选课门数唯一的学生的学号。思路 1:对于某学生,若他的成绩总和=平均成绩,则可以肯定他的选课唯一。思路 2:先用 group by 句子按学号 sno 进行分组,再用函数count 对每一组进行计数。select SnofromSCGroupBySnoHaving C
11、ount(*)=2;三:数据修改、删除1把 1 号课程的非空成绩提高 10。updateSCset Grade=Grade*1.1where cno=1andGrade!=0;2在 SC 表中删除课程名为数据结构的成绩的元组。deletefrom SCwhereo=(select cnofromCwhere cname=数学);3在 S 和 SC 表中删除学号为 95002 的所有数据。deletefrom SCwhere sno=200215122;deletefrom Swhere sno=200215122;四:视图的操作1.建立男学生的视图,属性包括学号、和成绩。、选修课程名creat
12、eview M_Studentasselecto, sname, cname, GradefromS,SC,Cwhere Ssex=男ando=SC.snoando;2 在男学生视图中查询平均成绩大于。分的学生学号与80selectsno, snamefrom M_StudentGroup by (sno,sname)Having AVG(Grade)80;五:库函数,控制1计算每个学生有成绩的课程门数、平均成绩。select count(cno), avg(Grade)from SC;2使用 GRANT 语句,把对基本表 S、SC、C 的使用权限授给其它用户。注意:一次只能把一个表给其他人G
13、RANT selecton table Stos04074030X;综合实验:实现一个小型管理信息系统一实验题目:学生系统二实验环境:1. Windowsxp;2. Visual C+;3. SQL Plus;三实验目的:设计学生的一个小型管理信息系统,通过数据的增加、删除、修改和查询的基本功能,以及较多查询功能的操作,熟练掌握数据库的方法,熟练掌握 SQL Plus 对数据库的操作。Visual C+四实验步骤:1建立 ODBC 数据源a) 打开控制 windows 系统的“控制面板”,进入“管理工具”后选择“数据源(ODBC)”图标。b) 选择“用户DSN”,单击“添加”按钮,显示如下图所
14、示的“创建新数据源”框。在驱动程序列表框中选择“ODBC forOracle”选项。c) 单击“完成”按钮,显示“框。ODBC for Oracle Setup”在“数据源名称”文本框中输入“addresslist”,在“描述”框中输入对数据源的描述,如“学生”,在“用户名称”文本框中输入“scott”。d) 单击“确定”按钮,然后在 ODBC 数据库管理框中单击“确定”关闭“数据源管理器”框。此时,ODBC 数据源建立完成。2应用 AppWizard 生成初始应用程序“Addresslist”a) 在 VC+6.0 菜单条中,选择“File”下拉菜单中的“New”选项,打开框。“New”b)
15、 单击“Projects”,显示“Projects”属性页。在左侧的列表框中选择“MFC AppWizard(exe)” 选项, 在“Project Name” 编辑框中输入“addresslist”:口。d) 单击“Next”按钮,显示“Step2”框,选择其中的“Database viewwithout file support”选项,以保证由 AppWizard 生成查看数据库内容的类。e) 由于该应用程序只与数据库打交道,而不需要文件支持,故单击“Data Source”按钮,建立应用程序与先前建立的数据源之间的连接。f) 在打开的“Database框的“ODBC”下拉列表框中选择Op
16、tions”“addresslist”数据源,。addresslist 表与应用程序的关联。单击“Next”按钮,显示“Step3”框。j) 接受缺省选项。单击“Next”按钮,显示“Step4”框。k) 清除“prPreview”复选框,单击“Advanced”按钮,显ing and pr示“Advanced Options”框,选择“Windows Styles”,清除“Thickframe”与“ize box”复选框,单击“Close”按钮,显示“Step4”框。l) 单击“Next”按钮,显示“Step5”框,单击“Next”按钮,显示“Step6”框,单击“Finish”后单击“OK
17、”,AppWizard 创建了基本的AddressList应用程序。3设置菜单与程序本实例主要功能:对的浏览、修改与查找,具体包括增加一个记录,删除当前,修改当前与查找一个满足某个属性的或集。具体如何添加菜单,举例如下。例如想添加编辑菜单下的增加子菜单,选择“Workspace”中的“ResourceView”,展开“”,双击“IDR_MAINFRAME”,展开“编辑”菜单,右键单击空白菜单,在弹出的框中选择“Propertics”,弹出“框,如下Item Properties”图:CRecordView:OnInitialUpdate();GetParentFrame()-RecalcLay
18、out();ResizeParentToFit();m_listctrl.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);LV_COLUMN lvColumn;lvColumn.mask=LVCF_FMT|LVCF_SUBITEM|LVCF_TEXT|LVCF_WIDTH;lvColumn.fmt=LVCFMT_LEFT;lvColumn.cx=80;lvColumn.pszText= 学号;m_listctrl.InsertColumn(0,&lvColumn);lvColumn.pszText=;m_listctrl.Inse
19、rtColumn(1,&lvColumn);lvColumn.pszText= 宿舍号;m_listctrl.InsertColumn(2,&lvColumn);lvColumn.pszText= 宿舍;m_listctrl.InsertColumn(3,&lvColumn);lvColumn.pszText=;m_listctrl.InsertColumn(4,&lvColumn);lvColumn.pszText= 宅电;m_listctrl.InsertColumn(5,&lvColumn);lvColumn.pszText=;m_listctrl.InsertColumn(6,&lvC
20、olumn);lvColumn.pszText=;m_listctrl.InsertColumn(7,&lvColumn);lvColumn.pszText= 备注;m_listctrl.InsertColumn(8,&lvColumn); 在中 初 始 化 : setnum=0;CAddressListView:CAddressListView()m_bconnect=false;4功能实现A实现连接、断开和重载数据库功能选择“View”下拉菜单下的“Class Wizard”,选择“Message Maps”,选择 “Classname” 为 CAddresslistView ,在 “Ob
21、jectIDs” 中选中 ID_CONNECT,在“Messages”中选中D 后单击“Add Fuction”,同时对 ID 为 ID_DISCONNECT、ID_RELOAD 的做类似操作,这时选中“WorkSpace”的“ClassView”,展开“CAddresslistView”类,可以看到以添加的三个成员函数:OnConnect、OnDisconnect、和 OnReload。双击函数编辑源代码,分别填入:void CAddressListView:OnConnect() / TODO: Add yourd handler code hereif(m_bconnect=false)
22、 m_pSet-Close();m_pSet-m_strFilter=;m_pSet-Open();Show();m_bconnect=true; else MessageBox(已连接到数据库); void CAddressListView:OnDisconnect() / TODO: Add yourd handler code hereif(m_bconnect=true)m_pSet-Close();m_bconnect=false;if(setnum!=0)m_listctrl.DeleteAllItems();setnum=0; ;Invalidate(FALSE); else M
23、essageBox(请先连接数据库); void CAddressListView:OnReload()/ TODO: Add yourd handler code hereif(m_bconnect=true)m_pSet-Close();m_pSet-m_strFilter=;m_pSet-Open(); Show(); else MessageBox(请先连接数据库); 其中 Show 函数为:Void CAddressListView:Show()if(setnum!=0)m_listctrl.DeleteAllItems();setnum=0; ;while(!m_pSet-IsEO
24、F()k;k=m_listctrl.InsertItem(setnum,m_pSet-m_SCHOOLNUM);m_listctrl.SetItemText(k,1,m_pSet-m_NAME);m_listctrl.SetItemText(k,2,m_pSet-m_ROOMNAME);m_listctrl.SetItemText(k,3,m_pSet-m_ROOMPHONE);m_listctrl.SetItemText(k,4,m_pSet-m_MOBILEPHONE);m_listctrl.SetItemText(k,5,m_pSet-m_HOMEPHONE);m_listctrl.Se
25、tItemText(k,6,m_pSet-m_NUM);m_listctrl.SetItemText(k,7,m_pSet-m_);m_listctrl.SetItemText(k,8,m_pSet-m_REMARK);setnum+;m_pSet-MoveNext(); ;Invalidate(FALSE); 函 数 的 添 加 方 法 为 右 键 单 击 “Workspace” 的的“ClassView”“CAddressListView” 类 中 , 在 弹 出 的 菜 单 中 选 中 “AddMemberFunction”,弹出如下框:共有 9 个 Edit Box 控件,9 个 Si
26、c Text 控件和 1 个 Group Box 控件,右键单击 Sic Text 控件,在弹出的菜单中选择 Properties 选项,出现 Text Properties框:选择Member Variable。在Claame编辑框中选择 CEditDlg,在Control IDs列表框中选择 IDC_SCHOOLNUM。单击Add Variable按钮显示Add Member Variable框,在Member Variable Name下拉列表框中,填入m_schoolnum,如下图:CEditDlg dlg;if(dlg.DoModal()=IDOK)try m_pSet-AddNew
27、();m_pSet-m_SCHOOLNUM=dlg.m_schoolnum;m_pSet-m_NAME=dlg.m_name;m_pSet-m_ROOMNAME=dlg.m_roomnum;m_pSet-m_ROOMPHONE=dlg.m_roomphone;m_pSet-m_MOBILEPHONE=dlg.m_mobilephone;m_pSet-m_HOMEPHONE=dlg.m_homephone;m_pSet-m_NUM=dlg.m_num;m_pSet-m_=dlg.m_;m_pSet-m_REMARK=dlg.m_remark;m_pSet-Update();m_pSet-Requ
28、ery();Show(); catch(CDBException * e)AfxMessageBox(e-m_strError);e-Delete(); else MessageBox(请先连接数据库); void CAddressListView:OnDelete() / TODO: Add yourd handler code hereif(m_bconnect=true) ITION=m_listctrl.GetSelectedItemition();if (= NULL) MessageBox(请选择所要删除的元组); else while () nItem = m_listctrl.
29、GetNextSelectedItem();m_pSet-SetAbsoluteition(nItem+1);try m_pSet-Delete();m_pSet-Requery(); catch(CDBException* e) MessageBox(e-m_strError);e-Delete(); ; Show(); else MessageBox(请先连接数据库); void CAddressListView:OnModify() / TODO: Add yourd handler code hereif(m_bconnect) ITION=m_listctrl.GetSelected
30、Itemition();if (= NULL) MessageBox(请选择所要修改的元组); else while () nItem = m_listctrl.GetNextSelectedItem();m_pSet-SetAbsoluteition(nIte+1);CEditDlg dlg;dlg.m_schoolnum=m_pSet-m_SCHOOLNUM;dlg.m_name=m_pSet-m_NAME;dlg.m_roomnum=m_pSet-m_ROOMNAME;dlg.m_roomphone=m_pSet-m_ROOMPHONE;dlg.m_mobilephone=m_pSet-
31、m_MOBILEPHONE;dlg.m_homephone=m_pSet-m_HOMEPHONE;dlg.m_num=m_pSet-m_NUM;dlg.m_=m_pSet-m_;dlg.m_remark=m_pSet-m_REMARK;UpdateData(FALSE);if(dlg.DoModal()=IDOK) UpdateDaRUE);try m_pSet-Edit();m_pSet-m_SCHOOLNUM=dlg.m_schoolnum;m_pSet-m_NAME=dlg.m_name;m_pSet-m_ROOMNAME=dlg.m_roomnum;m_pSet-m_ROOMPHONE
32、=dlg.m_roomphone;m_pSet-m_MOBILEPHONE=dlg.m_mobilephone;m_pSet-m_HOMEPHONE=dlg.m_homephone;m_pSet-m_NUM=dlg.m_num;m_pSet-m_=dlg.m_;m_pSet-m_REMARK=dlg.m_remark;m_pSet-Update(); catch(CDBException* e) MessageBox(e-m_strError);e-Delete(); m_pSet-SetAbsoluteition(1);Show(); else void CAddressListView:O
33、nAdd() / TODO: Add yourd handler code hereif(m_bconnect=true) CEditDlg dlg;if(dlg.DoModal()=IDOK) try m_pSet-AddNew();m_pSet-m_SCHOOLNUM=dlg.m_schoolnum;m_pSet-m_NAME=dlg.m_name;m_pSet-m_ROOMNAME=dlg.m_roomnum;m_pSet-m_ROOMPHONE=dlg.m_roomphone;m_pSet-m_MOBILEPHONE=dlg.m_mobilephone;m_pSet-m_HOMEPHO
34、NE=dlg.m_homephone;m_pSet-m_NUM=dlg.m_num;m_pSet-m_=dlg.m_;m_pSet-m_REMARK=dlg.m_remark;m_pSet-Update();m_pSet-Requery();Show(); catch(CDBException * e) AfxMessageBox(e-m_strError);e-Delete(); else MessageBox(请先连接数据库); void CAddressListView:OnDelete() / TODO: Add yourd handler code hereif(m_bconnect
35、=true) ITION=m_listctrl.GetSelectedItemition();if (= NULL) MessageBox(请选择所要删除的元组); else while () nItem = m_listctrl.GetNextSelectedItem();m_pSet-SetAbsoluteition(nItem+1);try m_pSet-Delete(); m_pSet-Requery(); catch(CDBException* e) MessageBox(e-m_strError);e-Delete(); ; Show(); else MessageBox(请先连接
36、数据库); void CAddressListView:OnModify() / TODO: Add yourd handler code hereif(m_bconnect) ITION=m_listctrl.GetSelectedIteition();if (= NULL) MessageBox(请选择所要修改的元组); else while () int nItem = m_listctrl.GetNextSelectedItem();m_pSet-SetAbsoluteition(nItem+1);CEditDlg dlg;dlg.m_schoolnum=m_pSet-m_SCHOOL
37、NUM;dlg.m_name=m_pSet-m_NAME;dlg.m_roomnum=m_pSet-m_ROOMNAME;dlg.m_roomphone=m_pSet-m_ROOMPHONE;dlg.m_mobilephone=m_pSet-m_MOBILEPHONE;dlg.m_homephone=m_pSet-m_HOMEPHONE;dlg.m_num=m_pSet-m_NUM;dlg.m_=m_pSet-m_;dlg.m_remark=m_pSet-m_REMARK;UpdateData(FALSE);if(dlg.DoModal()=IDOK) UpdateDaRUE);try m_p
38、Set-Edit();m_pSet-m_SCHOOLNUM=dlg.m_schoolnum;m_pSet-m_NAME=dlg.m_name;m_pSet-m_ROOMNAME=dlg.m_roomnum;m_pSet-m_ROOMPHONE=dlg.m_roomphone;m_pSet-m_MOBILEPHONE=dlg.m_mobilephone;m_pSet-m_HOMEPHONE=dlg.m_homephone;m_pSet-m_NUM=dlg.m_num;m_pSet-m_=dlg.m_;m_pSet-m_REMARK=dlg.m_remark;m_pSet-Update(); catch(CDBException* e) MessageBox(e-m_strError);e-Delete(); m_pSet-SetAbsoluteition(1);Show(); else MessageBox(请先连接数据库); C实现检索功能1.添加一个新的框资源 在Workspace中的ResourceView下,Dialog选择Insert Dialog,出现 IDD_DIALOG1,右键选择 Propertics 弹出 DialogPropertics框 , 在 ID中
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 阿尔茨海默症老人居家看护手册
- 针灸临床治疗操作手册
- 高血压人群饮食管理方案
- 安全生产法普法教育实施方案
- 胃癌潜在新型生物标志物临床探索研究进展总结2026
- 河道内杆塔基础加固施工方案
- 中学地理教学热点问题解析
- 房地产资金管理及风险控制实务
- 圆明园的毁灭公开课一等奖
- 三年级英语易错题汇编与讲解
- 2026浙江杭州市融资担保集团有限公司春季招聘5人笔试参考试题及答案解析
- 2026温州瓯海全域空间设计咨询有限公司面向社会招聘2人备考题库及答案详解(新)
- 2026福建南平武夷发展集团有限公司招聘应届毕业生24人备考题库及答案详解(全优)
- 2026贵阳市创业投资有限公司(第一批)对外招聘3人备考题库及一套完整答案详解
- 陕西演艺集团招聘笔试题库2026
- 2024版慢性鼻窦炎诊断和治疗指南课件
- 2026年超星尔雅《论语》精读题库高频重点提升审定版附答案详解
- 2026宁波市中考语文知识点背诵清单练习含答案
- 2026年湖北武汉市八年级地理生物会考真题试卷(+答案)
- 氟喹诺酮类药物合理使用更新总结2026
- 个人现实表现材料1500字
评论
0/150
提交评论