Oracle SQL Basics by Ankur Raina

40
Contacts: www.poetrypoem.com/ankur www.facebook.com/eminemankur E-mail: [email protected] Phone: 9813269824 2011 ANKUR RAINA [ORACLE DATABASE PRESENTATION FOR THE BASIC SQL UNDERSTANDING] All the rights are reserved with the author. No part of this publication may be changed in any form without the prior permission of the author. Copyright 2011

description

This is an introductory course to Oracle SQL.

Transcript of Oracle SQL Basics by Ankur Raina

Page 1: Oracle SQL Basics by Ankur Raina

Contacts: www.poetrypoem.com/ankur

www.facebook.com/eminemankur

E-mail: [email protected]

Phone: 9813269824

2011

ANKURRAINA

[ORACLE DATABASEPRESENTATION FOR THEBASIC SQL UNDERSTANDING]All the rights are reserved with the author. No part of this publication may be changed in any formwithout the prior permission of the author. Copyright 2011

Page 2: Oracle SQL Basics by Ankur Raina

ANKUR RAINA 09-IT-4505

CONTENTS

1. Introduction to Oracle RDBMS 31.1.Features 31.2.Oracle Internet Platform 4

2. E.F.Codd’s Rules 52.1 Rules 52.2 Satisfied by Oracle RDBMS 6

3. Oracle Database Architecture 83.1. The Database 93.2. The Instance 11

4. SQL Statements 144.1.Types 144.2. Capabilities of SQL SELECT Statements 154.3.Data Retrieval Using SELECT Statement 154.4.Defining a NULL value 164.5.Defining a Column Alias 174.6.Restricting and Sorting Statements 17

5. Using Single Row Functions To Customize Output 185.1. Features 225.2. General Functions 225.3. CASE Expression 245.4. DECODE Function 25

6. Reporting Aggregating Data Using Group Functions 266.1. Group Function 266.2. Creating Groups of Data: GROUP BY clause syntax 276.3. Using GROUP BY clause for multiple columns 286.4. Restricting Group Results by HAVING clause 28

7. Displaying Data From Multiple Tables 297.1 Using Subqueries to Solve Queries 30

Page 3: Oracle SQL Basics by Ankur Raina

ANKUR RAINA 09-IT-4505

8. Manipulating Data 318.1. INSERT statement 318.2. UPDATE statement 328.3. DELETE statement 328.4. TRUNCATE statement 32

9. Database Objects 349.1. CREATE statement 349.2. CREATE TABLE using a sub-query 359.3. Dropping a table 35

10.Creating Other Schema Objects 3610.1. Views 3610.2.Creating views 3610.3.Sequence 3710.4.Indexes 3710.5.Synonyms 38

11.References 39

Page 4: Oracle SQL Basics by Ankur Raina

ANKUR RAINA 09-IT-4505

CHAPTER 1

“Our goal is very simply to become the desktop for e-businesses - Larry Ellison”

Introduction to Oracle RDBMS

The Oracle Database (commonly referred to as Oracle RDBMS or simply as Oracle) is anobject-relational database management system (ORDBMS) produced and marketed byOracle Corporation. Larry Ellison and his friends and former co-workers Bob Miner and EdOates started the consultancy Software Development Laboratories (SDL) in 1977. SDLdeveloped the original version of the Oracle software. The name Oracle comes from thecode-name of a CIA-funded project Ellison had worked on while previously employed byAmpex. The latest release of Oracle RDBMS is 11g Release 2.

Features:-

Page 5: Oracle SQL Basics by Ankur Raina

ANKUR RAINA 09-IT-4505

Oracle Internet Platform

The Oracle products provide all the necessary components to develop an application.The integrated Oracle Internet Platform includes everything needed to develop,deploy, and manage internet applications, including these three core pieces:1. Browser-based clients to process presentation2. Application servers to execute business logic and serve presentation logic to

browser-based clients3. Databases to execute database-intensive business logic and serve data

Page 6: Oracle SQL Basics by Ankur Raina

ANKUR RAINA 09-IT-4505

CHAPTER 2

E.F.Codd’s Rules

