数据库系统原理实验讲义newWord格式文档下载.docx
《数据库系统原理实验讲义newWord格式文档下载.docx》由会员分享,可在线阅读,更多相关《数据库系统原理实验讲义newWord格式文档下载.docx(49页珍藏版)》请在冰豆网上搜索。
Updata学生
Set系编号#=002
Where姓名=“张三”and系编号#=001
(5)统计学生总人数。
Selectcount(学号#)
From学生
(6)显示计算机系的学生的信息。
Select*
From教师,任课,课程
Wher课程名=”数据库原理”and课程.课程编号#=任课.课程编号#and任课.教师编号#=教师.教师编号#
(7)查找法律系的系办电话。
Select系办电话
From院系
Where系名=“法律系”
(8)删除2000级的学生记录。
Deletefrom学生
Where年级=“2000级”
(9)将计算机系教师张明的职称升为教授。
Updata教师
Set职称=“教授”
Where姓名=”张明”and教师编号#=(select教师编号#
Where系名=“计算机系”)
(10)统计计算机系教师张明的任课门数。
Selectcount(课程编号#)
From院系,教师,任课
Where院系.系名=“计算机系”and院系.系编号#=教师.系编号#
and教师.教师编号#=任课.教师编号#
(11)统计每个系的教师的人数。
Select系编号#,count(教师编号#)
From教师
Groupby系编号#
(12)查找教授数据库原理的教师的姓名。
Select教师.姓名
Where课程名=“数据库原理”and课程.课程编号#=任课.课程编号#and任课.教师编号#=教师.教师编号#
(13)删除1020号教师的任课记录。
Deletefrom任课
Where教师编号#=“1020”
(14)将课程数据库原理的学分设为4.
Updata课程
Set学分=4
Where课程名=数据库原理
(15)学生王明每选一个学分交费100元,统计它的选课总费用。
Selectsum(学分)*100
From学生,课程,选课
Where学生.学号#=选课.学号#and选课.课程编号=课程.课程编号#
(16)统计20岁的学生总人数。
Selectcount(age)
Where学生.年龄=20
(17)选修数据库原理的学生名单
secect学生.姓名
from学生,课程,选课
where课程.课程名=“数据库原理”and课程.课程编号#=选课.课程编号#and选课.学号#=学生.学号#
(18)删除20030号学生的选课记录
deletefrom选课
where学号#=“200030”
(19)建立一个存储过程,通过输入学号,显示学生的姓名,选课课程名,成绩,并统计出选课门数。
Createprocedurereport@idchar(8)as
Select学生.姓名,课程.课程名,选课.成绩,count(课程.课程编号#)
Where学生.学号#=@idand选课.学号#=学生.学号#and选课.课程编号#=课程.课程编号#
(20)建立一个存储过程,通过输入教师编号,显示教师的姓名,任课课程名,教师院系。
Createprocedurereport@idchar(8)as
Select教师.姓名,课程.课程名,院系.系名
From院系,课程,教师,任课
Where教师.教师编号#=@idand任课.教师编号#=教师.教师编号#and课程.课程编号#=任课.课程编号and教师.系编号=院系.系编号
(21)建立一个存储过程,输入系编号显示学生的学号,姓名。
Createprocedurereport@idchar(8)as
Select学号#,姓名
Where系编号#=@id
2、有一数据库,包含以下基本表:
(1)建立销售明细表,销售编号为主码,外码为商品编号,会员号。
Createtable销售明细
(销售编号#char(4),
商品编号#char(4),
会员号#char(4),
数量integer,
时间time,
primarykey(销售编号#),
foreignkey(商品编号#)references商品(商品编号#),
foreignkey(会员号#)references会员(会员号#),
(2)添加一条商品记录(00697,雕牌肥皂,浙江,2.00,日化)
insertinto商品values(00697,”雕牌肥皂”,”浙江”,2.00,”日化”)
(3)产生00695号产品的销售细帐。
From销售明细
Where商品编号#=00695
(4)根据商品编号00695查找该商品的销售总量。
Selectsum(数量)
(5)根据会员号104095删除其会员记录。
Deletefrom会员
Where会员号#=104095
(6)建立一个黄金会员视图。
(消费总金额高于5000的会员为黄金会员)
createview黄金会员
as(select*
from会员
where消费总金额>
5000)
(7)建立一个触发器,实现当输入一条销售记录时,将消费金额自动累加到会员的消费总金额。
Createtriggertriname
On销售明细
Forinsertas
Updata会员
Set消费总金额=消费总金额+sum(销售明细.数量*商品.单价)
Where销售明细.会员号#=会员.会员号#and商品.商品编号#=销售明细.商品编号#
实验二PowerBuilder编程基础
2、掌握PowerBuilder语法及函数的使用。
1、对w_data的open事件编程,使w_data一打开dw_1中就显示数据。
(1)显示数据
Dw_1.settransobjict(splca)
Dw_1.retrieve()
(2)添加intI
I=dw_1.insertrow(0)
Dw_1.scrolltorow(i)
Dw_1.setfocus()
删除dw_1.deleterow(0)
保存intj
j=dw_1.updata()
ifI=-1then
messagebox(“information”,“数据无法保存”)
endif
关闭close(parent)
(3)对w_data的closequery事件编程,使dw_1中的数据发生改变而又未保存就退出窗口时给用户一个消息框提示。
Integerm
Ifdw_1.modifiedcount()+deletedcount()>
0then
M=messagebox(“信息”“数据已改变,是否保存”,question!
YesNoCance!
Ifm=1then
Ifdw_1.updata()=-1then
Messagebox(“information”,”无法保存数据”)
Else
Messagebox(“information”,”已保存数据”)
Endif
Return0
Elseifm=2then
Elseifm=3then
Return1
2、ddlb_1中为各系名称,当选择了一个系后tv_1显示该系学生姓名,对ddlb_1的selectionchanged事件编程。
IntI
Stringoutname
Declarenamecurcursorfor
Selectdistinctdepartment
Wheredepartment=:
ddlb_1.text
Opennamecur;
Ifsqlca.sqlcode=-1then
Messagebox(“sqlerror“,sqlca,sqlerrtext)
Else
Fetchnamecurinto:
outname;
Dowheresqlca.sqlcode=0
Frtchnamecurinto:
I=tv_1.insertitemlast(),outname,2)
L00pwhilesqlca.sqlcode=0
Tv_1:
deleteitem(i)
Endif
Closenamecur;
3、ddlb_1为下拉列表框,st_1,st_2为静态文本框。
该窗口打开时,ddlb_1从数据库中的院系表中读出了所有系名,当选择了某系时st_1,st_2分别显示该系系领导和系办电话。
(1)在w_1的open事件下编程。
Ddlb_1.additem(outname)
L00p
(2)在ddlb_1的selectionchanged事件下编程。
Select系领导,系办电话
Where系名=:
:
st_1.text=系领导
st_2.text=系办电话
4、w_query上有控件ddlb_1和dw_1,在ddlb_1中选择系名后dw_1中显示该系的学生。
(1)如果通过带参数的数据窗口对象来完成,请问dw_1中的数据窗口对象的数据源为quickselect还是sqlselect。
答:
sqlselect。
(2)为ddlb_1的selectionchanged事件编程。
Dw_1.settransobject(sqlca)
Dw_1.retricve(ddlb_1.text)
5、当选择了某单选框并输入选择条件,按回车后,dw_1中显示满足条件的记录。
请对以下控件编程。
(1)rb_1
sle_1.enabled=true
(2)sle_1
dw-1.setfilter(“姓名=‘”+sle_1.text+”‘”)
dw_1.filter()
cb_1.visible=true
(3)cb_1
rb_1.checked=false
rb_2.checked=false
rb_3.checked=false
rb_4.checked=false
sle_1.text=“”
sle_2.text=“”
sle_3.text=“”
sle_4.text=“”
sle_1.enable=false
sle_2.enable=false
sle_3.enable=false
sle_4.enable=false
6、lv_1为列表视图,报表风格,当w_list打开时lv_list中显示数据库中学生表的所有学生的信息。
请为w_1的open事件编程。
IntegerI,j,outage
Stringoutname,outsex,soutage
Lv_1.addcolumn(“姓名”,left!
800)
Lv_1.addcolumn(“性别”,left!
500)
Lv_1.addcolumn(“年龄”,left!
200)
Select姓名,性别,年龄
From学生;
Ifsqlca.sqlcode=1then
Messagebox(“sql.error”,sqlca.sqlerrtext)
Else
I=1
Do
outname,:
outsex,:
outage;
J=I
Lv_1.setitem(I,2,outname)
Lv_1.setitem(I,2,outsex)
Soutage=string(outage)
Lv_1.setitem(I,3,soutage)
I++
Loopwhilesqlca.sqlcode=0
Lv_1.deleteitem(j)
Endif
实验三计算器设计
2、掌握PowerBuilder数据窗口的创建及使用。
1、用PowerBuilder实现如下计算器(图1):
(图1)
(CTRL+C:
复制按钮及按钮中的代码;
CTRL+T:
复制按钮但不复制按钮中相应的代码)
(1)声明变量
decimaldata//保存中间结果
charstr//保存按下的运算符
intflag//flag=1表示按下的数字是前面数字的一部分,flag=0表示按下的数字是一个新的数字的开始
(2)十个数字按钮和小数点按钮代码
ifflag=0then
sle_1.text="
"
flag=1
sle_1.text=sle_1.text+this.text
(3)+、-、*、/运算按钮代码
choosecasestr
case'
*'
sle_1.text=string(dec(sle_1.text)*data)
/'
sle_1.text=string(data/dec(sle_1.text))
+'
sle_1.text=string(dec(sle_1.text)+data)
-'
sle_1.text=string(data-dec(sle_1.text))
endchoose
data=dec(sle_1.text)
str=this.text
flag=0
(4)“清除”按钮代码
sle_1.text="
data=0
str='
'
(5)“=”按钮代码
(6)“应用程序”open事件代码
open(w_calculator)
2、求一元二次方程的实根:
ax2+bx+c=0(如图2)
建六个静态文本框(st_1、st_2、st_3、st_4、st_5),五个单行编辑框(sle_1、sle_2、sle_3、sle_4、sle_5),三个命令按钮(cb_1、cb_2、cb_3)
(图2)
(1)“求解”按钮代码
deca,b,c,d,x1,x2
a=dec(sle_1.text)
b=dec(sle_2.text)
c=dec(sle_3.text)
d=b*b-4*a*c
ifd>
=0then
x1=(-b+sqrt(d))/(2*a)
x2=(-b-sqrt(d))/(2*a)
sle_4.text=string(round(x1,6))
sle_5.text=string(round(x2,6))
else
messagebox("
提示"
"
方程无实根"
(2)“清除”按钮代码
sle_2.text="
sle_3.text="
sle_4.text="
sle_5.text="
(3)“退出”按钮代码
close(w_aa)
(4)应用程序open事件代码
open(w_aa)
实验四数据窗口设计
1、建立数据库有数据表
(1)建立学生信息表s:
表1
sno
sname
sex
age
sedept
9801
李铭
男
19
计算机软件
9802
刘晓鸣
20
计算机应用
9806
刘成刚
21
9807
王铭
22
9808
宣明尼
女
18
9809
柳红利
9803
李明
9804
张鹰
9805
刘竟静
创建S表的SQL命令如下:
createtableS(snochar(4),snamechar(8),sexchar
(2),agechar
(2),sdeptchar(10));
insertintoSvalues('
9801'
'
李铭'
男'
19'
计算机软件'
);
9802'
刘晓鸣'
20'
计算机应用'
9806'
刘成刚'
21'
9807'
王铭'
22'
9808'
宣明尼'
女'
18'
9809'
柳红利'
9803'
李明'
9804'
张鹰'
9805'
刘竟静'
select*fromS;
(2)建立学生课程信息表c:
表2
cno
cname
cdept
tname
C1
PASCAL
王晓名
C2
数据结构
刘红
C6
WINDOW技术
吴志刚
C3
离散数学
李严劲
C4
计算机原理
C5
数据库原理
C9
系统结构
C8
编译原理
蒋莹岳
创建C表的SQL命令如下:
createtablec(cnochar(4),cnamechar(10),cdeptchar(10),tnamechar(8));
insertintocvalues('
c1'
PASCAL'
王晓名'
c2'
数据结构'
刘红'
c6'
WINDOW技术'
吴志刚'
c3'
离散数学'
李严劲'
c4'
计算机原理'
c5'
数据库原理'
insertintocvalues('
c9'
系统结构'