sql多表关联的几种应用场景

   主表:部门表-dept(dept_id,dname,enum)
   从表:员工表-emp (emp_id , ename , sal,dept_id)
   //以上表结构仅供练习,以下是oracle的sql语法

 1,关联查询(最常见的关联查询)
    场景:查询所有员工的部门名称
              select e.ename,d.dname from emp e,dept d 
              where e.dept_id=d.dept_id;
 2,关联更新
      场景:更新部门表的人数enum
       update dept d set d.enum = (select count(*) from emp e 
       where e.dept_id=d.dept_id ); 

3,关联子查询
     场景a:哪些员工的工资-sal 比本部门的平均工资高
     select * from emp e1 
     where e1.sal>(select avg(sal) from emp e2 
     where e1.dept_id=e2.dept_id ) ;

     场景b:查出没有员工的部门
      select * from dept d 
      where not exists (select 1 from emp e where e.dept_id=d.dept_id ) ;

4,关联删除
     场景:删除没有员工的部门
      delete from dept d  
      where not exists (select 1 from emp e where e.dept_id=d.dept_id ) ;

你可能感兴趣的:(oracle表关联)