In this blog, I’m trying to explain the concept of joins in SQL server and
its types.
Databases are usually comprised of several tables that are related to one
another in some way. You need to pull the information from more than one table
at a time so that you get the desired result.
Joins are used to extract data from more than one table at a time and produce
the information as a single result set. Join is used to link or connect tables
on a common column and return the record that match in those columns.
In SQL joins are used to get
data from two or more tables based on relationship between some of the columns
in tables. In most of the cases we will use primary key of first table and foreign key of secondary table to get data from tables by using this relationship we
can reduce the duplication of data in every table.
Before enter into Joins concept
first design two tables in database and enter data like as shown below
Give the table name as
CustomerTable. Here CUSTID is the
primary key.
Give the table name as
ProductTable. Here PRODUCTID is the
primary key and CUSTID is the foreign key.
Types of Joins
·
Inner Join
·
Outer Join
·
Self Join
Inner Join
The join that displays only the rows that have a match in both the joined tables
is known as inner join.
This is default join in the query and view designer.
Syntax:
SELECT T1.ColumnName, T2.ColumnName
FROM TableName1 T1
INNER JOIN TableName2 T2
ON T1.ColumnName=T2.ColumnName
Example
SELECT C.CUSTNAME,C.ADDRESS,P.PRODUCTNAME,P.PRICE
FROM CustomerTable C
INNER JOIN
ProductTable P
ON C.CUSTID=P.CUSTID
Output
Types of Inner Join
·
Equi Join
·
Natural
Join
·
Cross Join
Equi Join
In an equi join, column values are
compared for equality and even the duplicate columns are displayed.
Syntax:
SELECT * FROM TableName1 T1
Join TableName2 T2
ON T1.ColumnName=T2.ColumnName
Example
SELECT *
FROM CustomerTable C
Join ProductTable P
ON C.CUSTID=P.CUSTID
Output
Natural Join
In natural join, the duplicate columns are
not there. Thus, when you join the two tables, you can select all the fields
from one table and specify the fields that you want from the other table.
Syntax:
SELECT * FROM TableName1
NATURAL JOIN TableName2
Example
SELECT *
FROM CustomerTable
NATURAL
Join ProductTable
Natural Joins won’t work
in SQL Server(only supports in Oracle) it will throw a syntax error.
Cross Join
A cross join produces the Cartesian
product of the tables those involved in the join. The size of the Cartesian
product is the number of the rows in the first table multiplied by the number of
the rows in the second table.
Syntax:
SELECT * FROM TableName1
CROSS JOIN TableName2
Example
SELECT *
FROM CustomerTable
CROSS JOIN ProductTable
Output
Outer Join
Outer joins restrict rows from one table
while allowing all rows from the second table as a result set.
There are three types of outer joins:
·
Left Outer
Join
·
Right Outer
Join
·
Full Outer
Join
Left Outer Join
It includes all the rows from the first
table and only the matching rows from the second table.
Syntax:
SELECT ColumnName FROM TableName1 T1
LEFT OUTER JOIN TableName2 T2
ON T1.ColumnName=T2.ColumnName
Example
SELECT C.CUSTID,C.CUSTNAME,P.PRODUCTNAME
FROM CustomerTable C
LEFT OUTER
JOIN ProductTable P
ON C.CUSTID=P.CUSTID
Output
Right Outer Join
It includes all the rows from the second
table and only the matching rows from the table.
Syntax:
SELECT ColumnName FROM TableName1 T1
RIGHT OUTER JOIN TableName2 T2
ON T1.ColumnName=T2.ColumnName
Example
SELECT C.CUSTID,C.CUSTNAME,P.PRODUCTNAME,P.PRICE
FROM CustomerTable C
RIGHT OUTER
JOIN ProductTable P
ON C.CUSTID=P.CUSTID
Output
Full Outer Join
It includes all the rows, matching as well
as non-matching.
Syntax:
SELECT ColumnName FROM TableName1 T1
FULL OUTER JOIN TableName2 T2
ON T1.ColumnName=T2.ColumnName
Example
SELECT C.CUSTID,C.CUSTNAME,P.PRODUCTNAME,P.PRICE
FROM CustomerTable C
FULL OUTER
JOIN ProductTable P
ON C.CUSTID=P.CUSTID
Output
Self Join
Self join correlates rows of a table with
the other rows of the same table. It is used when a table has to be joined to
itself to produce results.
Example
First you have to create a table EmpTable
and enter the details like this:
SELECT E2.EMPNAME,E1.EMPNAME
as 'MANAGER'
FROM EmpTable E1
INNER JOIN EmpTable
E2
ON E1.EMPID=E2.EMPMGRID
No comments:
Post a Comment