数据库定义与操作语言练习题
设有如下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 工程号 in(select 工程号 from 工程 where 预算>=200000 and 工程名称 like'%大数据')
(6)往报酬表增加一条信息(职工号: 1102001, 工程号: 10001,工资: 5000)。
insert into 报酬(职工号,工程号,工资)
values('1102001','10001',5000)
(7)删除职工陈明所参加的工程信息。
delete from 报酬
where 职工号 in (select 职工号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