304

1、以join右表为主表,显示右表的所有数据,根据条件查询join左表的数据。如果满意,显示。如果不满意,显示在null。

2、可以理解为在内部连接的基础上,确保右表的所有数据都显示。

语法

select字段fromaright[outer]joinbon条件

实例

#左连接
#查询所有部门信息以及该部门员工信息
SELECTdid,dname,eid,enameFROMt_departmentdLEFTJOINt_employeee
ONd.did=e.dept_id;

SELECTdid,dname,eid,enameFROMt_employeeeLEFTJOINt_departmentd
ONd.did=e.dept_id;

SELECTdid,dname,eid,enameFROMt_departmentdRIGHTJOINt_employeee
ONd.did=e.dept_id;

UPDATEt_employeeSETdept_id=NULLwhereeid=5;

SELECTdid,dname,eid,enameFROMt_departmentdLEFTJOINt_employeee
ONd.did=e.dept_id;
WHEREe.dept_idISNULL;
#查询部门信息,保留没有员工的部门信息
SELECTdid,dname,eid,enameFROMt_departmentdRIGHTJOINt_employeee
ONd.did=e.dept_id;
WHEREe.dept_idISNULL;

SELECTdid,dname,eid,enameFROMt_employeeeLEFTJOINt_departmentd
ONd.did=e.dept_id;
WHEREe.dept_idISNULL;
#查询所有员工信息,以及员工的部门信息
SELECTeid,ename,did,dnameFROMt_employeeeLEFTJOINt_departmentd
ONe.dept_id=d.did;

SELECTeid,ename,did,dnameFROMt_departmentdLEFTJOINt_employeee
ONe.dept_id=d.did;

#查询员工信息,仅保留没有分配部门的员工
SELECTeid,ename,did,dnameFROMt_employeeeLEFTJOINt_departmentd
ONe.dept_id=d.did
WHEREe.dept_idISNULL;
#查询员工信息,不保留没有分配部门的员工
SELECTeid,ename,did,dnameFROMt_employeeeLEFTJOINt_departmentd
ONe.dept_id=d.did
WHEREe.dept_idISNOTNULL;

SELECTid,ename,tid,dnameFROMstudent_infosLEFTJOINstudent_testt
ONs.id_id=t.tid
WHEREt.tidISNOTNULL;

SELECT*FROMstudent;
SELECT*FROMsouce;
#分析左右外连接
#显示所有学生的测试信息
SELECTst.s_id,name,C,JavaFROMstudentstLEFTJOINsouces
ONst.s_id=s.s_id;

#显示参加考试的学生的测试信息
SELECTst.s_id,name,C,JavaFROMstudentstRIGHTJOINsouces
ONst.s_id=s.s_id;

以上就是mysql右外连接查询的介绍,希望对大家有所帮助。更多mysql学习指路:Mysql

发表回复