Hi,
I will explain SQL Join and Join Types in Oracle SQL in this post of Oracle SQL Tutorial series.
Read the previous post of this tutorial series before this.
EXISTS and NOT EXISTS Operator in Oracle SQL | Oracle SQL Tutorials -18
The JOIN Clause
The JOIN is very popular clause in Oracle SQL that is used to combine or join two or more tables according to a related column between tables.
You should use the Table ALIAS when join the multiple tables. If ALIAS is not used, wrong results can be produced.
You should define the Join column before use it.
You should use the only related column in Select and avoid the select * from clause.
JOIN TYPES
There are four types of the JOINs in Oracle SQL as follows.
- (INNER) JOIN: it lists the records when matching values exist in both tables
- LEFT (OUTER) JOIN: it lists the records from the left table and the matched records from the right table.
- RIGHT (OUTER) JOIN: it lists the records from the right table and the matched records from the left table.
- FULL (OUTER) JOIN: it lists the records when there is a match in either first or other table.
When you decided to Join multiple tables, you should define the Join Column firstly.
For Example; I want to join hr.departments and hr.locations table, lets check it if there is a common column or not as follows.
SQL> desc hr.departments Name Null? Type ----------------------------------------- -------- ---------------------------- DEPARTMENT_ID NOT NULL NUMBER(4) DEPARTMENT_NAME NOT NULL VARCHAR2(30) MANAGER_ID NUMBER(6) LOCATION_ID NUMBER(4) SQL> SQL> desc hr.locations Name Null? Type ----------------------------------------- -------- ---------------------------- LOCATION_ID NOT NULL NUMBER(4) STREET_ADDRESS VARCHAR2(40) POSTAL_CODE VARCHAR2(12) CITY NOT NULL VARCHAR2(30) STATE_PROVINCE VARCHAR2(25) COUNTRY_ID CHAR(2) SQL>
There is a common column named location_id between two tables, so we can join these tables with this column as follows.
You can find the city name of department when you join the hr.departments and hr.locations tables with location_id column.
SQL> SELECT department_id, department_name, city FROM hr.departments d, hr.locations l where d.location_id=l.location_id; DEPARTMENT_ID DEPARTMENT_NAME CITY ------------- ------------------------------ ------------------------------ 60 IT Southlake 50 Shipping South San Francisco 10 Administration Seattle 30 Purchasing Seattle 90 Executive Seattle 100 Finance Seattle 110 Accounting Seattle 120 Treasury Seattle 130 Corporate Tax Seattle 140 Control And Credit Seattle 150 Shareholder Services Seattle DEPARTMENT_ID DEPARTMENT_NAME CITY ------------- ------------------------------ ------------------------------ 160 Benefits Seattle 170 Manufacturing Seattle 180 Construction Seattle 190 Contracting Seattle 200 Operations Seattle 210 IT Support Seattle 220 NOC Seattle 230 IT Helpdesk Seattle 240 Government Sales Seattle 250 Retail Sales Seattle 260 Recruiting Seattle DEPARTMENT_ID DEPARTMENT_NAME CITY ------------- ------------------------------ ------------------------------ 270 Payroll Seattle 11 Computer Engineering Seattle 20 Marketing Toronto 40 Human Resources London 80 Sales Oxford 70 Public Relations Munich 28 rows selected. SQL>
You can find the first_name, last name and city name of employees and department name when you join the hr.departments and hr.locations tables with location_id column.
SQL> SELECT employee_id, first_name,last_name,city, department_name 2 FROM hr.employees e 3 JOIN hr.departments d 4 ON d.department_id = e.department_id 5 JOIN hr.locations l 6 ON d.location_id = l.location_id where l.location_id>2400; EMPLOYEE_ID FIRST_NAME LAST_NAME CITY DEPARTMENT_NAME ----------- -------------------- ------------------------- ------------------------------ ------------------------------ 145 John Russell Oxford Sales 146 Karen Partners Oxford Sales 147 Alberto Errazuriz Oxford Sales 148 Gerald Cambrault Oxford Sales 149 Eleni Zlotkey Oxford Sales 150 Peter Tucker Oxford Sales 151 David Bernstein Oxford Sales 152 Peter Hall Oxford Sales 153 Christopher Olsen Oxford Sales 154 Nanette Cambrault Oxford Sales 155 Oliver Tuvault Oxford Sales EMPLOYEE_ID FIRST_NAME LAST_NAME CITY DEPARTMENT_NAME ----------- -------------------- ------------------------- ------------------------------ ------------------------------ 156 Janette King Oxford Sales 157 Patrick Sully Oxford Sales 158 Allan McEwen Oxford Sales 159 Lindsey Smith Oxford Sales 160 Louise Doran Oxford Sales 161 Sarath Sewall Oxford Sales 162 Clara Vishney Oxford Sales 163 Danielle Greene Oxford Sales 164 Mattea Marvins Oxford Sales 165 David Lee Oxford Sales 166 Sundar Ande Oxford Sales EMPLOYEE_ID FIRST_NAME LAST_NAME CITY DEPARTMENT_NAME ----------- -------------------- ------------------------- ------------------------------ ------------------------------ 167 Amit Banda Oxford Sales 168 Lisa Ozer Oxford Sales 169 Harrison Bloom Oxford Sales 170 Tayler Fox Oxford Sales 171 William Smith Oxford Sales 172 Elizabeth Bates Oxford Sales 173 Sundita Kumar Oxford Sales 174 Ellen Abel Oxford Sales 175 Alyssa Hutton Oxford Sales 176 Jonathon Taylor Oxford Sales 177 Jack Livingston Oxford Sales EMPLOYEE_ID FIRST_NAME LAST_NAME CITY DEPARTMENT_NAME ----------- -------------------- ------------------------- ------------------------------ ------------------------------ 179 Charles Johnson Oxford Sales 204 Hermann Baer Munich Public Relations 35 rows selected. SQL>
Do you want to learn Oracle SQL Tutorial for Beginners, then read the following articles.
Oracle SQL Tutorials For Beginners – Learn Oracle SQL from scratch with Oracle SQL Online Course