mysql之连接查询

一、分类

(1)、内连接

(2)、外连接

                        a、右外连接

                        b、左外连接

                        c、全外连接

(3)、自然连接

1、内连接:

属于mysql的方言:格式:SELECT * FROM 表1  别名1,表2  别名2   WHERE 别名1.Xxx=别名2.Xxx          ()

例如:SELECT * FROM emp e,dept d    WHERE   e.depto=d.depto;

标准格式的内连接:应用于各种数据库来连接

格式:SELECT * FROM   表1  别名1

            INNER  JOIN      表2  别名2

            ON  别名1.Xxx=别名2.Xxx

例如:打印所有员工的姓名,工资,部门名称

SELECT e.ename,e.sal,d.dame

FROM  emp e     INNER JOIN  dept d

ON  e.deptno=d.deptno;

2、自然连接格式:

SELECT  *

FROM  表1  别名1  NATURAL JOIN  表2  别名2

(找到两张表中的名称完全相同的列,自动匹配而成)

例如:打印所有员工的姓名,工资,部门名称

SELECT  e.ename,e.sal,dname

FROM  emp e   NATURAL JOIN dept d;

3、外连接

左外连接一主一次,左外连接以左表为主,右表为次,主表中的所有记录无论满不满足条件都打印出来,左表存在而右表不存在时,右表处用NULL补充

例如:打印所有员工的姓名,工资,部门名称

SETECT  e.name ,e.sal,d.name

FROM  emp e LEFT OUTER JOIN dept d

ON e.deptno=d.deptno;

4、右外连接;

右外连接一主一次,右外连接以右表为主,左表为次,主表中的所有记录无论满不满足条件都打印出来,右表存在而左表不存在时,左表处用NULL补充

例如:打印所有员工的姓名,工资,部门名称

SETECT  e.name ,e.sal,d.name

FROM  emp e RIGHT OUTER JOIN dept d5、

ON e.deptno=d.deptno;

5、全外连接(mysql中不支持,但可以用 另外的方法实现此功能)

全外连接:即右表出现的记录无论符不符合条件全部打印出来,左表不满足条件的用NULL补充,左表出现的记录也全部打印出来,右表不满足条件的用NULL代替

SETECT  e.name ,e.sal,d.name

FROM  emp e LEFT OUTER JOIN dept d

ON e.deptno=d.deptno;

UNIQE

SETECT  e.name ,e.sal,d.name

FROM  emp e RIGHT OUTER JOIN dept d5、

ON e.deptno=d.deptno;

猜你喜欢

转载自blog.csdn.net/Gray_humor/article/details/81479393