A self join is a regular join, but the table is joined with itself. This kind of join can take the form of an inner join, a left outer join, or even a full outer join depending on the requirement.
While indexes can improve the performance of joins by reducing the cost of the lookup operations, they are not a requirement for a self join. A self join can be performed with or without an index on the join key columns.
A self join can indeed be a left outer join. This is useful when you want to include all records from the 'left' side of the join (the table itself), even if the join condition does not find any matching record on the 'right' side (the table itself again).
[Reference: Oracle Database SQL Language Reference, which explains the use of joins, including self joins (Oracle Database SQL Language Reference, 12c Release 1 (12.1))., C. It must be a full outer join. (Incorrect), A self join does not need to be a full outer join; it can be any type of join depending on what the query needs to accomplish., D. It can be an inner join. (Correct), Just like with any two different tables, a self join can be an inner join. This would return only the rows with matching values in the self join condition., E. It must be an equijoin. (Incorrect), Although self joins are often equijoins, meaning the join condition is based on equality, they do not have to be. Self joins can use other operators such as <, >, <=, >=, !=, etc., depending on the requirements of the query., ]