SQL语句(3)--- 多表连接/子查询/合并查询

  1. NATURAL JOIN:自然连接------两张连接表中要有同样的列名,列里面的值要一致,列的数据类型要一致
  2. USING :使用连接表里的一个相同的字段来连接
  3. natural join 和using 不能同时出现在一个select语句中
  4. ON:将不同列名称的列放到一起,但类型要一致。ON子句中的where---连接之后再过滤 ON子句中的and------过滤之后再连接
  5. SELF JOIN:自连接
  6. 非等值连接:就是之前的between and ,将需要比较的字段放到一个范围之中
  7. 左外/右外/全连接
    1. 左外连接 LEFT OUTER JOIN:以左边的表为基准,与右边的表进行比较,对比不上则设为空
    2. 右外连接 RIGHT OUTER JOIN:以右边的表为基准,与左边的表进行比较,对比不上则设为空
  8. 子查询
    1. 非关联子查询:子查询语句可以单独拿出来执行
      1. all:大于最大,小于最小
      2. any:大于最小,小于最大
    2. 关联子查询:子查询语句不可以单组拿出来执行
      1. 例句: update testemp t set t.sal=(select e.sal from emp e where t.empno=e.empno)
      2. EXISTS 不关注子查询select后面选择的字段,只关注子查询中的where条件语句是否满足,适用于子查询数据比较大的查询
      3. IN 对子查询select后面选择的字段是敏感的,如下SQL语句,使用与主查询数据比较大的查询
 1 SQL> select ename,deptno from test where deptno in (select deptno from test where ename='SCOTT');
 2  
 3 ENAME DEPTNO
 4 -------------------- ----------
 5 SMITH 20
 6 JONES 20
 7 SCOTT 20
 8 ADAMS 20
 9 FORD 20
10  
11 SQL> select ename,deptno from test where deptno in (select empno from test where ename='SCOTT');
12  
13 no rows selected
14  
15 SQL>
  1. 合并查询
    1. UNION:A并B,查看所有内容(剔除重复行)默认排序
    2. UNION ALL:查看所有内容(包括重复行)不排序
    3. INTERSECT:查看A与B相交的部分内容 默认排序
    4. MINUS:差集 ---- 调换A与B的位置,最终的结果是不一样的 默认排序
    5. 注意事项:
      1. 合并查询时,字段的数量必须一样,如果不同,要不全,数据类型要一致且顺序对应(大类型相同即可),优先级是自然顺序
      2. order by 语句只会依据第一个select 语句中的字段排序
      3. order by 语句只能出现一次且只能出现在最后
      4. order by 排序字段如有别名时就不能使用实际名
原文地址:https://www.cnblogs.com/eniniemand/p/14015116.html