上海大学数据库上机作业上机练习4作业

发布 2022-09-05 09:22:28 阅读 3873

上大学数据库上机作业。

数据库系统与应用》上机习题。

第四部分、sql查询━━嵌套和组合统计查询。

要求掌握:利用sql查询语言表达嵌套查询语句以及数据查询中的统计计算和组合操作。

1、做书上第九章余下的例题,并完成书上练习题9中第题。

exists(select * from where name=student)

二、利用图书_读者数据库。

1. 求机械工业出版社出版的各类图书的平均价。

use 图书读者。

select 类别,**g(定价)as 平均价。

from 图书。

where 出版社='机械工业出版社'

group by 类别。

2. 求各类图书的最**、最低价、图书的数量。

use 图书读者。

select 类别,max(定价)as 最**,min(定价)as 最低价,count(*)as 数量。

from 图书。

group by 类别。

3. 查找图书类别,要求类别中最高的图书定价不低于全部按类别分组的图书平均定价的1.5倍。

use 图书读者。

select 类别

from 图书

where 定价= all

select max(定价)

from 图书

where 定价<=all

select **g(定价)*1.5

from 图书) )

4.计算机类和机械工业出版社出版的图书。

use 图书读者。

select *

from 图书。

where 出版社='机械工业出版社' and 类别='计算机'

5.查询所有读者借阅过的书,要求按读者姓名、书名来排序。

use 图书读者。

select 读者。编号,借阅。读者编号,姓名,书名。

from 图书,读者,借阅。

where 读者。编号=借阅。读者编号 and 借阅。书号=图书。书号。

order by 姓名。

6. 查询所有在2008.11.15日以后被借阅过的图书名及借阅者。

use 图书读者。

select 读者。编号,借阅。读者编号,书名,姓名,借阅日期。

from 图书,读者,借阅。

where 读者。编号=借阅。读者编号 and 借阅。书号=图书。书号

and 借阅日期》'2008-11-15'

order by 姓名。

三、利用上次上机的学生_课程数据库。

1. 查询每个学生的情况以及他所选修的课程。

use 学生课程。

select 学生。学号,姓名,选课。课程号,课程名,单位。

from 学生,选课,课程。

where 学生。学号=选课。学号 and 选课。课程号=课程。课程号。

order by 学号。

2. 求学生的学号、姓名、选修的课程名及成绩。

use 学生课程。

select 学生。学号,姓名,选课。课程号,课程名,成绩。

from 学生,选课,课程。

where 学生。学号=选课。学号 and 选课。课程号=课程。课程号。

order by 学号。

3. 求选修c1课程且成绩为90分以上的学生学号、姓名及成绩。

use 学生课程。

select 学生。学号,姓名,选课。课程号,课程名,成绩。

from 学生,选课,课程。

where 学生。学号=选课。学号 and 选课。课程号=课程。课程号and 选课。课程号=’c1’ and 成绩》90

order by 学生。学号。

4. 查询每门课程的间接先行课(就是先行课的先行课)。

use 学生课程。

select 选课。课程号,课程名,先行课。

from 选课,课程。

where 选课。课程号=课程。课程号。

4、完成书上p158页上机实验题4

1.显示所有职工的年龄,并按职工号递增排序。

use factory

select 职工号,datediff(yy,getdate(),出生日期) as 年龄。

from worker

order by 职工号。

2.求出各部门的党员人数。

use factory

select 部门号,sum(cast(党员否 as bigint))as 党员人数。

from worker

where 党员否='true'

group by 部门号。

3.显示所有职工的姓名和2023年1月份的工资数。

use factory

select 姓名,工资。

from salary

where 日期='2004-01-04'

4.显示所有职工的职工号、姓名和平均工资。

use factory

select 职工号,姓名,**g(工资)as 平均工资。

from salary

group by 职工号,姓名。

5.显示所有职工的职工号、姓名、部门名和2023年2月份的工资,并按部门名顺序排序。

use factory

