An SQL join clause combines columns from one or more tables in a relational database. It creates a set that can be saved as a table or used as it is. A JOIN
is a means for combining columns from one (self-join) or more tables by using values common to each. ANSI-standard SQL specifies five types of JOIN
: INNER
, LEFT OUTER
, RIGHT OUTER
, FULL OUTER
and CROSS
. As a special case, a table (base table, view, or joined table) can JOIN
to itself in a self-join.
A programmer declares a JOIN
statement to identify rows for joining. If the evaluated predicate is true, the combined row is then produced in the expected format, a row set or a temporary table.
Relational databases are usually normalized to eliminate duplication of information such as when entity types have one-to-many relationships. For example, a Department may be associated with a number of Employees. Joining separate tables for Department and Employee effectively creates another table which combines the information from both tables.
All subsequent explanations on join types in this article make use of the following two tables. The rows in these tables serve to illustrate the effect of different types of joins and join-predicates. In the following tables the DepartmentID
column of the Department
table (which can be designated as Department.DepartmentID
) is the primary key, while Employee.DepartmentID
is a foreign key.
Note: In the Employee table above, the employee "Williams" has not been assigned to any department yet. Also, note that no employees are assigned to the "Marketing" department.
This is the SQL statement to create the aforementioned tables.
CROSS JOIN returns the Cartesian product of rows from tables in the join. In other words, it will produce rows which combine each row from the first table with each row from the second table.