石家庄便宜做网站,网店推广的作用,制作短链接网站,软文公司代写Oracle中的连接可分为#xff0c;内连接(INNER JOIN)、外连接(OUTER JOIN)、全连接(FULL JOIN)#xff0c;不光是 Oracle#xff0c;其他很多的数据库也都有这3种连接查询方式。Oracle 外连接(OUTER JOIN)#xff0c;又分为左外连接和右外连接#xff0c;即左连接和右连接…Oracle中的连接可分为内连接(INNER JOIN)、外连接(OUTER JOIN)、全连接(FULL JOIN)不光是 Oracle其他很多的数据库也都有这3种连接查询方式。Oracle 外连接(OUTER JOIN)又分为左外连接和右外连接即左连接和右连接。左外连接 LEFT OUTER JOIN 左连接 LEFT JOIN(左边的表不加限制)右外连接 RIGHT OUTER JOIN 右连接 RIGHT JOIN(右边的表不加限制)全外连接 FULL OUTER JOIN 全连接 FULL JOIN(左右两表都不加限制)注意通常写 SQL 的时候会省略 OUTER 关键字。在左连接和右连接时都会以一张 A 表为基础表该表的内容会全部显示然后加上 A 表和 B 表匹配的内容。 如果 A 表的数据在 B 表中没有记录。 那么在相关联的结果集行中列显示为空值(NULL)。对于外连接也可以使用 () 操作符来表示。使用时的一些注意事项1. 操作符只能出现在 WHERE 子句中并且不能与 OUTER JOIN 语法同时使用2. 操作符执行外连接时如果在 WHERE 子句中包含有多个条件则必须在所有条件中都包含 () 操作符3. 操作符只适用于列而不能用在表达式上4. 操作符不能与 OR 和 IN 操作符一起使用5. 操作符只能用于实现左外连接和右外连接而不能用于实现全外连接SELECT * FROM t_A;SELECT * FROM t_B;左外连接又名左连接(OUTER LEFT JOIN / LEFT JOIN)LEFT JOIN 是以左表的记录为基础的t_A 可以看成左表t_B 可以看成右表它的结果集是 t_A 表中的全部数据再加上 t_A 表和 t_B 表匹配后的数据。换句话说,左表 t_A 的记录将会全部表示出来而右表 t_B 只会显示符合搜索条件的记录。t_B 表记录不足的地方均为 NULL。SELECT * FROM t_A a LEFT JOIN t_B b ON a.id b.id;或 SELECT * FROM t_A a LEFT OUTER JOIN t_B b ON a.id b.id;用 () 来实现这个 号可以这样来理解 表示补充即哪个表有加号这个表就是匹配表。如果加号写在右表左表就是全部显示所以是左连接。SELECT * FROM t_A a,t_B b WHERE a.idb.id();右外连接又名右连接(RIGHT OUTER JOIN / RIGHT JOIN)和 LEFT JOIN 的结果刚好相反是以右表 t_B 为基础的。它的结果集是 t_B 表所有记录再加上 t_A 和 t_B 匹配后的数据。 t_A 表记录不足的地方均为 NULL。SELECT * FROM t_A a RIGHT JOIN t_B b ON a.id b.id;或 SELECT * FROM t_A a RIGHT OUTER JOIN t_B b ON a.id b.id;用 () 来实现这个 号可以这样来理解 表示补充即哪个表有加号这个表就是匹配表。如果加号写在左表右表就是全部显示所以是右连接。SELECT * FROM t_A a,t_B b WHERE a.id()b.id;全外连接又名全连接(FULL OUTER JOIN / FULL JOIN)左表和右表都不做限制所有的记录都显示两表不足的地方均为 NULL。 全外连接不支持 () 写法。以 id 为限制的用法SELECT * FROM t_A a FULL JOIN t_B b ON a.id b.id;或 SELECT * FROM t_A a FULL OUTER JOIN t_B b ON a.id b.id;不加限制的用法SELECT * FROM t_A FULL JOIN t_B ON 11;内连接又名自连接(INNER JOIN / JOIN)查出的记录既存在于 t_A又存在于 t_B即查出匹配两张表的数据。SELECT * FROM t_A a,t_B b WHERE a.id b.id;或 SELECT * FROM t_B b,t_A a WHERE b.id a.id;或 SELECT * FROM t_A a JOIN t_B b ON a.id b.id;或 SELECT * FROM t_A a INNER JOIN t_B b ON a.id b.id;或 SELECT * FROM t_B b JOIN t_A b ON b.id a.id;或 SELECT * FROM t_B b INNER JOIN t_A a ON b.id a.id;笛卡尔乘积又名笛卡尔积(CROSS JOIN)不加任何条件达到 M*N 的结果集SELECT * FROM t_A a CROSS JOIN t_B b;或 SELECT * FROM t_A a,t_B b;注意如果 CROSS JOIN 加上 WHERE ON a.id b.id 条件会产生跟内连接(自连接)一样的结果(CROSS JOIN 后 加上 ON 会报错)即 SELECT * FROM t_A a CROSS JOIN t_B b WHERE a.id b.id;(不需要 ON) 相当于 SELECT * FROM t_A a JOIN t_B b ON a.id b.id;