E.F. Codd, the famous mathematician has introduced 12 rules for the relational model fordatabases commonly known as Codd's rules. The rules mainly define what is required for aDBMS for it to be considered relational, i.e., an RDBMS. There is also one more rule i.e.Rule00 which specifies the relational model should use the relational way to manage thedatabase. The rules and their description are as follows:-

Rules:

Rule 000: Zeroth rule:

An RDBMS system should be capable of using its relational facilities (exclusively) to managethe database.

Rule 1: The information rule:

All information in the database is to be represented in one and only one way. This isachieved by values in column positions within rows of tables.

Rule 2: The guaranteed access rule:

All data must be accessible with no ambiguity. This is achieved in the RDBMS by using theprimary key concept.

Rule 3: Systematic treatment of null values:

The DBMS must allow each field to remain null. The null can be stored in any field of anydatatype.

Rule 4: Active online catalog based on the relational model:

The authorized users can access the database structure by using common language i.e. SQL.

Rule 5: The comprehensive data sublanguage rule:

The system must support at least one relational language that has simple syntax andtransaction management facilities. It can be used in the application as well as in the RDBMSsystems.

Page 7: Oracle SQL Basics by Ankur Raina

ANKUR RAINA 09-IT-4505

Rule 6: The view updating rule:

All views must be updatable by the system.

Rule 7: High-level insert, update, and delete:

The system is able to insert, update and delete operations fully. It can also perform theoperations on multiple rows simultaneously.

Rule 8: Physical data independence:

Changes to the physical storage structure must not require a change to an applicationbased on the structure.

Rule 9: Logical data independence:

Changes to the logical level (tables, columns, rows, and so on) must not require a change toan application based on the structure.

Rule 11: Distribution independence:

The distribution of portions of the database to various locations should be invisible to usersof the database.

Rule 12: The non- subversion rule:

If the system provides a low-level (record-at-a-time) interface, then that interface cannot beused to subvert the system, for example, bypassing a relational security or integrityconstraint.

Note:- Any database management system which fulfills 6 or more than 6 rules can beconsidered as the RDBMS.

Rules satisfied by Oracle RDBMS

Oracle RDBMS follows 11 out of 12 rules. One rule which is not followed is debatable.

1. View Updating Rule:

It is because, according to Dr. E.F.Codd, every view should support full range of datamanipulation, but in Oracle, it is not feasible for complex views based on multipletables.

Page 8: Oracle SQL Basics by Ankur Raina

ANKUR RAINA 09-IT-4505

2. Systematic Treatment of Null value

Null in Oracle is treated as absence of a value or unknown status ( in case ofcomparison of values ) and it does not have any systematic representation. In Oracle,no two null values are equal (as this will return a value which is treated as unknownby Oracle). If there is a systematic representation, then NULL value must becomparable.

Page 9: Oracle SQL Basics by Ankur Raina

ANKUR RAINA 09-IT-4505

CHAPTER 3

Oracle Database Architecture

The Oracle RDBMS consists of two main components:-

1. The Database or the Physical Structures2. The Instance or the Memory Structures

Control Files:

These files contain data about the database itself, called the metadata. These files arecritical to the database. Without them, one cannot open the data files to access the datawithin the database.

Data Files:

These files contain the data of the database.

Page 10: Oracle SQL Basics by Ankur Raina

ANKUR RAINA 09-IT-4505

Online Redo Log Files:

These files allow for instance recovery of the database. If the database were to crash andnot lose data files, the instance will be able to recover the database with the information inthese files.

Tablespaces and Data Files:

Page 11: Oracle SQL Basics by Ankur Raina

ANKUR RAINA 09-IT-4505

A database is divided into logical storage units called tablespaces, which can be used togroup related logical structures. Each database is logically divided into one or moretablespaces. One or more data files are explicitly created for each tablespace to physicallystore the data of all logical structures in a tablespace.

Segments, Extents, and Blocks:

Database objects such as tables and indexes are stored in tablespaces as segments. Eachsegment contains one or more extents. An extent consists of contiguous data blocks, whichmeans that each extent can exist only in one data file. Data blocks are the smallest units ofI/O in the database.

When the database requests a set of data blocks from the operating system (OS), the OSmaps this to the actual OS block on the storage device. Because of this, one needs not to beaware of the physical address of any data in the database. This also means that a data filecan be striped and or mirrored on several disks.

