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
Control Structures in Oracle Database

Control Structures in Oracle Database

Key Concepts

1. IF-THEN Statement

The IF-THEN statement is the simplest form of control structure. It executes a block of code if a specified condition is true.

Example:

Executing a block of code if a condition is true:

IF salary > 5000 THEN dbms_output.put_line('High Salary'); END IF;

2. IF-THEN-ELSE Statement

The IF-THEN-ELSE statement extends the IF-THEN statement by providing an alternative block of code to execute if the condition is false.

Example:

Executing different blocks of code based on a condition:

IF salary > 5000 THEN dbms_output.put_line('High Salary'); ELSE dbms_output.put_line('Low Salary'); END IF;

3. IF-THEN-ELSIF Statement

The IF-THEN-ELSIF statement allows for multiple conditions to be checked, executing different blocks of code based on which condition is true.

Example:

Executing different blocks of code based on multiple conditions:

IF salary > 10000 THEN dbms_output.put_line('Very High Salary'); ELSIF salary > 5000 THEN dbms_output.put_line('High Salary'); ELSE dbms_output.put_line('Low Salary'); END IF;

4. CASE Statement

The CASE statement provides a way to select one of many code blocks to execute based on the value of an expression.

Example:

Executing different blocks of code based on the value of an expression:

CASE department_id WHEN 10 THEN dbms_output.put_line('Department 10'); WHEN 20 THEN dbms_output.put_line('Department 20'); ELSE dbms_output.put_line('Other Department'); END CASE;

5. SEARCHED CASE Statement

The SEARCHED CASE statement allows for more complex conditions to be evaluated, similar to the IF-THEN-ELSIF statement.

Example:

Executing different blocks of code based on complex conditions:

CASE WHEN salary > 10000 THEN dbms_output.put_line('Very High Salary'); WHEN salary > 5000 THEN dbms_output.put_line('High Salary'); ELSE dbms_output.put_line('Low Salary'); END CASE;

6. LOOP Statement

The LOOP statement is a basic loop structure that repeatedly executes a block of code until an EXIT condition is met.

Example:

Repeating a block of code until a condition is met:

LOOP dbms_output.put_line('Iteration: ' || counter); counter := counter + 1; EXIT WHEN counter > 5; END LOOP;

7. WHILE LOOP Statement

The WHILE LOOP statement repeatedly executes a block of code as long as a specified condition is true.

Example:

Repeating a block of code while a condition is true:

WHILE counter <= 5 LOOP dbms_output.put_line('Iteration: ' || counter); counter := counter + 1; END LOOP;

8. FOR LOOP Statement

The FOR LOOP statement executes a block of code a specified number of times, using a loop counter.

Example:

Repeating a block of code a specified number of times:

FOR i IN 1..5 LOOP dbms_output.put_line('Iteration: ' || i); END LOOP;

9. CONTINUE Statement

The CONTINUE statement skips the remaining code in the current iteration of a loop and continues with the next iteration.

Example:

Skipping an iteration based on a condition:

FOR i IN 1..5 LOOP CONTINUE WHEN i = 3; dbms_output.put_line('Iteration: ' || i); END LOOP;

10. EXIT Statement

The EXIT statement terminates the execution of a loop immediately.

Example:

Exiting a loop based on a condition:

FOR i IN 1..5 LOOP dbms_output.put_line('Iteration: ' || i); EXIT WHEN i = 3; END LOOP;

11. GOTO Statement

The GOTO statement transfers control to a specified label within the same block of code. It is generally discouraged due to its potential to make code difficult to read and maintain.

Example:

Transferring control to a label:

IF salary > 5000 THEN GOTO high_salary; ELSE dbms_output.put_line('Low Salary'); END IF; <> dbms_output.put_line('High Salary');

12. NULL Statement

The NULL statement does nothing. It is often used as a placeholder where a statement is required syntactically but no action is needed.

Example:

Using the NULL statement as a placeholder:

IF salary > 5000 THEN dbms_output.put_line('High Salary'); ELSE NULL; END IF;

13. Nested IF Statements

Nested IF statements involve placing an IF statement inside another IF statement. This allows for more complex decision-making logic.

Example:

Using nested IF statements for complex decision-making:

IF salary > 5000 THEN IF department_id = 10 THEN dbms_output.put_line('High Salary in Department 10'); END IF; END IF;

14. Nested LOOP Statements

Nested LOOP statements involve placing one loop inside another. This allows for more complex iterative logic.

Example:

Using nested LOOP statements for complex iteration:

FOR i IN 1..3 LOOP FOR j IN 1..2 LOOP dbms_output.put_line('Outer: ' || i || ' Inner: ' || j); END LOOP; END LOOP;

15. EXIT-WHEN Statement

The EXIT-WHEN statement combines the EXIT statement with a condition, exiting the loop when the condition is true.

Example:

Exiting a loop based on a condition:

LOOP dbms_output.put_line('Iteration: ' || counter); counter := counter + 1; EXIT WHEN counter > 5; END LOOP;

16. CONTINUE-WHEN Statement

The CONTINUE-WHEN statement combines the CONTINUE statement with a condition, skipping the current iteration when the condition is true.

Example:

Skipping an iteration based on a condition:

FOR i IN 1..5 LOOP CONTINUE WHEN i = 3; dbms_output.put_line('Iteration: ' || i); END LOOP;

17. Labeling Blocks

Labeling blocks allows for more control over the flow of execution, especially in nested control structures. Labels can be used with GOTO statements or to identify blocks of code.

Example:

Labeling a block of code:

<> FOR i IN 1..3 LOOP <> FOR j IN 1..2 LOOP dbms_output.put_line('Outer: ' || i || ' Inner: ' || j); END LOOP inner_loop; END LOOP outer_loop;

18. Exception Handling

Exception handling allows for the management of errors and exceptional conditions within PL/SQL code. It uses the EXCEPTION block to handle errors gracefully.

Example:

Handling an exception:

BEGIN UPDATE employees SET salary = salary * 1.1 WHERE employee_id = 100; EXCEPTION WHEN NO_DATA_FOUND THEN dbms_output.put_line('Employee not found'); END;