16 SQL语言——多(三)表联查
我们使用的是Oracle数据自带的用户scott下的练习表格:emp,dept,salgrade,bonus,为了实现三表查询,我们创建一个城市表。
--目标:查询员工的姓名,部门名,部门所在的城市 的员工并且薪资大于2000 --创建城市表,添加数据 create table city( cid number(10) not null primary key, cname varchar2(100) not null, cdesc varchar2(500) ) insert into city values('1','贵阳','林城'); insert into city values('2','大理','彩云之南'); insert into city values('3','北京','首都'); --修改部门所在城市 select * from dept; select * from bonus; update dept set loc=1 where deptno=10; update dept set loc=2 where deptno=20; update dept set loc=3 where deptno=30; update dept set loc=4 where deptno=40; --SQL92方式 select ename,dept.dname,dept.loc,city.cname from emp,dept,city where emp.deptno=dept.deptno and dept.loc = city.cid and sal>2000; --SQL99方式 select ename,d.dname,loc,cname from emp e join dept d on e.deptno = d.deptno join city c on d.loc = c.cid where sal>2000;
运行结果(两个都一样):