多表关联查询
使用多张表连接起来进行挑选,输出需要的表结构
内连接
1.关键字 (INNER) JOIN
语法:
SELECT 要查询的字段 FROM 表1 (INNER) JOIN 表2 ON 关联条件 AND/WHERE 过滤条件
示例:
SELECT E.ENAME, D.DNAME FROM EMP E INNER JOIN DEPT D ON E.DEPTNO = D.DEPTNO;
2.可以直接在表之间加个,表示内连接
示例:
SELECT E.ENAME,D.DNAME FROM EMP E,DEPT D ON E.DEPTNO = D.DEPTNO;
内连接的时候,不同的表里有两个相同名称的字段,要用表名指定是哪张表的字段,不然会找不到要的是哪个字段。
内连接 取两张表的交集
如果在内连接的时候没有写关联条件,就会产生笛卡尔积=A表的行数*B表的行数
外连接(OUTER JOIN)
左外连接:关键字 LEFT JOIN ,左表是主表,右表是从表,会展示主表的所有数据,从表没有的行数数据用NULL补充
注意:在左外连接的时候,WHERE才能起到过滤条件的作用;而AND只能过滤从表的数据,AND先过滤从表的数据再和主表进行关联。对主表的数据没有过滤效果。
右外连接:关键字 RIGHT JOIN ,与左外连接相反
全外连接:关键字 FULL JOIN,不分主从表,相当于左外连接+右外连接所有数据
自连接:自己和自己进行关联,两张一模一样的表和数据进行关联。
不等值关联 ---- 数据发散
示例:
SELECT * FROM EMP E JOIN DEPT D ON E.DEPTNO < D.DEPTNO;
SQL语句排序
SELECT --7 FROM--1 JOIN--2 ON--3 WHERE--4 GROUP BY--5 HAVING--6 ORDER BY--8