>> if in left join i reverse order of table it behaves like right join then why we need to separate joins? <<
Historical reasons. When we voted on this in ANSI X2H2, the proposal
included a whole list of in-fixed joins, most of them redundant and
not implemented. BUT they were easy to define once we had the
definition of an outer join. Here is the BNF
<joined table> ::=
<cross join> | <qualified join> | (<joined table>)
<cross join> ::= <table reference> CROSS JOIN <table reference>
<qualified join> ::=
<table reference> [NATURAL] [<join type>] JOIN
<table reference> [<join specification>]
<join specification> ::= <join condition> | <named columns join>
<join condition> ::= ON <search condition>
<named columns join> ::= USING (<join column list>)
<join type> ::= INNER | <outer join type> [OUTER] | UNION
<outer join type> ::= LEFT | RIGHT | FULL
<join column list> ::= <column name list>
<table reference> ::=
<table name> [[AS] <correlation name>[(<derived column
list>)]]
| <derived table>
[AS] <correlation name> [(<derived column list>)]
| <joined table>
<derived table> ::= <table subquery>
<column name list> ::=
<column name> [{ <comma> <column name> }...]
>> Stay informed about: why right outer join is needed?