上海大数据库。
数据库系统与应用》上机习题。
第六部分、sql高级应用。
要求掌握:熟练掌握t-sql语言,了解事务处理的相关语句,学会用游标方式对数据库进行操作。
1、写出书上练习题10中第题的结果,并上机验证。完成第题。
14.给出下列程序的执行结果。
use school
select sno,cno,degree
from score
where sno in (103,105)
order by sno
compute **g(degree) by sno
go15.给出下列程序的执行结果。
use school
goselect as '教师', as '班号',**g( as '平均分'
from student,course,score,teacher
where and and
group by with cube
go16.给出下列程序的执行结果。
use school
gobegin transaction mytran
-启动事务。
insert into teacher
values(999,'张瑛','男','1960/03/05','教授','计算机系')
插入一个教师记录。
s**e transaction mytran
-保存点。insert into teacher
values(888,'胡丽','男','1982/8/04','副教授','电子工程系')
rollback transaction mytran
commit transaction
goselect *
from teacher
-查询教师表的记录。
go delete teacher where tno='999'
-删除插入的记录。
go17.编写一个程序,查询最高分的课程名。
use school
select cname
from course,score
where and degree=(select max(degree) from score)
2、完成书上上机实验题5
1.1)进入企业管理器,展开数据库,单击“factory”,单击下方的“关系图”。
2)在数据库关系图中,选择要表示要从关系图中删除的关系的联接线。
3)右击关系线,并从快捷菜单中选择“从数据库中删除关系”。
4)出现一个消息框,提示确认删除。单击“是”按钮。
factory
select worker.职工号,worker.姓名,salary.工资。
from worker,salary
where worker.职工号=salary.职工号。
order by worker.职工号,worker.姓名。
compute sum(salary.工资) by worker.职工号。
factory
select worker.性别,depart.部门名,**g(salary.工资) as '平均工资'
from worker,salary,depart
where worker.职工号=salary.职工号 and worker.部门号=depart.部门号。
group by worker.性别,depart.部门名 with cube
order by worker.性别,depart.部门名。
factory
goinsert into worker values(20,'陈立','女','55/03/08',1,'75/10/10',4)
go insert into depart values(5,'设备处')
goselect worker.职工号,worker.姓名,depart.部门名。
from worker full join depart
on(worker.部门号=depart.部门号)
order by worker.职工号。
godelete from worker where 职工号='20'
godelete from depart where 部门号='5'
gofactory
select worker.职工号,worker.姓名,depart.部门名,salary.日期,salary.工资。
from worker,salary,depart
where worker.职工号=salary.职工号 and worker.部门号=depart.部门号。
and salary.工资=(select max(工资) from salary)
factory
select 部门名。
from depart
where 部门号=(select 部门号 from worker
where 职工号=(select 职工号 from salary
where 工资=(select max(工资) from salary ))
factory
select 职工号,姓名。
from worker
where 职工号 in(select 职工号 from salary
group by 职工号 h**ing **g(工资)<(select **g(工资) from salary ))
factory
go set nocount on
-声明变量。
declare @dname char(10)
-声明游标。
declare d_cursor cursor
for select 部门名。
from depart
where 部门号=
select 部门号
from worker
where 职工号=
select 职工号
from salary
where 工资=
select max(工资)
from salary )
-打开游标。
open d_cursor
-提取第一行数据。
fetch next from d_cursor into @dname
--打印表标题。
print '部门名'
while @@fetch_status =0
begin
-打印一行数据。
print @dname
-提取下一行数据。
fetch next from d_cursor into @dname
end --关闭游标。
close d_cursor
--释放游标。
deallocate d_cursor
go factory
go set nocount on
-声明变量。
declare @no int,@name char(10)
-声明游标。
declare w_cursor cursor
for select 职工号,姓名。
from worker
where 职工号 in
select 职工号
from salary
group by 职工号
h**ing **g(工资)<(select **g(工资) from salary ))
-打开游标。
open w_cursor
-提取第一行数据。
fetch next from w_cursor into @no,@name
--打印表标题。
print '职工号姓名'
while @@fetch_status =0
begin
-打印一行数据。
print cast(@no as char(8))+name
-提取下一行数据。
fetch next from w_cursor into @no,@name
end --关闭游标。
close w_cursor
--释放游标。
deallocate w_cursor
go factory
go declare @num int
select @num=count(*)
from worker
print '原职工人数:'+cast(@num as char(3))
go declare @num int
begin transaction
-启动事务。
-插入一个职工记录。
insert into worker values(20,'陈立','女','55/03/08',1,'75/10/10',4)
print '插入一个职工记录'
select @num=count(*)
from worker
print '职工人数:'+cast(@num as char(3))
rollback transaction
-回滚事务。
go print '回滚事务'
declare @num int
select @num=count(*)
from worker
print '职工人数:'+cast(@num as char(3))go
上海大学数据库上机作业上机练习
三 利用上次上机的学生 课程数据库。1.求计算机学院学生的学号和姓名。use学生课程。select学号,姓名,单位from学生。where单位 计算机学院 2.求选修了课程的学生学号 利用select命令中distinct选项 use学生课程。select distinct学号from选课。3.求选...
上海大学数据库上机作业上机练习4作业
上大学数据库上机作业。数据库系统与应用 上机习题。第四部分 sql查询 嵌套和组合统计查询。要求掌握 利用sql查询语言表达嵌套查询语句以及数据查询中的统计计算和组合操作。1 做书上第九章余下的例题,并完成书上练习题9中第 题。exists select from where name studen...
上海大学数据库上机作业上机练习2作业 1
上大学数据库上机作业。数据库系统与应用 上机习题。第二部分 sql查询 单表查询。二 使用购进凭证数据库 由老师提供复制,内含 商品信息表 和 购进凭证表 只显示购进凭证表中凭证号 单价 数量 并输出一个计算字段 金额 计算金额的公式是 单价 数量。注 不是增加字段 use 购进凭证。select ...