The size of the data block can be set at database creation time. The default size of 8K isadequate for more databases. If your database supports a data warehouse application thathas large tables and indexes, then a larger block may be beneficial. If your databasesupports a transactional application where reads and writes are very random, then a smallerblock size may be beneficial. The maximum block size is dependent on the OS. The minimumblock size is 2K and should rarely (if ever) be used.

There are other files that are not officially part of the database, but are important to thesuccessful running of the database. These are:

Parameter File:

The parameter file is used to define how the instance will be configured when it starts up.

Page 12: Oracle SQL Basics by Ankur Raina

ANKUR RAINA 09-IT-4505

Password File:

This file allows users to connect remotely to the database and perform administrative tasks.

Archive Log Files:

These files contain an ongoing history of the redo generated by the instance. These filesallow for database recovery. By using these files and a backup of the database, it is possibleto recover a lost file.

Oracle Instance Management

An Oracle Database server consists of an Oracle Database and an Oracle instance. An Oracleinstance consists of memory buffers known as the System Global Area (SGA) andbackground processes.

The instance is idle (non-existent) until it is started. When the instance is started, aninitialization parameter file is read and the instance is configured accordingly.

After the instance is started and the database is opened, users can access the database.

Page 13: Oracle SQL Basics by Ankur Raina

ANKUR RAINA 09-IT-4505

Oracle Memory Structures

The basic memory structures associated with an Oracle instance include:

System Global Area (SGA):

It is shared by all server and background processes.

Program Global Area (PGA):

It is private to each server and background process; there is one PGA for each process.

The SGA is a shared memory area that contains data and control information for theinstance. The SGA consists of the following data structures:

Database buffer cache: Caches blocks of data retrieved from the database.

Redo log buffer: Caches redo information (used for instance recovery) until it can be writtento the physical redo log files stored on disk.

Shared pool: Caches various constructs that can be shared among users.

Large pool: Is an optional area used for buffering large I/O requests.

Java pool: Is used for all session-specific Java code and data within the Java Virtual Machine(JVM).

Page 14: Oracle SQL Basics by Ankur Raina

ANKUR RAINA 09-IT-4505

Stream pool: Is used by Oracle Streams.

When we start the instance by using Enterprise Manager or SQL*Plus, the memory allocatedfor the SGA is displayed.

A PGA is a memory region that contains data and control information for each serverprocess. A server process services a client’s requests. Each server process has its ownprivate PGA area that is created when the server process is started. Access to it is exclusiveto that is created when the server process is started. Access to it is exclusive to that serverprocess, and is read and written only by the oracle code acting on behalf of it.

The amount of PGA memory used and its content depends on whether the instance isconfigured in shared mode. Generally, the PGA contains the following:

Private SQL area: Contains data such as bind information and run-time memorystructures. Each session that issues a SQL statement has a private SQL area.

Session memory: Is memory allocated to hold session variables and other informationrelated to the session.

Page 15: Oracle SQL Basics by Ankur Raina

ANKUR RAINA 09-IT-4505

CHAPTER 4

SQL Statements

SQL stand for Structured Query Language. SQL has become the de-facto standard languageused for creating and querying relational databases. The SQL statements can be categorizedas:-

Types of SQL Statements:

Data Manipulation Language:

It constitutes those commands which are used to maintain & query a database, includingupdating, inserting, modifying and querying data.

SELECTINSERTUPDATEDELETEMERGE

Data Definition Language:

It constitutes those commands which are used to define a database including creating,altering and dropping tables and establishing constraints.

CREATEALTERDROPRENAMETRUNCATECOMMENT

Data Control Language:

It controls a database and deals with the administrative privileges.

GRANTREVOKE

Page 16: Oracle SQL Basics by Ankur Raina

ANKUR RAINA 09-IT-4505

Transaction Control:

A discrete unit of work that must be completely processed or not processed at all within acomputer system is called a transaction. The following commands control the transactions.

COMMITROLLBACKSAVEPOINT

Capabilities of SQL SELECT statements:

The three basic capabilities of SELECT statements are:

Projection: To choose the columns in a table that is returned by a query.

Selection: To choose the rows in a table that is returned by a query. Various criteria can beused to restrict the rows that are retrieved.

