SQL语句两表联查

          --  创建部门表   dept 
        create   table    dept(
                     did   int(8)   PRIMARY key ,
                     dname   varchar(20)              

                );  

             select   *   from  dept;

     insert   into   dept  values(1,'人力资源') 
      insert   into   dept  values(2,'计生办') 
    insert   into   dept  values(3,'计生委');                

     --  查 寻员工的详细信息   (  emp   dept) 
       --  查询出的数据有问题    select   *   from    emp  ,dept ;  
  select   *   from   emp  , dept   where     deptno= did;     
              
   select   *   from   emp  , dept  where     emp.deptno= dept.did; 

   --  内连接        inner    join    表名    on   
     select   *   from  emp    inner  join  dept    on    deptno= did;  
      --   查询表    emp       dept  
      select   *   from   emp ; 
       select   *  from  dept;

    --   内连接     inner   join   表名      on  筛选条件
      --  查询员工的信息以及所在部门信息(没有部门的员工 不显示)
           -- 最普通的 方式查询
        select   *  from  emp ,dept   where emp.deptno=dept.did;
         select   *  from  emp   inner   join  dept   on  emp.deptno=dept.did;
       -- inner  join   on   查询出来的数据   是 两张表的 交集数据 
     -- 外连接    有两种    left  join   表名 on      左外链接     left  不可以省略
                   --  right   join    表名   on      右外链接     right  不可以省略
       
       --  左外链接    特点是:以左表为主 显示全部左表的数据 并显示出相关右表的数据   
           select   *   from    emp    left  join   dept   on  emp.deptno=dept.did;
        --  右外链接   特点是:  以右表为主   显示全部的右表的数据  并显示相关左表的数据    
            select   *   from   emp   right   join   dept   on  emp.deptno=dept.did; 

          --  into   可以省略   
         insert   into dept   values(7,'督查处');  
         insert      dept   values(5,'就业处');
                 select  *  from   dept;
      --   全连接    mysql 数据库的   union    就是把左外链接的数据和 右外链接的数据 全部显示出来
    
       select   *   from    emp    left  join   dept   on  emp.deptno=dept.did

       union 
       select   *   from   emp   right   join   dept   on  emp.deptno=dept.did; 

        -- 子查询     从自己查询的结果集中 再次进行查询  
         --  查询emp 表中工资 最小的 员工的全部的信息     emp   有dept 表中的信息
        -- 单表的子查询   
      select   *  from   emp  where   sal=(select   min(sal) from  emp);

      select    *  from   emp ,dept    where   sal =(select   min(sal) from  emp)   and    emp.deptno=dept.did; 

    --  比较   =  >  >=  <  <=   != <>
    --  查询 员工工资大于最小工资的员工的 信息  
       select   *  from   emp  where   sal>ANY(select   min(sal) from  emp);
      --  in()    括号里面的放的数据集合  
          select   *   from   emp   where   id=1  or   id=2; 
          select   *  from   emp   where   id  in(1,2); 
      --   子查询中的 in   
      select   *  from   emp   where   id   in( select   id   from    emp   where   sex='女');                
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值