內(nèi)連接:
????基本語法:
? ? ? ? 左表 [inner] join 右表
? ? ? ? ? ? on 左表.字段 = 右表.字段;
注意事項:
? ? ? ? ? ? 1互订、on 表示連接條件脖旱;條件字段代表相同的業(yè)務(wù)含義
? ? ? ? ? ? ? ? (如 stu.cid 和 cla.id)
? ? ? ? ? ? ? ? 學(xué)生stu表中的班級cid? 和 班級cla表中的id
? ? ? ? ? ? 2、內(nèi)連接可以沒有連接條件缘薛,沒有on之后的內(nèi)容潜腻,
? ? ? ? ? ? ? ? 這時候系統(tǒng)會保留所有結(jié)果(笛卡爾集)
? ? ? ? ? ? 3埃儿、內(nèi)連接可以使用where 代替 on
? ? ? ? ? ? ? ? 通常不用where,因為where沒有on效率高
? ? ? ? ? ? ? ? on指匹配到第一條成功的就結(jié)束融涣,其他不匹配蝌箍;
? ? ? ? ? ? ? ? 若沒有青灼,不進(jìn)行匹配
? ? ? ? ? ? ? ? 而where會一直匹配,進(jìn)行判斷? ?
? ? ? ? ? ? 4妓盲、通常使用字段別名 表別名
? ? ? ? ? ? ? ? 在查詢數(shù)據(jù)的時候杂拨,不同表有同名字段,
? ? ? ? ? ? ? ? 這時候需要加上表名才能區(qū)分悯衬,
? ? ? ? ? ? ? ? 而若表名太長弹沽,使用表別名
? ? ? ? ? ? ? ? 若不想使用默認(rèn)的字段名 可以通過[as] 設(shè)置字段別名
外連接:
?????外連不但返回符合連接和查詢條件的數(shù)據(jù)行,還返回不符合條件的一些行筋粗。外連接分三類:左外連接(left outer join)策橘、右外連接(right outer join)和全外連接(full outer join)。
三者的共同點是都返回符合連接條件和查詢條件(即:內(nèi)連接)的數(shù)據(jù)行娜亿。不同點如下:
左外連接還返回左表中不符合連接條件單符合查詢條件的數(shù)據(jù)行丽已。
右外連接還返回右表中不符合連接條件單符合查詢條件的數(shù)據(jù)行。
全外連接還返回左表中不符合連接條件單符合查詢條件的數(shù)據(jù)行买决,并且還返回右表中不符合連接條件單符合查詢條件的數(shù)據(jù)行沛婴。全外連接實際是上左外連接和右外連接的數(shù)學(xué)合集(去掉重復(fù)),即“全外=左外 union 右外”