Joining: To bring together data that is stored in different tables by specifying the linkbetween them.

Data Retrieval: Using SELECT Statement:

SELECT identifies the columns to be displayed.

FROM identifies the table containing those columns.

If all columns are of data in a table are to be listed, an asterisk (*) can be used.

ANKUR RAINA 09-IT-4505

Transaction Control:

A discrete unit of work that must be completely processed or not processed at all within acomputer system is called a transaction. The following commands control the transactions.

COMMITROLLBACKSAVEPOINT

Capabilities of SQL SELECT statements:

The three basic capabilities of SELECT statements are:

Projection: To choose the columns in a table that is returned by a query.

Selection: To choose the rows in a table that is returned by a query. Various criteria can beused to restrict the rows that are retrieved.

Joining: To bring together data that is stored in different tables by specifying the linkbetween them.

Data Retrieval: Using SELECT Statement:

SELECT identifies the columns to be displayed.

FROM identifies the table containing those columns.

If all columns are of data in a table are to be listed, an asterisk (*) can be used.

ANKUR RAINA 09-IT-4505

Transaction Control:

A discrete unit of work that must be completely processed or not processed at all within acomputer system is called a transaction. The following commands control the transactions.

COMMITROLLBACKSAVEPOINT

Capabilities of SQL SELECT statements:

The three basic capabilities of SELECT statements are:

Projection: To choose the columns in a table that is returned by a query.

Selection: To choose the rows in a table that is returned by a query. Various criteria can beused to restrict the rows that are retrieved.

Joining: To bring together data that is stored in different tables by specifying the linkbetween them.

Data Retrieval: Using SELECT Statement:

SELECT identifies the columns to be displayed.

FROM identifies the table containing those columns.

If all columns are of data in a table are to be listed, an asterisk (*) can be used.

Page 17: Oracle SQL Basics by Ankur Raina

ANKUR RAINA 09-IT-4505

Defining a NULL value:

A null is a value that is unavailable, unassigned, unknown, or inapplicable. A null is not thesame as a zero. Columns of any data type can contain nulls. However, some constraints(NOT NULL and PRIMARY KEY) prevent nulls from being used in the column.

. . .

Arithmetic expressions containing a null value evaluate to null.

. . .

ANKUR RAINA 09-IT-4505

Defining a NULL value:

A null is a value that is unavailable, unassigned, unknown, or inapplicable. A null is not thesame as a zero. Columns of any data type can contain nulls. However, some constraints(NOT NULL and PRIMARY KEY) prevent nulls from being used in the column.

. . .

Arithmetic expressions containing a null value evaluate to null.

. . .

ANKUR RAINA 09-IT-4505

Defining a NULL value:

A null is a value that is unavailable, unassigned, unknown, or inapplicable. A null is not thesame as a zero. Columns of any data type can contain nulls. However, some constraints(NOT NULL and PRIMARY KEY) prevent nulls from being used in the column.

. . .

Arithmetic expressions containing a null value evaluate to null.

. . .

Page 18: Oracle SQL Basics by Ankur Raina

ANKUR RAINA 09-IT-4505

Defining a Column Alias:

A column alias is used to rename a column heading. It is useful with calculations. It eitherfollows the column name or an optional AS keyword is used between the column name andalias. If the alias name is case sensitive, enclose it in double-quotation marks.

Restricting Rows: Using WHERE clause:

WHERE restricts the query to rows that meet a condition

Condition is composed of column names, expressions, constants, and a comparison operator.

Character Strings and Dates:

Character strings and date values are enclosed in single quotation marks. Character stringsare case sensitive, and date values are format sensitive. The default date format isDD-MON-RR.

Page 19: Oracle SQL Basics by Ankur Raina

ANKUR RAINA 09-IT-4505

Comparison Conditions:

Page 20: Oracle SQL Basics by Ankur Raina

ANKUR RAINA 09-IT-4505

Logical Conditions:

Page 21: Oracle SQL Basics by Ankur Raina

ANKUR RAINA 09-IT-4505

Rules of Precedence

Sorting Data:

Sort retrieved rows with the ORDER BY clause:

1. ASC: ascending order, default2. DESC: descending order

The ORDER BY clause comes last in the SELECT statement.