select salary.职工号,salary.姓名,部门名,工资。

from salary,depart,worker

where worker.部门号=depart.部门号 and 日期='2004-02-03' and worker.职工号=salary.职工号。

order by 部门名。

6.显示个部门名和该部门的所有职工平均工资。

use factory

select depart.部门名,**g(工资)as 平均工资。

from salary,depart,worker

where worker.部门号=depart.部门号 and worker.职工号=salary.职工号。

group by depart.部门名。

7.显示所有平均工资高于1200的部门名和对应的平均工资。

use factory

select depart.部门名,**g(工资)as 平均工资。

from salary,depart,worker

where worker.部门号=depart.部门号

and worker.职工号=salary.职工号。

group by depart.部门名。

h**ing **g(工资)>1200

8.显示所有职工的职工号、姓名和部门类型,其中财务部和人事部属管理部门,市场部属市场部门。

use factory

select worker.职工号,worker.姓名,case rtrim(部门名)

when '财务处'then'管理部门'

when '人事处'then'管理部门'

when '市场部'then'市场部门'

else '其他部门'

end as 部门类型。

from worker inner join depart on worker.部门号=depart.部门号。

9.若存在职工号为10的职工,则显示其工作部门名称,否则显示相应的提示信息。

use factory

go declare @no int,@dep char(10)

set @no=10

if exists(select * from worker where 职工号=@no)

begin

select @dep=depart.部门名。

from worker,depart

where worker.职工号=@no and worker.部门号 =depart.部门号。

print '职工号为'+cast(@no as char(2))+的职工在'+

cast(@dep as char(6))+工作'

endelseqw

print '不存在该员工的记录'

go第二种:

use factory

declare @cno int

set @cno=10

if existi (select * from worker where 职工号=@cno)

select 部门名 from depart where 部门号 in(select 部门号 from worker where 职工号=@cno)

else select ‘没有该工号’

10.求出男女职工的平均工资,若男职工平均工资高于女职工平均工资50%,怎显示“南‘男职工比女职工的工资高多了’,若男职工平均工资高于女职工平均工资比率在1.5-0.

8之间,则显示男职工平均工资高于女职工平均工资差不多“”的信息,否则“女职工平均工资高于男职工平均工资”

use factory

go declare @**g1 float,@**g2 float,@ratio float

-计算男职工平均工资。

select @**g1=**g(工资)

from worker,salary

where worker.职工号=salary.职工号 and worker.性别='男'

-计算女职工平均工资。

select @**g2=**g(工资)

from worker,salary

where worker.职工号=salary.职工号 and worker.性别='女'

set @ratio=@**g1/@**g2

if @ratio>1.5

print '男职工比女职工的工资高多了'

elseif @ratio>=0.8

print '男职工跟女职工的工资差不多'

elseprint '女职工比男职工的工资高多了'go

上海大学数据库上机作业上机练习

三 利用上次上机的学生 课程数据库。1.求计算机学院学生的学号和姓名。use学生课程。select学号,姓名,单位from学生。where单位 计算机学院 2.求选修了课程的学生学号 利用select命令中distinct选项 use学生课程。select distinct学号from选课。3.求选...

上海大学数据库上机作业上机练习

上海大数据库。数据库系统与应用 上机习题。第六部分 sql高级应用。要求掌握 熟练掌握t sql语言,了解事务处理的相关语句,学会用游标方式对数据库进行操作。1 写出书上练习题10中第 题的结果,并上机验证。完成第 题。14.给出下列程序的执行结果。use school select sno,cno...

上海大学数据库上机作业上机练习2作业 1

上大学数据库上机作业。数据库系统与应用 上机习题。第二部分 sql查询 单表查询。二 使用购进凭证数据库 由老师提供复制,内含 商品信息表 和 购进凭证表 只显示购进凭证表中凭证号 单价 数量 并输出一个计算字段 金额 计算金额的公式是 单价 数量。注 不是增加字段 use 购进凭证。select ...