关联查询

关联查询一共有如下几种:
* 内连接:INNER JOIN, CROSS JOIN
* 外连接:左连接(LEFT JOIN) 右连接(RIGHT JOIN) 全连接(FULL OUTER JOIN)
* 自连接:当table1,table2本质上是同一张表,只是用取别名的方式虚拟成两张表代表不同的意义
说明
* 连接n个表,至少需要n-1个连接条件
* 当两个关联查询的表如果有字段名字相同,并且查询中涉及该关联字段,那么需要使用表名前缀加以区分
* 如果表名比较长时,可以给表取别名,简化SQL语句

三个关联条件
* WHERE:适用于所有的关联查询

* ON:只能和JOIN一起使用,只能写关联条件。虽然关联条件可以并到WHERE中和其他条件一起写,但是分开写可读性更好

* USING:只能和JOIN一起使用,而且要求两个关联字段在关联表中名称一致,而且只能表示关联字段值相等。
     
   内连接

没有关联到的数据不显示

  where进行条件关联

示例:
select a.order_id,a.amt,
b.cust_name,b.tel_no from
orders a,customer b where a.cust_id = b.cust_id;

  inner join进行条件关联

select a.order_id,a.amt,
b.cust_name,b.tel_no
from orders a inner join customer b on a.cust_id = b.cust_id;

  外连接

没有关联到的数据也会显示到结果集

  左连接

左连接:以左表为基准,右表的数据进行关联,左表的数据全部显示,右表中的字段如果没有关联到,则显示NULL
select a.order_id,a.amt,b.cust_name,b.tel_no
from orders a left join customer b on a.cust_id = b.cust_id;

  右连接

右连接:以右表为基准,左表的数据进行关联,右表的数据全部显示,左表中的字段如果没有关联到,则显示NULL
示例2:
select a.order_id,a.amt,b.cust_name,b.tel_no from orders a right
join customer b on a.cust_id = b.cust_id;

posted @ 2020-10-21 21:25  月雨生  阅读(992)  评论(0)    收藏  举报