SQL JOIN and different types of JOINs

后端 未结 6 1001
[愿得一人]
[愿得一人] 2020-11-21 05:39

What is a SQL JOIN and what are different types?

6条回答
  •  执笔经年
    2020-11-21 06:08

    Definition:


    JOINS are way to query the data that combined together from multiple tables simultaneously.

    Types of JOINS:


    Concern to RDBMS there are 5-types of joins:

    • Equi-Join: Combines common records from two tables based on equality condition. Technically, Join made by using equality-operator (=) to compare values of Primary Key of one table and Foreign Key values of another table, hence result set includes common(matched) records from both tables. For implementation see INNER-JOIN.

    • Natural-Join: It is enhanced version of Equi-Join, in which SELECT operation omits duplicate column. For implementation see INNER-JOIN

    • Non-Equi-Join: It is reverse of Equi-join where joining condition is uses other than equal operator(=) e.g, !=, <=, >=, >, < or BETWEEN etc. For implementation see INNER-JOIN.

    • Self-Join:: A customized behavior of join where a table combined with itself; This is typically needed for querying self-referencing tables (or Unary relationship entity). For implementation see INNER-JOINs.

    • Cartesian Product: It cross combines all records of both tables without any condition. Technically, it returns the result set of a query without WHERE-Clause.

    As per SQL concern and advancement, there are 3-types of joins and all RDBMS joins can be achieved using these types of joins.

    1. INNER-JOIN: It merges(or combines) matched rows from two tables. The matching is done based on common columns of tables and their comparing operation. If equality based condition then: EQUI-JOIN performed, otherwise Non-EQUI-Join.

    2. OUTER-JOIN: It merges(or combines) matched rows from two tables and unmatched rows with NULL values. However, can customized selection of un-matched rows e.g, selecting unmatched row from first table or second table by sub-types: LEFT OUTER JOIN and RIGHT OUTER JOIN.

      2.1. LEFT Outer JOIN (a.k.a, LEFT-JOIN): Returns matched rows from two tables and unmatched from the LEFT table(i.e, first table) only.

      2.2. RIGHT Outer JOIN (a.k.a, RIGHT-JOIN): Returns matched rows from two tables and unmatched from the RIGHT table only.

      2.3. FULL OUTER JOIN (a.k.a OUTER JOIN): Returns matched and unmatched from both tables.

    3. CROSS-JOIN: This join does not merges/combines instead it performs Cartesian product.

    enter image description here Note: Self-JOIN can be achieved by either INNER-JOIN, OUTER-JOIN and CROSS-JOIN based on requirement but the table must join with itself.

    For more information:

    Examples:

    1.1: INNER-JOIN: Equi-join implementation

    SELECT  *
    FROM Table1 A 
     INNER JOIN Table2 B ON A. =B.;
    

    1.2: INNER-JOIN: Natural-JOIN implementation

    Select A.*, B.Col1, B.Col2          --But no B.ForeignKeyColumn in Select
     FROM Table1 A
     INNER JOIN Table2 B On A.Pk = B.Fk;
    

    1.3: INNER-JOIN with NON-Equi-join implementation

    Select *
     FROM Table1 A INNER JOIN Table2 B On A.Pk <= B.Fk;
    

    1.4: INNER-JOIN with SELF-JOIN

    Select *
     FROM Table1 A1 INNER JOIN Table1 A2 On A1.Pk = A2.Fk;
    

    2.1: OUTER JOIN (full outer join)

    Select *
     FROM Table1 A FULL OUTER JOIN Table2 B On A.Pk = B.Fk;
    

    2.2: LEFT JOIN

    Select *
     FROM Table1 A LEFT OUTER JOIN Table2 B On A.Pk = B.Fk;
    

    2.3: RIGHT JOIN

    Select *
     FROM Table1 A RIGHT OUTER JOIN Table2 B On A.Pk = B.Fk;
    

    3.1: CROSS JOIN

    Select *
     FROM TableA CROSS JOIN TableB;
    

    3.2: CROSS JOIN-Self JOIN

    Select *
     FROM Table1 A1 CROSS JOIN Table1 A2;
    

    //OR//

    Select *
     FROM Table1 A1,Table1 A2;
    

提交回复
热议问题