check (性别=‘男’或‘女’), )
(2) 建立教师表,主码为教师编号,外码为系编号。 Create table 教师
(教师编号# char(8) not null, 姓名 char(8) not null, 年龄 smallint, 职称 char(4), 系编号 integer,
primary key (教师编号#),
foreign key (系编号) references 院系 (系编号#), )
(3) 建立选课表,主码为学号和课程编号,外码为学号,课程编号。 Create table 选课
(学号# char(8),
课程编号# char(4), 成绩 smallint,
primary key (学号#, 课程编号#),
foreign key (学号#) references 学生(学号#),
foreign key (课程编号#) references 课程(课程编号#), check ((成绩 is null ) or (成绩 between 0 and 100 )), )
(4) 将学生张三从编号为001的系转到编号为002的系。
Updata 学生
Set 系编号# = 002
Where 姓名=“张三”and 系编号#=001
(5) 统计学生总人数。
Select count (学号#) From 学生
(6) 显示计算机系的学生的信息。
Select *
From 教师,任课,课程
Wher 课程名=”数据库原理” and 课程.课程编号# = 任课.课程编号# and 任课.教师编号# = 教师.教师编号#
(7) 查找法律系的系办电话。 Select 系办电话 From 院系
Where 系名= “法律系”
第 6 页 共 17 页
(8) 删除2000级的学生记录。
Delete from 学生
Where 年级= “2000级”
(9) 将计算机系教师张明的职称升为教授。
Updata 教师
Set 职称= “教授”
Where 姓名= ”张明” and 教师编号# = ( select 教师编号#
From 院系
Where 系名= “计算机系”)
(10) 统计计算机系教师张明的任课门数。
Select count (课程编号#) From 院系,教师,任课
Where 院系.系名= “计算机系” and 院系.系编号# = 教师.系编号# and 教师.教师编号# = 任课.教师编号#
(11) 统计每个系的教师的人数。
Select 系编号#, count (教师编号#) From 教师
Group by 系编号#
(12) 查找教授数据库原理的教师的姓名。
Select 教师.姓名
From 教师,任课,课程
Where 课程名= “数据库原理” and 课程.课程编号# = 任课.课程编号# and 任课.教师编号# = 教师.教师编号#
(13) 删除1020号教师的任课记录。
Delete from 任课
Where 教师编号# = “1020”
(14) 将课程数据库原理的学分设为4.
Updata 课程 Set 学分 = 4
Where 课程名= 数据库原理
(15) 学生王明每选一个学分交费100元,统计它的选课总费用。
Select sum (学分)* 100 From 学生,课程,选课
Where 学生.学号# = 选课.学号# and 选课.课程编号 = 课程.课程编号#
(16) 统计20岁的学生总人数。
Select count (age)
第 7 页 共 17 页
From 学生
Where 学生.年龄 = 20
(17) 选修数据库原理的学生名单
secect 学生.姓名
from 学生,课程,选课
where 课程.课程名 = “ 数据库原理” and 课程.课程编号# = 选课.课程编号# and 选课.学号# = 学生.学号#
(18) 删除20030号学生的选课记录
delete from 选课
where 学号# = “200030”
(19) 建立一个存储过程,通过输入学号,显示学生的姓名,选课课程名,成绩,并统计
出选课门数。
Create procedure report @id char(8) as
Select 学生.姓名,课程.课程名,选课.成绩,count (课程.课程编号#) From 学生,课程,选课
Where 学生.学号# = @id and 选课.学号# = 学生.学号# and 选课.课程编号# = 课程.课程编号#
(20) 建立一个存储过程,通过输入教师编号,显示教师的姓名,任课课程名,教师院系。
Create procedure report @id char(8) as Select 教师.姓名,课程.课程名,院系.系名 From 院系,课程,教师,任课
Where 教师.教师编号# = @id and 任课.教师编号# = 教师.教师编号# and 课程.课程编号# = 任课.课程编号 and 教师.系编号 = 院系.系编号
(21) 建立一个存储过程,输入系编号显示学生的学号,姓名。
Create procedure report @id char (8) as Select 学号#,姓名 From 学生
Where 系编号# = @id
2、有一数据库,包含以下基本表:(表略)
(1) 建立销售明细表,销售编号为主码,外码为商品编号,会员号。
Create table 销售明细 (销售编号# char(4), 商品编号# char(4), 会员号# char(4), 数量 integer, 时间 time,
primary key (销售编号#),
foreign key (商品编号#) references 商品(商品编号#),
第 8 页 共 17 页
foreign key (会员号#) references 会员(会员号#), )
(2) 添加一条商品记录(00697,雕牌肥皂,浙江,2.00,日化)
insert into 商品 values(00697,”雕牌肥皂”,”浙江”,2.00,”日化”)
(3) 产生00695号产品的销售细帐。
Select *
From 销售明细
Where 商品编号# = 00695
(4) 根据商品编号00695查找该商品的销售总量。
Select sum (数量) From 销售明细
Where 商品编号# = 00695
(5) 根据会员号104095删除其会员记录。
Delete from 会员
Where 会员号# = 104095
(6)建立一个黄金会员视图。(消费总金额高于5000的会员为黄金会员)
create view 黄金会员 as (select *
from 会员
where 消费总金额 > 5000 )
(7)建立一个触发器,实现当输入一条销售记录时,将消费金额自动累加到会员的消费总金额。
Create trigger triname On 销售明细 For insert as Updata 会员
Set 消费总金额 = 消费总金额 + sum (销售明细.数量*商品.单价)
Where 销售明细.会员号# = 会员.会员号# and 商品.商品编号# = 销售明细.商品编号#
三、 POWER BUILDER编程 1、
(1)对w_data的open事件编程,使w_data一打开dw_1中就显示数据。 Dw_1. settransobjict (splca) Dw_1. retrieve( )
(2)添加 int I
第 9 页 共 17 页
I= dw_1. insertrow (0) Dw_1. scrolltorow (i) Dw_1. setfocus ( ) 删除
dw_1 . deleterow (0) 保存 int j
j= dw_1 . updata ( ) if I= -1 then
messagebox (“information” , “数据无法保存”) end if 关闭
close (parent )
(3)对w_data 的closequery事件编程,使dw_1中的数据发生改变而又未保存就退出窗口时给用户一个消息框提示。 Integer m
If dw_1.modifiedcount ( ) + deletedcount ( )>0 then M = messagebox (“信息”“数据已改变,是否保存”,question!YesNoCance!) If m=1 then
If dw_1.updata ( )= -1 then
Messagebox (“information”,”无法保存数据”) Else
Messagebox (“information”,”已保存数据”) End if Return 0
Elseif m=2 then Return 0
Elseif m=3 then Return 1
2、ddlb_1中为各系名称,当选择了一个系后tv_1显示该系学生姓名,对ddlb_1的selectionchanged事件编程。 Int I
String outname
Declare namecur cursor for Select distinct department From 学生
Where department = :ddlb_1.text Open namecur ;
If sqlca.sqlcode = -1 then
Messagebox ( “sql error “, sqlca ,sqlerrtext ) Else
Fetch namecur into :outname ;
第 10 页 共 17 页