Different Types of SQL Joins
Different Types of SQL Joins
Sql joins are used to fetch/retrieve data from two or more data tables, based on a join condition. A join condition is a relationship among some columns in the data tables that take part in Sql join. Basically data tables are related to each other with keys. We use these keys relationship in sql joins. Also, refer the article SQL Joins with C# LINQ.
Types of Joins
In Sql Server we have only three types of joins. Using these joins we fetch the data from multiple tables based on condition.
1.
Inner Join
Inner join returns only those records/rows that match/exists in both the tables. Syntax for Inner Join is as 1. Select * from table_1 as t1
2. 1.
Left outer join returns all records/rows from left table and from right table returns only matched records. If there are no columns matching in the right table, it returns NULL values. Syntax for Left outer Join is as : 1. Select * from table_1 as t1
2.
Right outer join returns all records/rows from right table and from left table returns only matched records. If there are no columns matching in the left table, it returns NULL values. Syntax for right outer Join is as : 1. Select * from table_1 as t1
3.
Full outer join combines left outer join and right outer join. This join returns all records/rows from both the tables.If there are no columns matching in the both tables, it returns NULL values. Syntax for full outer Join is as : 1. Select * from table_1 as t1
3.
Cross Join
Cross join is a cartesian join means cartesian product of both the tables. This join does not need any condition to join two tables. This join returns records/rows that are multiplication of record number from both the tables means each row on left table will related to each row of right table. Syntax for right outer Join is as : 1. Select * from table_1
4.
Self Join
Self join is used to join a database table to itself, particularly when the table has a Foreign key that references its own Primary Key. Basically we have only three types of joins : Inner join, Outer join and Cross join. We use any of these three JOINS to join a table to itself. Hence Self join is not a type of Sql join.
Join Examples
Suppose we following three tables and data in these three tables is shown in figure. You can download the SQL script used in this article by using link.
Inner Join
1. SELECT t1.OrderID, t0.ProductID, t0.Name, t0.UnitPrice, t1.Quantity, t1.Price
2. FROM tblProduct AS t0
t2.Name AS Customer 2. FROM tblProduct AS t0 3. INNER JOIN tblOrder AS t1 ON t0.ProductID = t1.ProductID 4. INNER JOIN tblCustomer AS t2 ON t1.CustomerID = t2.CustID 5. ORDER BY t1.OrderID
t2.Name AS Customer 2. FROM tblProduct AS t0 3. INNER JOIN tblOrder AS t1 ON t0.ProductID = t1.ProductID 4. INNER JOIN tblCustomer AS t2 ON t1.CustomerID = t2.CustID AND t1.ContactNo =
Cross Join
1. SELECT t1.OrderID, t0.ProductID, t0.Name, t0.UnitPrice, t1.Quantity, t1.Price
Self Join
To understand Self Join, suppose we following two tables and data in these two tables is shown in figure. 1. 2. ( CREATE TABLE emp
3. id int NOT NULL primary key, 4. name varchar(100) NULL, 5. designation varchar(50) NULL, 6. supid int foreign key references emp(id) ) -- In this table we have a Foreign key supid that references its own Primary Key id. We use it for Self Join 7. INSERT INTO emp(id,name,designation) VALUES(1,'mohan','Manger') 8. INSERT INTO emp(id,name,designation,supid) VALUES(2,'raj kumar','SE',1) 9. 10. 11. INSERT INTO emp(id,name,designation) VALUES(3,'bipul kumar','Manager') INSERT INTO emp(id,name,designation,supid) VALUES(4,'mrinal kumar','SE',2) INSERT INTO emp(id,name,designation,supid) VALUES(5,'jitendra kumar','SE',2)
1. 2. (
3. id int primary key, 4. 5. ) 6. INSERT INTO empinfo(id,address) VALUES(1,'Delhi') 7. INSERT INTO empinfo(id,address) VALUES(2,'Noida') 8. INSERT INTO empinfo(id,address) VALUES(4,'Gurgaon') 9. INSERT INTO empinfo(id,address) VALUES(6,'Delhi') 10. INSERT INTO empinfo(id,address) VALUES(7,'Noida') address varchar(50) NULL
1.
select e.id,e.name,e.supid as managerid, ei.name as managername from emp e left join emp ei on e.supid=ei.id;
Difference between inner join and equi join and natural join
SQL join clause is used to to retrieve data from two or more database tables. In previous article, I have explained the Different Types of SQL Joins. In this article, I would explain the difference among inner join, equi join and natural join.
Inner Join
This is the most used join in the SQL. this join returns only those records/rows that match/exists in both the database tables.
Soya 2 IT 2 Sam 3 ADMIN 3 In the join condition, you can also use other operators like <,>,<>.
Equi Join
Equi join is a special type of join in which we use only equality operator. Hence, when you make a query for join using equality operator then that join query comes under Equi join.
Note
1. Inner join can have equality (=) and other operators (like <,>,<>) in the join condition. 2. Equi join only have equality (=) operator in the join condition. 3. -Equi join can be an Inner join, Left Outer join, Right Outer join 4. The USING clause is not supported by SQL Server and Sybase. This clause is supported by Oracle and MySQL.
Natural Join
Natural join is a type of equi join which occurs implicitly by comparing all the same names columns in both tables. The join result have only one column for each pair of equally named columns.
HR 2 Raju IT 2 Soya IT 3 Sam ADMIN In the above join result we have only one column "DeptID" for each pair of equally named columns.
Note
1. In Natural join, you can't see what columns from both the tables will be used in the join. In Natural join, you might not get the desired result what you are expecting. 2. Natural join clause is not supported by SQL Server, it is supported by Oracle and MySQL.