SQL基础语法--3.内连接
课程链接分享:https://www.bilibili.com/video/BV1UE41147KC?p=30&share_source=copy_web

三、内连接
(一)内连接
(在多张表中选取列)
因为顾客表中的手机号码、邮箱、地址等信息可能会频繁发生改动,如果一个顾客下了多个订单,就会频繁地改动,耗时耗力。为了避免此种情况,我们把顾客表和订单表分开放,这样就只需要改动顾客表中的信息。
现在我们想要输出带有顾客信息的订单,可以将两表连接——内连接


(二)跨数据库连接

(三)自连接
将一张表与他自己连接,即使是同一张表也需要取别名区分!!!


(四)多表连接
连接多个表,直接在JOIN ON语句后再写一句JOIN ON 语句


(五)复合连接条件
如果我们无法用单一列识别某张表的行时,可以用两列结合唯一标识这个表。
当我们要将这个表与其他表连接时,应该使用多个条件连接这两张表。
JOIN 此表名 ON 条件一 AND 条件二

(六)隐式连接语法
不推荐使用,仅作了解

(七)外连接
不管条件正确与否,都会返回左/右表的全部行



(八)多表外连接
不建议使用右连接,因为多表连接会让情况变得复杂。


(九)自外连接
自连接+外连接

(十)USING子句
与ON子句作用相同但是USING 子句更简洁
USING() 括号内直接写上相连接的两个表的相同的列名
演示如下:

我们不能在连接这个结果和订单状态表的时候使用这个技巧,因为order_statuses表中的状态“status”在orders表中叫做“order_status_id”
Q1:如果相连接的两个表中的相同列名字不一致怎么办?
凉拌,不能使用using子句咯。
Q2:如果相连接的两个表中需要两个列来唯一标识它的表怎么办?
Using(列一, 列二)用逗号隔开咯

(十一)自然连接 NATURAL JOIN
仅作了解

(十二)交叉连接

(十三)Unions联合



练习



浙公网安备 33010602011771号