i SQL Server, ibland är det nödvändigt att hämta, förutom de matchande raderna, de oöverträffade raderna från en eller båda tabellerna. En sådan operation kallas en yttre koppling.
exempel 1 och 2 visar skillnaden mellan en naturlig koppling och motsvarande yttre koppling. (Alla exempel i det här avsnittet använder employee_enh-tabellen.,exempel 1
få fullständig information om alla anställda, inklusive platsen för deras avdelning, som bor och arbetar i samma stad:
resultatet är:
exempel 1 använder en naturlig koppling för att visa resultatuppsättningen av rader. Om du vill veta alla andra befintliga bostadsorter anställda, måste du använda (vänster) yttre koppling. Detta kallas en vänster yttre koppling eftersom alla rader från tabellen på operatörens vänstra sida returneras, oavsett om de har en matchande rad i tabellen till höger eller inte., Med andra ord, om det inte finns några matchande rader i tabellen på höger sida, kommer den yttre kopplingen fortfarande att returnera en rad från tabellen på vänster sida, med NULL i varje kolumn i den andra tabellen (se exempel 2). Databasmotorn använder operatören vänster yttre koppling för att ange vänster yttre koppling.
en höger yttre koppling är likartad, men den returnerar alla rader i tabellen till höger om symbolen. Databasmotorn använder operatören rätt yttre koppling för att ange rätt yttre koppling.,
exempel 2
få fullständig information om alla anställda, inklusive platsen för deras avdelning, för alla städer som bara är bostaden eller både anställdas boende och arbetsplats:
resultatet är:
som du kan se, när det inte finns någon matchning rad i tabellen på höger sida (avdelning, i det här fallet) returnerar vänster yttre koppling fortfarande raderna från tabellen på vänster sida (employee_enh), och kolumnerna i den andra tabellen fylls i med NULL-värden., Exempel 3 visar användningen av höger yttre koppling.
exempel 3
få fullständig information om alla avdelningar, liksom alla bostadsorter för sina anställda, för alla städer som antingen är platsen för en avdelning eller en anställds bostad och arbetsplats:
resultatet är:
förutom vänster och höger sida,
ttre fogar, det finns också den fulla yttre fogen, som definieras som föreningen av vänster och höger yttre fogar. Med andra ord representeras alla rader från båda tabellerna i resultatuppsättningen., Om det inte finns någon motsvarande rad i en av tabellerna returneras kolumnerna med nollvärden. Denna operation specificeras med hjälp av den fullständiga yttre KOPPLINGSOPERATÖREN.
varje yttre koppling kan simuleras med UNIONSOPERATÖREN plus funktionen not EXISTS. Exempel 4 motsvarar exemplet med vänster yttre koppling (exempel 2).,
exempel 4
få fullständig information om alla anställda, inklusive platsen för deras avdelning, för alla städer som är antingen den levande platsen eller både den levande och arbetande platsen för anställda:
det första SELECT-uttalandet i unionen anger den naturliga kopplingen av tabellerna employee_enh och avdelning med join columns hemvist och plats. Detta välj uttalande hämtar alla städer som samtidigt är levande platser och arbetsplatser för varje anställd., Den andra select-satsen i facket hämtar dessutom alla rader från employee_enh-tabellen som inte matchar villkoret i natural join.