create table 员工
(
编号 int,
姓名 varchar(10),
性别 char(2),
工资 money,
部门编号 int
)
create table 部门
(
部门编号 int,
部门名称 varchar(10),
部门经理编号 int
)
create table 工程
(
工程编号 int,
工程负责人编号 int,
利润 money
)
insert into 员工
values(1,'王','男',4500,1)
insert into 员工
values(2,'李','男',3500,1)
insert into 员工
values(3,'赵','女',5500,2)
insert into 员工
values(4,'孙','男',6500,2)
insert into 员工
values(5,'徐','男',4000,3)
insert into 员工
values(6,'宋','女',2500,3)
insert into 员工
values(7,'周','男',500,4)
insert into 员工
values(8,'吴','男',5000,4)
insert into 员工
values(9,'胡','女',3000,5)
insert into 员工
values(10,'杨','男',4500,5)
insert into 部门
values(1,'市场1',1)
insert into 部门
values(2,'市场2',3)
insert into 部门
values(3,'市场3',5)
insert into 部门
values(4,'市场4',7)
insert into 部门
values(5,'市场5',9)
insert into 工程
values(1,1,150000)
insert into 工程
values(2,5,100000)
insert into 工程
values(3,9,250000)
select * from 部门
select * from 员工
select * from 工程
创建上述的三张表,在这些表基础上请写出下面题目的sql语句
1、查询工资大于员工‘徐’工资的女员工的姓名和工资;
2、查询工资大于平均工资的部门经理的姓名,性别,工资;
3、查询工资大于平均工资的男员工的详细信息;
4、查询平均工资大于4000的部门的部门经理的详细信息;
5、查询有工程经验的部门经理的详细信息;、
6、查询工资低于女员工平均工资且大于500小于6000的男员工的详细资料;
7、查询利润大于最小利润的项目负责人所在部门里所有员工的详细信息;
8、查询平均工资大于3000的部门的部门经理的详细信息,并按降序排列
9、给利润最高的负责人所在部门里的所有员工工资+2000
10、删除掉那些部门里面没有一个人参加过工程的部门里的员工信息
谁能帮忙解答下啊~
1. select 姓名,工资 from 员工 where 性别=‘女’ and 工资>(select 工资 from 员工 where 姓名='徐')
2. select 姓名,性别,工资 from 员工,部门 where 员工.编号=部门.部门经理编号 and 工资>
(select avg(工资) from 员工) and
3. select * from 员工 where 工资>(select avg(工资) from 员工)
4. select * from 员工 where 编号 in
(select 部门经理编号 from 部门 where 部门编号 in
(select 部门编号 from 员工 group by 部门编号 having avg(工资)>4000))
5. select * from 员工 where 编号 in
(select distinct 部门经理编号 from 部门,工程 where 部门.部门经理编号=工程.工程负责人
编号 )
6. select * from 员工 where 性别='男' and 工资>500 and 工资<6000 and 工资<(select avg(工资) from
员工 where 性别=‘女’)
7. select * from 员工 where 部门编号 in
(select 部门编号 from 部门 where 部门经理编号 in
(select 项目负责人编号 from 项目 where 利润>(select min(利润) from 项目) ))
8. select * from 员工 where 编号 in
(select 部门经理编号 from 部门 where 部门编号 in
(select 部门编号 from 员工 group by 部门编号 having avg(工资)>3000))
order by 工资 desc
9.update 员工 set 工资=工资+2000
where 部门编号 in (select 部门编号from 部门 where 部门经理编号 in (select 项目负责人编号 from 项目 where 利润=(select max(利润) from 项目)))
10. delete from 员工 where 部门编号 not in (select distinct 部门编号 from 员工,项目 where 员工.编号=项目.项目负责人编号)
1.在Oracle 中运行
declare
cursor mycur is select select 工资 from 员工表 where sex=女
c_姓名 员工表.姓名%type;
c_工资 员工表.工资%type;
begin
open mycur;
fetch mycur into c_姓名,c_工资;
while mycur%found
loop
if(c_工资<(seect 工资 from 员工表 where 姓名=徐)
{
print c.姓名,c.工资;
fetch mycur into c_姓名,c_工资;
}
end if;
end loop;
close mycur
end
我给你个网址吧,这个你自己学下就好了,个人认为还是自己多学点好,这个也不会很难你出的题目!
http://blog.csdn.net/htl258/archive/2009/03/01/3945715.aspx
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息