Quelle est la difference entre LEFT JOINet LEFT OUTER JOIN?
Quelle est la difference entre LEFT JOINet LEFT OUTER JOIN?
Réponses:
Selon la documentation: FROM (Transact-SQL) :
<join_type> ::=
[ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ]
JOIN
Le mot OUTER- clé est marqué comme facultatif (entre crochets). Dans ce cas spécifique, que vous spécifiez OUTERou non ne fait aucune différence. Notez que tandis que les autres éléments de la clause join sont également marqués comme facultatifs, les laisser de côté fera une différence.
Par exemple, la partie type entière de la JOINclause est facultative, auquel cas la valeur par défaut est INNERsi vous spécifiez simplement JOIN. En d'autres termes, c'est légal:
SELECT *
FROM A JOIN B ON A.X = B.Y
Voici une liste de syntaxes équivalentes:
A LEFT JOIN B A LEFT OUTER JOIN B
A RIGHT JOIN B A RIGHT OUTER JOIN B
A FULL JOIN B A FULL OUTER JOIN B
A INNER JOIN B A JOIN B
Jetez également un œil à la réponse que j'ai laissée sur cette autre question SO: SQL left join vs plusieurs tables sur la ligne FROM? .

INNER JOINà droite et juste JOINà gauche dans la liste des équivalents?
JOINs également.
Pour répondre à votre question, il n'y a pas de différence entre LEFT JOIN et LEFT OUTER JOIN, ils sont exactement les mêmes que ceux qui ont été dit ...
INNER JOIN - récupère les données si elles sont présentes dans les deux tables.
OUTER JOIN sont de 3 types:
LEFT OUTER JOIN - récupère les données si elles sont présentes dans le tableau de gauche.RIGHT OUTER JOIN - récupère les données si elles sont présentes dans le tableau de droite.FULL OUTER JOIN - récupère les données si elles sont présentes dans l'un des deux tableaux.CROSS JOIN , comme son nom l'indique, fait [n X m]que tout se joint à tout.
Similaire au scénario où nous listons simplement les tables à joindre (dans la FROMclause de l' SELECTinstruction), en utilisant des virgules pour les séparer.
Points à noter:
JOINpar défaut, c'est un INNER JOIN.OUTERjointure doit être LEFT| RIGHT| FULLvous ne pouvez pas simplement dire OUTER JOIN.OUTERmot-clé et dire simplement LEFT JOINou RIGHT JOINou FULL JOIN.Pour ceux qui souhaitent mieux les visualiser, veuillez consulter ce lien: Une explication visuelle des jointures SQL
CROSS JOINla même chose que FULL JOIN?
Cross Joinet Full Outer Join... semble en quelque sorte similaire.
Quelle est la différence entre la jointure gauche et la jointure externe gauche?
Rien . LEFT JOINet LEFT OUTER JOINsont équivalents.
OUTERoption est facultative.
Je suis un DBA PostgreSQL, pour autant que je puisse comprendre la différence entre les jointures externes ou non externes, la différence est un sujet qui a fait l'objet de nombreuses discussions sur Internet. Jusqu'à aujourd'hui, je n'ai jamais vu de différence entre ces deux; Je suis donc allé plus loin et j'essaie de trouver la différence entre ceux-ci. À la fin, j'ai lu toute la documentation à ce sujet et j'ai trouvé la réponse à cela,
Donc, si vous regardez la documentation (au moins dans PostgreSQL), vous pouvez trouver cette phrase:
En d'autres mots,
LEFT JOINet sont les LEFT OUTER JOINmêmes
RIGHT JOINet sont les RIGHT OUTER JOINmêmes
J'espère que cela peut être une contribution pour ceux qui essaient encore de trouver la réponse.
Left Joinet Left Outer Joinsont une seule et même chose . Le premier est le raccourci pour le second. On peut en dire autant de la relation Right Joinet Right Outer Join. La démonstration illustrera l'égalité. Des exemples de travail de chaque requête ont été fournis via SQL Fiddle . Cet outil permettra une manipulation pratique de la requête.
Donné

Jointure gauche et jointure externe gauche

Résultats

Jointure droite et jointure droite externe

Résultats

Je trouve plus facile de penser aux jointures dans l'ordre suivant:
Jusqu'à ce que je comprenne ce modèle (relativement) simple, JOINS était toujours un peu plus un art noir. Maintenant, ils ont un sens parfait.
J'espère que cela aide plus qu'il ne confond.
Pourquoi LEFT / RIGHT et LEFT OUTER / RIGHT OUTER sont-ils les mêmes? Expliquons pourquoi ce vocabulaire. Comprenez que les jointures GAUCHE et DROITE sont des cas spécifiques de la jointure OUTER, et ne peuvent donc pas être autre chose que OUTER LEFT / OUTER RIGHT. La jointure OUTER est également appelée FULL OUTER par opposition aux jointures LEFT et RIGHT qui sont des résultats PARTIELS de la jointure OUTER. En effet:
Table A | Table B Table A | Table B Table A | Table B Table A | Table B
1 | 5 1 | 1 1 | 1 1 | 1
2 | 1 2 | 2 2 | 2 2 | 2
3 | 6 3 | null 3 | null - | -
4 | 2 4 | null 4 | null - | -
null | 5 - | - null | 5
null | 6 - | - null | 6
OUTER JOIN (FULL) LEFT OUTER (partial) RIGHT OUTER (partial)
Il est maintenant clair pourquoi ces opérations ont des alias, et il est clair que seuls 3 cas existent: INNER, OUTER, CROSS. Avec deux sous-cas pour l'OUTER. Le vocabulaire, la façon dont les enseignants expliquent cela, ainsi que certaines réponses ci-dessus, donnent souvent l'impression qu'il existe de nombreux types de jointures. Mais c'est en fait très simple.
JOINimplique INNER JOIN" correspond à votre raisonnement pour le vocabulaire des jointures externes?
Pour répondre à ta question
Dans SQL Server, la syntaxe des jointures OUTER est facultative
Il est mentionné dans l'article msdn: https://msdn.microsoft.com/en-us/library/ms177634(v=sql.130).aspx
Donc, la liste suivante montre les syntaxes de jointure équivalentes avec et sans OUTER
LEFT OUTER JOIN => LEFT JOIN
RIGHT OUTER JOIN => RIGHT JOIN
FULL OUTER JOIN => FULL JOIN
Autres syntaxes équivalentes
INNER JOIN => JOIN
CROSS JOIN => ,
Je recommande vivement Dotnet Mob Artice: se joint au serveur SQL

C) Jointure externe:
There are three type of outer join
1) Left Outer Join = Left Join
2) Right Outer Join = Right Join
3) Full Outer Join = Full Join J'espère que ça aiderait.
Il existe principalement trois types de JOIN
Extérieur: sont de trois types
Cross Join: joint tout à tout
Le sucre syntaxique, rend plus évident pour le lecteur occasionnel que la jointure n'est pas intérieure.
Dans le cadre de cette question, je souhaite également publier les 2 opérateurs 'APPLY':
SE JOINT :
INNER JOIN = JOIN
JOINT EXTERIEUR
LEFT OUTER JOIN = LEFT JOIN
RIGHT OUTER JOIN = RIGHT JOIN
FULL OUTER JOIN = FULL JOIN
CROSS JOIN
SELF-JOIN : Ce n'est pas exactement un type de jointure distinct. Il s'agit essentiellement de joindre une table à elle-même en utilisant l'une des jointures ci-dessus. Mais j'ai pensé qu'il valait la peine d'être mentionné dans le contexte des discussions JOIN car vous entendrez ce terme de la part de nombreux développeurs SQL.
APPLIQUER :
https://www.mssqltips.com/sqlservertip/1958/sql-server-cross-apply-and-outer-apply/
https://sqlhints.com/2016/10/23/outer-apply-in-sql-server/
Exemple réel, quand utiliser OUTER / CROSS APPLY dans SQL
Je trouve que l'opérateur APPLY est très bénéfique car il donne de meilleures performances que d'avoir à faire le même calcul dans une sous-requête. Ils remplacent également de nombreuses fonctions analytiques dans les anciennes versions de SQL Server. C'est pourquoi je crois qu'après avoir été à l'aise avec JOINS, un développeur SQL devrait essayer d'apprendre les opérateurs APPLY ensuite.
OUTERmot-clé est facultatif.