mysql-(四)-关联查询

  建立数据表

//部门表
create
table dept( id int primary key, deptName varchar(20) )
//员工表
create table employee( id int primary key, empName varchar(20), deptId int--部门名称 CONSTRAINT employee_dept_fk FOREIGN KEY(deptId) references dept(id) 外键名称 外键 参考表(参考字段) )

 

============================================================================================================================

                                                                                                              多表查询   =   关联查询

============================================================================================================================

×××××××××查询员工及其所在部门

1.1交叉查询(会产生重复记录)

SELECT  empName , deptName  FROM employee,dept;  

1.2内连接查询(只有满足条件的结果显示)

---多表查询规则

1)查询哪些表

2)确定哪些字段

3)表与表之间的连接条件

SELECT empName,deptName    2)确定哪些字段

             FROM employee,dept     1)查询哪些表 

                      where empoyee.deptId=dept.id      3)表与表之间的连接条件

1.3内连接查询的另一种语法

SELECT empName,deptName

             FROM employee

             INNER JOIN dept

             ON employee.deptId=dept.id; 

使用别名查询

SELECT e.empName,d.deptName 
                
                    FROM  employee e 
 
                     INNER JOIN dept d
                         
                         ON e.deptId=d.id;
//如果左表数据匹配不到右表数据,则不显示

 

 

SELECT d.deptName,e.empName
    
             FROM dept d , employee e
  
             WHERE  d.id = e.deptId

 

-----------------查询每个部门的员工,部门一定要显示

每个部门必须显示

----1.4左外链接查询

 使用左边表的数据去匹配右边表数据,如果符合条件则显示,如果不符合显示null

从部门找人,找不到null

(左边数据一定会显示)

SELECT d.deptName , e.empName

    FROM dept d

   LEFT OUTER JOIN employee e  //左外链接查询

   ON d.id = e.deptId;

---1.5右外链接查询

(右表的数据一定显示)

SELECT 

     FROM FROM employee e

     RIGHT OUTER JOIN dept d

     ON d.id = e.deptId;

---1.6自连接查询

查询一张表里字段的关系,比如查员工的上司

 

SELECT e.empName , b.empName
       
                   FROM employee e  
            
             LEFT OUTER  JOIN    employee b
       
             ON e.bossId = b.id;
    
             //员工的上司id匹配表中另一个字段

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

                                                                        

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值