Is inner join the same as equi-join? Is inner join the same as equi-join? oracle oracle

Is inner join the same as equi-join?


An 'inner join' is not the same as an 'equi-join' in general terms.

'equi-join' means joining tables using the equality operator or equivalent. I would still call an outer join an 'equi-join' if it only uses equality (others may disagree).

'inner join' is opposed to 'outer join' and determines how to join two sets when there is no matching value.


Simply put: an equi-join is a possible type of inner-joins

For a more in-depth explanation:

An inner-join is a join that returns only rows from joined tables where a certain condition is met. This condition may be of equality, which means we would have an equi-join; if the condition is not that of equality - which may be a non-equality, greater than, lesser than, between, etc. - we have a nonequi-join, called more precisely theta-join.

If we do not want such conditions to be necessarily met, we can have outer joins (all rows from all tables returned), left join (all rows from left table returned, only matching for right table), right join (all rows from right table returned, only matching for left table).


The answer is NO.

An equi-join is used to match two columns from two tables using explicit operator =:

Example:

select *  from table T1, table2 T2  where T1.column_name1 = T2.column_name2

An inner join is used to get the cross product between two tables, combining all records from both tables. To get the right result you can use a equi-join or one natural join (column names between tables must be the same)

Using equi-join (explicit and implicit)

select *  from table T1 INNER JOIN table2 T2  on T1.column_name = T2.column_nameselect *  from table T1, table2 T2  where T1.column_name = T2.column_name

Or Using natural join

select *  from table T1 NATURAL JOIN table2 T2