Page 22: Oracle SQL Basics by Ankur Raina

ANKUR RAINA 09-IT-4505

Using Substitution Variables:

Substitution variables are used to temporarily store values with a single-ampersand (&) anddouble-ampersand (&&) substitution. Substitution variables are used to supplement thefollowing:

1. WHERE clause2. ORDER BY clause3. Column expressions4. Table names5. Entire SELECT statements

Use the double ampersand (&&) if you want to reuse the variable value withoutprompting the user each time.

Page 23: Oracle SQL Basics by Ankur Raina

ANKUR RAINA 09-IT-4505

CHAPTER 5

Using Single Row Functions to Customize Output:

Features:

1. Used to manipulate data items2. Accept arguments and return one value3. Act on each row that is returned4. Return one result per row5. May modify the data type6. Can be nested7. Accept arguments that can be a column or an expression

General Functions:

FUNCTION SYNTAX DESCRIPTION

NVL NVL(expr1,expr2)Converts a null value to actualvalue.

NVL2 NVL2(expr1,expr2,expr3)I f expr1 is not null, NVL2returns expr2. If expr1 is null,NVL2 returns expr3.

NULLIFNULLIF(expr1,expr2)

Compares two expressionsand returns null if they areequal; returns the firstexpression if they are notequal.

COALESCE COALESCE(expr1,expr2,...,exprn)Returns the first non-nullexpression in the expressionlist.

Page 24: Oracle SQL Basics by Ankur Raina

ANKUR RAINA 09-IT-4505

USING NVL:

USING NVL2:

USING NULLIF:

USING COALESCE:

Page 25: Oracle SQL Basics by Ankur Raina

ANKUR RAINA 09-IT-4505

CASE Expression:

It facilitates conditional inquiries by doing the work of an IF-THEN_ELSE statement.

Page 26: Oracle SQL Basics by Ankur Raina

ANKUR RAINA 09-IT-4505

DECODE Function:

It facilitates conditional inquiries by doing the work of a CASE expression orIF-THEN-ELSE statement.

Page 27: Oracle SQL Basics by Ankur Raina

ANKUR RAINA 09-IT-4505

CHAPTER 6

Reporting Aggregated Data Using Group Functions:

Group Functions:

Group functions operate on sets of rows to give one result per row.

Types of Group functions are:

FUNCTION SYNTAX DESCRIPTION

AVG AVG([DISTINCT|ALL]n) Average value of n, ignoring nullvalues.

COUNT COUNT({*|[DISTINCT|ALL]expr}) No. of rows where exprevaluates to something otherthan null(count all selectedrows using * , includingduplicates and rows with nulls)

MAX MAX([DISTINCT|ALL]expr) Max value of expr ignoring nullvalues

MIN MIN([DISTINCT|ALL]expr) Min value of expr ignoring nullvalues

STDDEV STDDEV([DISTINCT|ALL]x) Standard deviation of n ignoringnull values

SUM SUM([DISTINCT|ALL]n) Sum values of n ignoring nullvalues

VARIANCE VARIANCE([DISTINCT|ALL]x) Variance of n ignoring nullvalues

COUNT (*) returns the number of rows in a table.

Page 28: Oracle SQL Basics by Ankur Raina

ANKUR RAINA 09-IT-4505

COUNT (expr) returns the number of rows with non-null values for expr.

COUNT (DISTINCT expr) returns the number of distinct non-null values of expr.

Creating Groups of Data: GROUP BY Clause Syntax

Page 29: Oracle SQL Basics by Ankur Raina

ANKUR RAINA 09-IT-4505

Using GROUP BY clause on multiple columns

Restricting Group Results with HAVING clause:

When you use the HAVING clause, the Oracle Server restricts groups as follows:

1. Rows are grouped2. The group function is applied3. Groups matching the HAVING clause are displayed.

Page 30: Oracle SQL Basics by Ankur Raina

ANKUR RAINA 09-IT-4505

CHAPTER 7

Displaying Data Using Multiple Tables

Creating Natural Joins:The NATURAL JOIN clause is based on all columns in the two tables that have thesame name. It selects rows from the two tables that have equal values in all matchedcolumns. If the columns having the same names have different data types, an error isreturned.

