设有如下三个基本表,表结构如下:请用SQL语言进行查询。(共18分)

设有如下三个基本表,表结构如下:请用SQL语言进行查询。(共18分)
职工关系EMPLOYEE (职工号,职工名,街道,城市)
工作关系WORKS (职工号,公司号,工资)
公司关系COMPANY (公司号,公司名,城市)
1、 查找在公司号为‘c2’公司任职的职员的职工名、职工号。
2、 查找公司所在城市和职工所在城市都为上海的职工名,工资。
3、 查找工资在3000元到5000元之间的职工名和职工号。
4、 查找职工名中第二个字为“立”的职工名字和所在城市。
5、 假设每个职工可在多个公司工作,查询在编号为C2和C4公司兼职的职工号和姓名。
6、 假设“中国移动集团”公司本月份职工工资都提高8%,请你用SQL语句完成该操作。

1、SELECT 职工名,职工号 FROM EMPLOYEE
WHERE 职工号 IN (SELECT 职工号 FROM WORKS
WHERE 公司号='C2')
2、SELECT A.职工名,B.工资
FROM EMPLOYEE A,WORKS B,COMPANY C
WHERE A.职工号=B.职工号 AND B.公司号=C.公司号
AND A.城市='上海' AND C.城市='上海'
3、SELECT 职工名,职工号
FROM EMPLOYEE
WHERE 职工号 IN (SELECT 职工号 FROM WORKS
WHERE 工资 BETWEEN 3000 AND 5000)
4、SELECT 职工名,城市 FROM EMPLOYEE
WHERE 职工名 LIKE '_立%'
5、SELECT 职工号,姓名 FROM EMPLOYEE
WHERE 职工号 IN (SELECT 职工号 FROM WORKS
WHERE 公司号='C2' AND 公司号='C4')
6、UPDATE WORKS
SET 工资=工资*1.08
WHERE 公司号 IN (SELECT 公司号 FROM COMPANY
WHERE 公司名='中国移动集团')
注:这是用ORACLE的SQL语句写的,如果在SQL SERVER里运行,有个别地方有所不同,但大致上都是这样
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-01-18
EMPLOYEE ( eno ename street city )
WORKS ( eno cno salary)
COMPANY (cno cname city)

1.select a.eno,a.ename from EMPLOYEE a,WORKS b where a.eno=b.eno and b.cno='c2';
2.select b.eno,b.salary from EMPLOYEE a,WORKS b,COMPANY c where a.eno=b.eno and b.cno=c.cno and a.city='上海' and c.city='上海';
3.select a.eno,a.ename from EMPLOYEE a,WORKS b where a.eno=b.eno and b.salary between 3000 and 5000;
4.select ename,city from EMPLOYEE where ename like '_立%';
5.select eno from (select * from WORKS where cno='c2' or cno='c4') group by eno having count(*)=2
6.update WORKS set salary=salary*1.08 where cno=(select cno from COMPANY where cname='中国移动集团')
相似回答