开发者学堂课程【Servlet 入门:连接查询之外连接】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/36/detail/819
连接查询之外连接
内容介绍
一、连接查询
一、连接查询
1.分类
*内连接
*外连接
>左外连接
>右外连接
>全外连接(MySQL不支持)
*自然连接(属于一种简花方式)
2.内连接
*方言:SELECT * FROM 表1 别名1,表2 别名2 WHERE,别名1.xx=别名2.xx
*标准:SELECT * FROM 表1 别名1'TNNER JOIN 表2.别名2 0N,别名1.xx=别名2.xx
*自然:SELECT * FROM 表i 别名:NATURAL JOIN 表2*别名21 *丙连接查询出的所有记录都满足条件。
3.外连接
*左外:SELECT * FROM 表1 别名1 LEFT OUTER JOIN 表2 别名2 ON 别名1.xx=别名2.xx
>左表记录无论是否满足条件都会查询出来,而右表只有满足条件才能出来。左表中不满足条件的记录,右表部分都为NULL
*左外自然:SELECT * FROM 表1别名1 NATURAL LEFT QUTER JOIN 表2 别名2 oN 别名1.xx=别名2.xx
*右外:SELECT * FROM 表1别名1 RECHT.OUTER JOIN 表2 别名2 ON 别名1.xx=别名2.xx
>右表记录无论是否满是条件都会查询出来,而左表只有满足条件才能出来。右表不满足条件的记录,其左表部分都为NULI
*右外自然: SELECT * FROM 表1 别名1 NATURAL RIGHT OUTER JOIN 表2 别名2 ON 别名1.xx=别名2.xx
*全链接:可以使用 UNTON 来完成全链接
/*外连接
外连接有一主一次,左外即左表为主!
即 emp 为主。那么主表中所有的记录无论满足不满足条件,都打印出来 。
当不满足条件时,右表部门使用 NULL 来补位
*/
SELECT e.ename, e.sal, IFNVULL(d.dname,'无部门
') AS dname
FROM emp e LEFT OUTER JOIN dept d
ON e.deptno=d.deptno
SELECT e.ename, e.sal, d.dname
FROM emp e RIGHT OUTER JOIN dept d
ON e.deptno=d.deptno
SELECT * FROM dept;
右外、左外和全外:
SELECT e.ename, e.sal, d.dname
FROM emp e LEFT OUTER JOIN dept d
ON e.deptno=d.deptno
UION
SELECT e.ename, e.sal, d.dname
FROM emp e RIGHT OUTER JOIN dept d
ON e.deptno=d.deptno