If several columns have the same names but the data types do not match, naturaljoin can be applied by using the USING clause to specify the columns that shouldbe used for an equijoin. Use the USING clause to match only one column whenmore than one column matches. Table name or alias is not used in the referencedcolumns.

Page 31: Oracle SQL Basics by Ankur Raina

ANKUR RAINA 09-IT-4505

Using Sub-Queries to Solve Queries:Sub-Query:A query within a query is known as a sub-query. A sub-query executes once beforethe main query. The result of sub-query is used by the main query.

Page 32: Oracle SQL Basics by Ankur Raina

ANKUR RAINA 09-IT-4505

CHAPTER 8

Manipulating Data:

A Data Manipulation language (DML) statement is executed when you: Add new rows to a table Modify existing rows in a table Remove existing rows from a table

A transaction consists of a collection of DML statements that form a logicalunit of work.

INSERT Statement:

Syntax:

Implicit Method: omit the column from the column list.

Explicit Method: Specify the NULL keyword in values clause.

UPDATE Statement:

UPDATE statement is used to modify the existing rows in a table. More than one row can beupdated at a time (if required).

Page 33: Oracle SQL Basics by Ankur Raina

ANKUR RAINA 09-IT-4505

DELETE Statement:

DELETE Statement is used to remove existing rows from a table.

If one omits the WHERE clause, all the rows from the table will be deleted.

TRUNCATE Statement:

The TRUNCATE Statement removes all rows from a table, leaving the table empty and thetable structure intact. It is a Data Definition Language (DDL) statement rather than a DMLstatement; cannot easily be undone.

Page 34: Oracle SQL Basics by Ankur Raina

ANKUR RAINA 09-IT-4505

Page 35: Oracle SQL Basics by Ankur Raina

ANKUR RAINA 09-IT-4505

CHAPTER 9

Database Objects:

CREATE Statement:

Page 36: Oracle SQL Basics by Ankur Raina

ANKUR RAINA 09-IT-4505

CREATE TABLE using a Sub-Query:

Dropping a Table:

All data and structure in the table are deleted. Any pending transactions are committed. All indexes are dropped. All constraints are dropped. You cannot roll back the DROP TABLE statement.

Page 37: Oracle SQL Basics by Ankur Raina

ANKUR RAINA 09-IT-4505

Creating Other Schema Objects:

Views:

To restrict data access. To make complex queries easy. To provide data independence. To present different views of the same data.

CREATE VIEW Syntax (simple view):

CREATE VIEW (complex view):

Page 38: Oracle SQL Basics by Ankur Raina

ANKUR RAINA 09-IT-4505

You cannot modify data in a view if it contains:

Group functions A GROUP BY clause The DISTINCT keyword The pseudo column ROWNUM keyword Columns defined by expressions

You cannot add data in a view if following conditions along with conditions above prevail:

NOT NULL columns in the base tables that are not selected by the view.

Sequences:

A sequence

Can automatically generate unique numbers Is a sharable object Can be used to create a primary key value Replaces application code Speeds up the efficiency of accessing sequence values when cached in memory

Indexes:

An index:

Is a schema object Can be used by the Oracle server to speed up the retrieval of rows by using a pointer Can reduce disk I/O by using a path access method to locate data quickly Is independent of the table that it indexes Is used and maintained automatically by the Oracle server

Page 39: Oracle SQL Basics by Ankur Raina

ANKUR RAINA 09-IT-4505

Indexes are created in the following two ways:

Automatically: A unique index is created automatically when you define a PRIMARYKEY or UNIQUE constraint in a table definition.

Manually: Users can create non-unique indexes on columns to speed up access tothe rows.

Syntax:

Synonyms:

Simplify access to objects by creating a synonym (another name for an object). Withsynonyms, we can:

Create an easier reference to a table that is owned by another user Shorten lengthy object names

Page 40: Oracle SQL Basics by Ankur Raina

ANKUR RAINA 09-IT-4505

REFERENCES

Web Resources

http://wiki.answers.com/Q/What_are_EF_Codd_rules

www.oracle.com

www.wikipedia.com

www.oraclecoach.com

Books:

Study material by Oracle UniversityPress

Modern Database Management by JeffreyA. Hoffer, Mary B. Prescott and FredR. McFadden