SQL¶
JOIN¶
EQUI JOIN -> 4th video¶
SELECT e.name, e.sal, e.job, d.name, d.loc, i.*
FROM emp e, dept d, incr i
WHERE e.job = 'MANAGER' AND I.INGD = 'i3'
AND e.dptno = d.depno
- INCR table not related to othere table that why we cannot apply INNER JOIN, So we are using EQUI JOIN
INNER JOIN¶
WHEREclase is used to write filter condion andONclose is used to write join condtion.- we are use JOIN & WHERE both in INNER JOIN
SELF JOIN¶
Q. Who is working like martin
Q Display emp data Who is working in department whew sumit is working?¶
- if we select
a.*(first table) it display duplicate data
Inner join vs equi¶
- INNER JOIN is similar to EQUI JOIN
- In case of INNER JOIN query in between two tables we should specify INNER JOIN keyword
- the
JOINcondtion you should specify by usingONClause - If you want to specify filter conditions we should specify under
WHEREClose at the end of query
Q. Which case we should use INNER JOIN¶
IF you want to use EQUI-JOIN output in Outer JOIN query we need EQUI JOIN OUTPUT in OUTTER JOIN query in such case Dont not use EQUI JOIN query becaouse EQUI JOIN support
- WHERE CLAUSE and OUTTER JOIN SUPPORT ON CLAUSE so both aare incompatible
- If you need INNER JOIN along with OUTTER JOIN or EQUI JOIN output along with OUTTER JOIN
- We should use INNER JOIN only becaouse INNER JOIN Support
ONCLAUSE and OUTTER JOIN alse supportONCLAUSE
OUTTER JOIN¶
- Display all data from one table and only matched data from other table
Three types of OUTTER JOIN¶
- LEFT OUTTER JOIN OR LEF JOIN
- All data from left table + only matched data from right table.
- RIGHT OUTTER JOIN OR RIGHT JOIN
- All data from Right table + only matched data from left table
-
FULL OUTER JOIN (OR) FULL JOIN
- Matched data from both tables + unmatched data from left table, unmatched data from Right table
- Join condition should be specified byusing
ONClouse - getting all the data from both table
Syntax ----------;
- company_table -> compid, compname
- prod -> pid,pname,cost,msg,disk,compid
JOIN queries¶
SELECT p.pid, p.name, c.pid,c.compname
FROM prod p INNER JOIN
comp c
ON p.compid = c.compid
ADD output image here
-- LEFT JOIN
SELECT p.pid, p.name, c.*
FROM prod p LEFT JOIN comp c
ON p.compid = c.compid
add output here
-- RIGHT JOIN
SELECT p.pid, p.name, c.compid
FROM prod p RIGHT JOIN
com c
ON p.compid = c.compid
-- FULL JOIN
SELECT p.pid, p.name, c.*
FROM prod p FULL JOIN comp c
ON p.comid = c.comid
--
CREATE table deptcp
AS
SELECT * FROM dept;
--
UPDATE empcp SET depno = null
WHERE depno = 30;
commit