数据库系统原理——SQL练习题(二)

数据库定义与操作语言练习题

设有如下3个关系模式:
职工(职工号,姓名,性别,年龄)
工程(工程号,工程名称,预算)
报酬(职工号,工程号,工资)
(1)新建报酬表,要求指定关系的主键和外键,以及工资大于零的约束。(说明:职工号char (7), 工程号char (6),工资numeric(20,2))

Create table 报酬(
职工号char (7),
工程号char (6),
工资numeric(20,2) check(工资>0),
primary key(职工号,工程号),
foreign key(职工号) references职工(职工号),
foreign key(工程号) references工程(工程号)
)

(2) 查询年龄在30岁到40岁的男职工姓名和工资。

select 姓名,工资
from 职工,报酬
where (年龄 between 30 and 40 ) and 职工.职工号=报酬.职工号 and 性别='男'

(3)查询总收入超过5万的职工信息,信息包含职工号和总收入。

select 职工号,SUM(工资)
from 报酬
group by 职工号
having SUM(工资)>50000

(4)查询没用职工参加过的工程信息。(使用IN和EXISTS)
①IN

select *
from 工程
where 工程号 not in (select 工程号 from 报酬)

②EXISTS

select *
from 工程
where 工程号 not exists (select * from 报酬 where 工程号=工程.工程号)

(5)将工程名称包含大数据,并且预算达到20万元及以上的工程的职工工资提高20%。

update 报酬
set 工资=工资*1.2
where 工程号 inselect 工程号 from 工程 where 预算>=200000 and 工程名称 like'%大数据')

(6)往报酬表增加一条信息(职工号: 1102001, 工程号: 10001,工资: 5000)。

insert into 报酬(职工号,工程号,工资)
values('1102001','10001',5000)

(7)删除职工陈明所参加的工程信息。

delete from  报酬
where 职工号 inselect 职工号from 职工 where 姓名='陈明')

(8)创建一个职工参加工程项目的视图VW1,该视图包括职工号,姓名,工程名称和工资。

create VIEW VW1 (职工号,姓名,工程名称,工资)
as
select 报酬.职工号,姓名,工程名称,工资
from 报酬,工程,职工
where 报酬.职工号=职工.职工号 and 报酬.工程号=工程.工程号

(9)查询至少有五个职工参加的工程项目,并按职工人数降序排列。

select 工程号,COUNT(职工号) 职工人数
from 工程,报酬
where 工程.工程号=报酬.工程号
group by (工程号)
having count(职工号)>=5
order by count(职工号) desc
  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值