Oracle Database SQL Certified Associate
1 Introduction to SQL
1-1 Overview of SQL
1-2 History of SQL
1-3 SQL Standards
2 SQL Data Types
2-1 Numeric Data Types
2-2 Character Data Types
2-3 Date and Time Data Types
2-4 Large Object (LOB) Data Types
2-5 Miscellaneous Data Types
3 Creating and Managing Tables
3-1 Creating Tables
3-2 Modifying Tables
3-3 Dropping Tables
3-4 Table Constraints
3-5 Temporary Tables
4 Data Manipulation Language (DML)
4-1 Inserting Data
4-2 Updating Data
4-3 Deleting Data
4-4 Selecting Data
4-5 Using Subqueries
5 Data Control Language (DCL)
5-1 Granting Privileges
5-2 Revoking Privileges
6 Data Definition Language (DDL)
6-1 Creating Tables
6-2 Altering Tables
6-3 Dropping Tables
6-4 Creating Indexes
6-5 Dropping Indexes
6-6 Creating Views
6-7 Dropping Views
7 SQL Functions
7-1 Single-Row Functions
7-2 Aggregate Functions
7-3 Group Functions
7-4 Analytical Functions
8 Joins and Subqueries
8-1 Inner Joins
8-2 Outer Joins
8-3 Self-Joins
8-4 Cross Joins
8-5 Subqueries
9 Set Operators
9-1 UNION
9-2 UNION ALL
9-3 INTERSECT
9-4 MINUS
10 Grouping and Aggregation
10-1 GROUP BY Clause
10-2 HAVING Clause
10-3 ROLLUP and CUBE
10-4 GROUPING SETS
11 Transactions and Concurrency
11-1 Transaction Control Statements
11-2 Locking and Concurrency
11-3 Isolation Levels
12 Oracle SQL Developer
12-1 Overview of Oracle SQL Developer
12-2 Using SQL Worksheet
12-3 Managing Connections
12-4 Running Scripts
13 Advanced SQL Topics
13-1 Recursive Queries
13-2 Model Clause
13-3 PIVOT and UNPIVOT
13-4 Flashback Query
14 Performance Tuning
14-1 Query Optimization
14-2 Indexing Strategies
14-3 Analyzing Query Performance
15 Security and Auditing
15-1 User Management
15-2 Role Management
15-3 Auditing SQL Statements
16 Backup and Recovery
16-1 Backup Strategies
16-2 Recovery Strategies
16-3 Using RMAN
17 Oracle Database Architecture
17-1 Overview of Oracle Database Architecture
17-2 Memory Structures
17-3 Process Structures
17-4 Storage Structures
18 PLSQL Basics
18-1 Introduction to PLSQL
18-2 PLSQL Block Structure
18-3 Variables and Data Types
18-4 Control Structures
18-5 Exception Handling
19 Oracle SQL Certification Exam Preparation
19-1 Exam Objectives
19-2 Sample Questions
19-3 Practice Tests
19-4 Exam Tips
8 Joins and Subqueries in Oracle SQL

8 Joins and Subqueries in Oracle SQL

Key Concepts

Joins and subqueries are essential tools in Oracle SQL for combining data from multiple tables and performing complex queries. Understanding these concepts is crucial for effectively querying and analyzing data in a relational database.

1. Inner Join

An inner join returns only the rows that have matching values in both tables. It is the most common type of join and is used to combine data based on a related column between them.

Example: Joining the "Employees" and "Departments" tables on the "DepartmentID" column:

SELECT Employees.EmployeeID, Employees.FirstName, Departments.DepartmentName FROM Employees INNER JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;

2. Left Outer Join

A left outer join returns all the rows from the left table and the matched rows from the right table. If there is no match, the result is NULL on the side of the right table.

Example: Retrieving all employees and their department names, including those without a department:

SELECT Employees.EmployeeID, Employees.FirstName, Departments.DepartmentName FROM Employees LEFT JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;

3. Right Outer Join

A right outer join returns all the rows from the right table and the matched rows from the left table. If there is no match, the result is NULL on the side of the left table.

Example: Retrieving all departments and their employees, including departments without employees:

SELECT Employees.EmployeeID, Employees.FirstName, Departments.DepartmentName FROM Employees RIGHT JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;

4. Full Outer Join

A full outer join returns all the rows from both tables. If there is no match, the result is NULL on the side where there is no match.

Example: Retrieving all employees and departments, including those without a match:

SELECT Employees.EmployeeID, Employees.FirstName, Departments.DepartmentName FROM Employees FULL OUTER JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;

5. Self Join

A self join is a join of a table to itself. It is used to query hierarchical data or to compare rows within the same table.

Example: Retrieving employees and their managers from the same "Employees" table:

SELECT e.EmployeeID, e.FirstName, m.FirstName AS ManagerName FROM Employees e JOIN Employees m ON e.ManagerID = m.EmployeeID;

6. Cross Join

A cross join returns the Cartesian product of the joined tables. It combines each row from the first table with each row from the second table.

Example: Retrieving all possible combinations of employees and departments:

SELECT Employees.EmployeeID, Departments.DepartmentName FROM Employees CROSS JOIN Departments;

7. Subqueries

A subquery is a query nested inside another query. It can be used to return data that will be used in the main query as a condition to further restrict the data to be retrieved.

Example: Retrieving employees who earn more than the average salary:

SELECT EmployeeID, FirstName, Salary FROM Employees WHERE Salary > (SELECT AVG(Salary) FROM Employees);

8. Correlated Subqueries

A correlated subquery is a subquery that depends on the outer query for its values. It is executed once for each row processed by the outer query.

Example: Retrieving departments where the average salary is higher than the average salary of all employees:

SELECT DepartmentID, DepartmentName FROM Departments d WHERE (SELECT AVG(Salary) FROM Employees e WHERE e.DepartmentID = d.DepartmentID) > (SELECT AVG(Salary) FROM Employees);

By mastering these joins and subqueries, you can effectively combine and analyze data from multiple tables in Oracle SQL, making your queries more powerful and flexible.