oracle database 10g: sql fundamentals i - stikom...

96
Oracle Database 10g: SQL Fundamentals I Electronic Presentation D17108GC11 Production 1.1 August 2004 D39769 ®

Upload: doandiep

Post on 01-Apr-2018

258 views

Category:

Documents


6 download

TRANSCRIPT

Oracle Database 10g: SQL Fundamentals I

Electronic Presentation

D17108GC11Production 1.1August 2004D39769

®

Copyright © 2004, Oracle. All rights reserved.

This documentation contains proprietary information of Oracle Corporation. It is provided under a license agreement containing restrictions on use and disclosure and is also protected by copyright law. Reverse engineering of the software is prohibited. If this documentation is delivered to a U.S. Government Agency of the Department of Defense, then it is delivered with Restricted Rights and the following legend is applicable:

Restricted Rights Legend

Use, duplication or disclosure by the Government is subject to restrictions for commercial computer software and shall be deemed to be Restricted Rights software under Federal law, as set forth in subparagraph (c)(1)(ii) of DFARS 252.227-7013, Rights in Technical Data and Computer Software (October 1988).

This material or any portion of it may not be copied in any form or by any means without the express prior written permission of Oracle Corporation. Any other copying is a violation of copyright law and may result in civil and/or criminal penalties.

If this documentation is delivered to a U.S. Government Agency not within the Department of Defense, then it is delivered with “Restricted Rights,” as defined in FAR 52.227-14, Rights in Data-General, including Alternate III (June 1987).

The information in this document is subject to change without notice. If you find any problems in the documentation, please report them in writing to Education Products, Oracle Corporation, 500 Oracle Parkway, Box SB-6, Redwood Shores, CA 94065. Oracle Corporation does not warrant that this document is error-free.

Oracle and all references to Oracle products are trademarks or registered trademarks of Oracle Corporation.

All other products or company names are used for identification purposes only, and may be trademarks of their respective owners.

Author

Nancy Greenberg

Technical Contributorsand Reviewers

Wayne Abbott Christian BauwensPerry BensonBrian BoxxZarko CesljasDairy ChanLaszlo CzinkoczkiMarjolein DekkersMatthew GregoryStefan GrenstadJoel GoodmanRosita HanomanSushma JagannathAngelika KruppChristopher LawlessMarcelo ManzanoIsabelle MarchandMalika MarghadiValli PataballaElspeth PayneLigia Jasmin RobayoBryan RobertsHelen RobertsonLata ShivaprasadJohn SoltaniPriya VennapusaKen Woolfe

Publisher

Jobi Varghese

Copyright © 2004, Oracle. All rights reserved.

Introduction

Copyright © 2004, Oracle. All rights reserved.

Lesson Objectives

After completing this lesson, you should be able to do the following: • List the features of Oracle10g• Discuss the theoretical and physical aspects of a

relational database• Describe the Oracle implementation of the RDBMS

and ORDBMS• Understand the goals of the course

Copyright © 2004, Oracle. All rights reserved.

Goals of the Course

After completing this course, you should be able to do the following: • Identify the major structural components of

Oracle Database 10g• Retrieve row and column data from tables with the

SELECT statement

• Create reports of sorted and restricted data• Employ SQL functions to generate and retrieve

customized data• Run data manipulation language (DML) statements

to update data in Oracle Database 10g• Obtain metadata by querying the dictionary views

Copyright © 2004, Oracle. All rights reserved.

Oracle10g

Single development

model

Commonskill sets

ReliabilityUnified

management

ScalabilityOne

vendor

Copyright © 2004, Oracle. All rights reserved.

Oracle10g

Copyright © 2004, Oracle. All rights reserved.

Oracle Database 10g

Multimedia

Object relational data

Messages

Documents

Copyright © 2004, Oracle. All rights reserved.

Oracle Application Server 10g

Application development framework

Application server

Business intelligence

Portals

Integration

Transactional applications

Copyright © 2004, Oracle. All rights reserved.

Oracle Enterprise Manager 10gGrid Control

• Software provisioning• Application service level monitoring

Copyright © 2004, Oracle. All rights reserved.

Relational and Object RelationalDatabase Management Systems

• Relational model and object relational model• User-defined data types and objects• Fully compatible with relational database• Support of multimedia and large objects• High-quality database server features

Copyright © 2004, Oracle. All rights reserved.

Oracle Internet PlatformS

yste

m m

anag

emen

t

Network services

Databases Applicationservers

Internet applications

Anybrowser

AnyFTP client

Anymail client

SQL

PL/SQL

Java

Clients

Presentation andbusiness logic

Business logicand data

Develo

pm

ent to

ols

Copyright © 2004, Oracle. All rights reserved.

System Development Life Cycle

Strategy and

analysis

Design

Buildand

document

Transition

Production

Copyright © 2004, Oracle. All rights reserved.

Data Storage on Different Media

Electronic spreadsheet Filing cabinet

Database

Copyright © 2004, Oracle. All rights reserved.

Relational Database Concept

• Dr. E. F. Codd proposed the relational model for database systems in 1970.

• It is the basis for the relational database management system (RDBMS).

• The relational model consists of the following:– Collection of objects or relations– Set of operators to act on the relations– Data integrity for accuracy and consistency

Copyright © 2004, Oracle. All rights reserved.

Definition of a Relational Database

A relational database is a collection of relations or two-dimensional tables.

Oracleserver

Table name: EMPLOYEES Table name: DEPARTMENTS

… …

Copyright © 2004, Oracle. All rights reserved.

Data Models

Model ofsystem

in client’smind

Entity model ofclient’s model

Tables on disk

Oracleserver

Table modelof entity model

Copyright © 2004, Oracle. All rights reserved.

• Create an entity relationship diagram from business specifications or narratives:

• Scenario– “. . . Assign one or more employees to a

department . . .”– “. . . Some departments do not yet have assigned

employees . . .”

Entity Relationship Model

EMPLOYEE#* number* nameo job title

DEPARTMENT#* number* nameo location

assigned to

composed of

Copyright © 2004, Oracle. All rights reserved.

Entity Relationship Modeling Conventions

Entity• Singular, unique name• Uppercase• Soft box• Synonym in parentheses

Unique identifier (UID)Primary marked with “#”Secondary marked with “(#)”

EMPLOYEE#* number* nameo job title

DEPARTMENT#* number* nameo location

Attribute• Singular name• Lowercase• Mandatory marked with *• Optional marked with “o”

assigned to

composed of

Copyright © 2004, Oracle. All rights reserved.

Relating Multiple Tables

• Each row of data in a table is uniquely identified by a primary key (PK).

• You can logically relate data from multiple tables using foreign keys (FK).

Table name: EMPLOYEESTable name: DEPARTMENTS

Primary key Primary keyForeign key

Copyright © 2004, Oracle. All rights reserved.

Relational Database Terminology

1

23 4

6

5

Copyright © 2004, Oracle. All rights reserved.

Relational Database Properties

A relational database:• Can be accessed and modified by executing

structured query language (SQL) statements• Contains a collection of tables with no physical

pointers• Uses a set of operators

Copyright © 2004, Oracle. All rights reserved.

Communicating with an RDBMSUsing SQL

SQL statement is entered. Statement is sent to Oracle server.

Oracleserver

SELECT department_name FROM departments;

Copyright © 2004, Oracle. All rights reserved.

Oracle’s Relational Database Management System

User tables Datadictionary

Oracleserver

Copyright © 2004, Oracle. All rights reserved.

SQL Statements

SELECTINSERTUPDATEDELETEMERGE

CREATEALTERDROPRENAMETRUNCATECOMMENT

GRANTREVOKE

COMMITROLLBACKSAVEPOINT

Data manipulation language (DML)

Data definition language (DDL)

Transaction control

Data control language (DCL)

Copyright © 2004, Oracle. All rights reserved.

Tables Used in the Course

EMPLOYEES

DEPARTMENTS JOB_GRADES

Copyright © 2004, Oracle. All rights reserved.

Summary

• Oracle Database 10g is the database for grid computing.

• The database is based on the object relational database management system.

• Relational databases are composed of relations, managed by relational operations, and governed by data integrity constraints.

• With the Oracle server, you can store and manage information by using the SQL language and PL/SQL engine.

Copyright © 2004, Oracle. All rights reserved.

Retrieving Data Using the SQL SELECT Statement

Copyright © 2004, Oracle. All rights reserved.

Objectives

After completing this lesson, you should be able to do the following:• List the capabilities of SQL SELECT statements• Execute a basic SELECT statement

• Differentiate between SQL statements and iSQL*Plus commands

Copyright © 2004, Oracle. All rights reserved.

Capabilities of SQL SELECT Statements

SelectionProjection

Table 1 Table 2

Table 1Table 1

Join

Copyright © 2004, Oracle. All rights reserved.

Basic SELECT Statement

• SELECT identifies the columns to be displayed• FROM identifies the table containing those columns

SELECT *|{[DISTINCT] column|expression [alias],...}FROM table;

Copyright © 2004, Oracle. All rights reserved.

Selecting All Columns

SELECT *FROM departments;

Copyright © 2004, Oracle. All rights reserved.

Selecting Specific Columns

SELECT department_id, location_idFROM departments;

Copyright © 2004, Oracle. All rights reserved.

Writing SQL Statements

• SQL statements are not case-sensitive. • SQL statements can be on one or more lines.• Keywords cannot be abbreviated or split

across lines.• Clauses are usually placed on separate lines.• Indents are used to enhance readability.• In iSQL*Plus, SQL statements can optionally be

terminated by a semicolon (;). Semicolons are required if you execute multiple SQL statements.

• In SQL*plus, you are required to end each SQL statement with a semicolon (;).

Copyright © 2004, Oracle. All rights reserved.

Column Heading Defaults

• iSQL*Plus:– Default heading alignment: Center– Default heading display: Uppercase

• SQL*Plus:– Character and Date column headings are left-

aligned– Number column headings are right-aligned– Default heading display: Uppercase

Copyright © 2004, Oracle. All rights reserved.

Arithmetic Expressions

Create expressions with number and date data by using arithmetic operators.

Multiply*

Divide/

Subtract-

Add+

DescriptionOperator

Copyright © 2004, Oracle. All rights reserved.

SELECT last_name, salary, salary + 300FROM employees;

Using Arithmetic Operators

Copyright © 2004, Oracle. All rights reserved.

SELECT last_name, salary, 12*salary+100FROM employees;

Operator Precedence

SELECT last_name, salary, 12*(salary+100)FROM employees;

1

2

Copyright © 2004, Oracle. All rights reserved.

Defining a Null Value

• A null is a value that is unavailable, unassigned, unknown, or inapplicable.

• A null is not the same as a zero or a blank space.

SELECT last_name, job_id, salary, commission_pctFROM employees;

Copyright © 2004, Oracle. All rights reserved.

SELECT last_name, 12*salary*commission_pctFROM employees;

Null Values in Arithmetic Expressions

Arithmetic expressions containing a null value evaluate to null.

Copyright © 2004, Oracle. All rights reserved.

Defining a Column Alias

A column alias:• Renames a column heading• Is useful with calculations• Immediately follows the column name (There can

also be the optional AS keyword between the column name and alias.)

• Requires double quotation marks if it contains spaces or special characters or if it is case-sensitive

Copyright © 2004, Oracle. All rights reserved.

Using Column Aliases

SELECT last_name "Name" , salary*12 "Annual Salary"FROM employees;

SELECT last_name AS name, commission_pct commFROM employees;

Copyright © 2004, Oracle. All rights reserved.

Concatenation Operator

A concatenation operator:• Links columns or character strings to other

columns• Is represented by two vertical bars (||)• Creates a resultant column that is a character

expression

SELECT last_name||job_id AS "Employees"FROM employees;

Copyright © 2004, Oracle. All rights reserved.

Literal Character Strings

• A literal is a character, a number, or a date that is included in the SELECT statement.

• Date and character literal values must be enclosed by single quotation marks.

• Each character string is output once for eachrow returned.

Copyright © 2004, Oracle. All rights reserved.

Using Literal Character Strings

SELECT last_name ||' is a '||job_id AS "Employee Details"

FROM employees;

Copyright © 2004, Oracle. All rights reserved.

Alternative Quote (q) Operator

• Specify your own quotation mark delimiter• Choose any delimiter• Increase readability and usability

SELECT department_name || q'[, it's assigned Manager Id: ]' || manager_id AS "Department and Manager"

FROM departments;

Copyright © 2004, Oracle. All rights reserved.

Duplicate Rows

The default display of queries is all rows, including duplicate rows.

SELECT department_idFROM employees;

SELECT DISTINCT department_idFROM employees;

1

2

Copyright © 2004, Oracle. All rights reserved.

SQL and iSQL*Plus Interaction

SQL statements

Query resultsiSQL*Pluscommands

Client

Formatted report

Internetbrowser

Oracleserver

Copyright © 2004, Oracle. All rights reserved.

SQL Statements Versus iSQL*Plus Commands

SQLstatements

SQL• A language• ANSI standard• Keyword cannot be

abbreviated• Statements manipulate

data and table definitions in the database

iSQL*Plus• An environment• Oracle-proprietary• Keywords can be

abbreviated• Commands do not allow

manipulation of values in the database

• Runs on a browser• Centrally loaded; does not

have to be implemented on each machine

iSQL*Pluscommands

Copyright © 2004, Oracle. All rights reserved.

Overview of iSQL*Plus

After you log in to iSQL*Plus, you can:• Describe table structures• Enter, execute, and edit SQL statements• Save or append SQL statements to files • Execute or edit statements that are stored in

saved script files

Copyright © 2004, Oracle. All rights reserved.

Logging In to iSQL*Plus

From your browser environment:

Copyright © 2004, Oracle. All rights reserved.

iSQL*Plus Environment

6

3 4 5

1

2

8 9

7

Copyright © 2004, Oracle. All rights reserved.

Displaying Table Structure

Use the iSQL*Plus DESCRIBE command to display the structure of a table:

DESC[RIBE] tablename

Copyright © 2004, Oracle. All rights reserved.

Displaying Table Structure

DESCRIBE employees

Copyright © 2004, Oracle. All rights reserved.

Interacting with Script Files

SELECT last_name, hire_date, salaryFROM employees; 1

2

Copyright © 2004, Oracle. All rights reserved.

Interacting with Script Files

Copyright © 2004, Oracle. All rights reserved.

Interacting with Script Files

1

Copyright © 2004, Oracle. All rights reserved.

Interacting with Script Files

2

3

D:\TEMP\emp_data.sql

Copyright © 2004, Oracle. All rights reserved.

iSQL*Plus History Page

1

2

3

Copyright © 2004, Oracle. All rights reserved.

iSQL*Plus History Page

3

4

Copyright © 2004, Oracle. All rights reserved.

Setting iSQL*Plus Preferences

2

3

1

Copyright © 2004, Oracle. All rights reserved.

Setting the Output Location Preference

1

2

Copyright © 2004, Oracle. All rights reserved.

Summary

In this lesson, you should have learned how to: • Write a SELECT statement that:

– Returns all rows and columns from a table– Returns specified columns from a table– Uses column aliases to display more descriptive

column headings

• Use the iSQL*Plus environment to write, save, and execute SQL statements and iSQL*Plus commands

SELECT *|{[DISTINCT] column|expression [alias],...}FROM table;

Copyright © 2004, Oracle. All rights reserved.

Practice 1: Overview

This practice covers the following topics:• Selecting all data from different tables• Describing the structure of tables• Performing arithmetic calculations and specifying

column names• Using iSQL*Plus

Copyright © 2004, Oracle. All rights reserved.

Restricting and Sorting Data

Copyright © 2004, Oracle. All rights reserved.

Objectives

After completing this lesson, you should be able to do the following:• Limit the rows that are retrieved by a query• Sort the rows that are retrieved by a query• Use ampersand substitution in iSQL*Plus to

restrict and sort output at run time

Copyright © 2004, Oracle. All rights reserved.

Limiting Rows Using a Selection

“retrieve allemployees in department 90”

EMPLOYEES

Copyright © 2004, Oracle. All rights reserved.

Limiting the Rows That Are Selected

• Restrict the rows that are returned by using the WHERE clause:

• The WHERE clause follows the FROM clause.

SELECT *|{[DISTINCT] column|expression [alias],...}FROM table[WHERE condition(s)];

Copyright © 2004, Oracle. All rights reserved.

SELECT employee_id, last_name, job_id, department_idFROM employeesWHERE department_id = 90 ;

Using the WHERE Clause

Copyright © 2004, Oracle. All rights reserved.

SELECT last_name, job_id, department_idFROM employeesWHERE last_name = 'Whalen' ;

Character Strings and Dates

• Character strings and date values are enclosed by single quotation marks.

• Character values are case-sensitive, and date values are format-sensitive.

• The default date format is DD-MON-RR.

Copyright © 2004, Oracle. All rights reserved.

Comparison Conditions

Not equal to<>

Between two values (inclusive)

BETWEEN...AND...

Match any of a list of values IN(set)

Match a character pattern LIKE

Is a null value IS NULL

Less than<

Less than or equal to<=

Greater than or equal to>=

Greater than>

Equal to=

MeaningOperator

Copyright © 2004, Oracle. All rights reserved.

SELECT last_name, salaryFROM employeesWHERE salary <= 3000 ;

Using Comparison Conditions

Copyright © 2004, Oracle. All rights reserved.

SELECT last_name, salaryFROM employeesWHERE salary BETWEEN 2500 AND 3500 ;

Using the BETWEEN Condition

Use the BETWEEN condition to display rows based on a range of values:

Lower limit Upper limit

Copyright © 2004, Oracle. All rights reserved.

SELECT employee_id, last_name, salary, manager_idFROM employeesWHERE manager_id IN (100, 101, 201) ;

Using the IN Condition

Use the IN membership condition to test for values in a list:

Copyright © 2004, Oracle. All rights reserved.

SELECT first_nameFROM employeesWHERE first_name LIKE 'S%' ;

Using the LIKE Condition

• Use the LIKE condition to perform wildcard searches of valid search string values.

• Search conditions can contain either literal characters or numbers:– % denotes zero or many characters.– _ denotes one character.

Copyright © 2004, Oracle. All rights reserved.

• You can combine pattern-matching characters:

• You can use the ESCAPE identifier to search for the actual % and _ symbols.

SELECT last_nameFROM employeesWHERE last_name LIKE '_o%' ;

Using the LIKE Condition

Copyright © 2004, Oracle. All rights reserved.

SELECT last_name, manager_idFROM employeesWHERE manager_id IS NULL ;

Using the NULL Conditions

Test for nulls with the IS NULL operator.

Copyright © 2004, Oracle. All rights reserved.

Logical Conditions

Returns TRUE if the following condition is false

NOT

Returns TRUE if either component condition is true

OR

Returns TRUE if both component conditions are true

AND

MeaningOperator

Copyright © 2004, Oracle. All rights reserved.

SELECT employee_id, last_name, job_id, salaryFROM employeesWHERE salary >=10000AND job_id LIKE '%MAN%' ;

Using the AND Operator

AND requires both conditions to be true:

Copyright © 2004, Oracle. All rights reserved.

SELECT employee_id, last_name, job_id, salaryFROM employeesWHERE salary >= 10000OR job_id LIKE '%MAN%' ;

Using the OR Operator

OR requires either condition to be true:

Copyright © 2004, Oracle. All rights reserved.

SELECT last_name, job_idFROM employeesWHERE job_id

NOT IN ('IT_PROG', 'ST_CLERK', 'SA_REP') ;

Using the NOT Operator

Copyright © 2004, Oracle. All rights reserved.

Rules of Precedence

You can use parentheses to override rules of precedence.

Not equal to6

NOT logical condition7

AND logical condition8

OR logical condition9

IS [NOT] NULL, LIKE, [NOT] IN4

[NOT] BETWEEN5

Comparison conditions3

Concatenation operator2

Arithmetic operators1

MeaningOperator

Copyright © 2004, Oracle. All rights reserved.

SELECT last_name, job_id, salaryFROM employeesWHERE job_id = 'SA_REP'OR job_id = 'AD_PRES'AND salary > 15000;

Rules of Precedence

SELECT last_name, job_id, salaryFROM employeesWHERE (job_id = 'SA_REP'OR job_id = 'AD_PRES')AND salary > 15000;

1

2

Copyright © 2004, Oracle. All rights reserved.

Using the ORDER BY Clause

• Sort retrieved rows with the ORDER BY clause:– ASC: ascending order, default– DESC: descending order

• The ORDER BY clause comes last in the SELECTstatement:

SELECT last_name, job_id, department_id, hire_dateFROM employeesORDER BY hire_date ;

Copyright © 2004, Oracle. All rights reserved.

Sorting

• Sorting in descending order:

• Sorting by column alias:

• Sorting by multiple columns:

SELECT last_name, job_id, department_id, hire_dateFROM employeesORDER BY hire_date DESC ; 1

SELECT employee_id, last_name, salary*12 annsalFROM employeesORDER BY annsal ;

2

SELECT last_name, department_id, salaryFROM employeesORDER BY department_id, salary DESC;

3

Copyright © 2004, Oracle. All rights reserved.

Substitution Variables

... salary = ? …… department_id = ? … ... last_name = ? ...

I want to query different values.

Copyright © 2004, Oracle. All rights reserved.

Substitution Variables

• Use iSQL*Plus substitution variables to:– Temporarily store values with single-ampersand (&)

and double-ampersand (&&) substitution

• Use substitution variables to supplement the following:– WHERE conditions– ORDER BY clauses

– Column expressions– Table names– Entire SELECT statements

Copyright © 2004, Oracle. All rights reserved.

SELECT employee_id, last_name, salary, department_idFROM employeesWHERE employee_id = &employee_num ;

Using the & Substitution Variable

Use a variable prefixed with an ampersand (&) to prompt the user for a value:

Copyright © 2004, Oracle. All rights reserved.

Using the & Substitution Variable

101

1

2

Copyright © 2004, Oracle. All rights reserved.

SELECT last_name, department_id, salary*12FROM employeesWHERE job_id = '&job_title' ;

Character and Date Values with Substitution Variables

Use single quotation marks for date and character values:

Copyright © 2004, Oracle. All rights reserved.

Specifying Column Names, Expressions, and Text

SELECT employee_id, last_name, job_id,&column_nameFROM employeesWHERE &conditionORDER BY &order_column ;

salary

salary > 15000

last_name

Copyright © 2004, Oracle. All rights reserved.

SELECT employee_id, last_name, job_id, &&column_nameFROM employeesORDER BY &column_name ;

Using the && Substitution Variable

Use the double ampersand (&&) if you want to reuse the variable value without prompting the user each time:

Copyright © 2004, Oracle. All rights reserved.

Using the iSQL*Plus DEFINE Command

• Use the iSQL*Plus DEFINE command to create and assign a value to a variable.

• Use the iSQL*Plus UNDEFINE command to remove a variable.

DEFINE employee_num = 200

SELECT employee_id, last_name, salary, department_idFROM employeesWHERE employee_id = &employee_num ;

UNDEFINE employee_num

Copyright © 2004, Oracle. All rights reserved.

old 3: WHERE employee_id = &employee_numnew 3: WHERE employee_id = 200

SET VERIFY ONSELECT employee_id, last_name, salary, department_idFROM employeesWHERE employee_id = &employee_num;

Using the VERIFY Command

Use the VERIFY command to toggle the display of the substitution variable, both before and after iSQL*Plusreplaces substitution variables with values:

Copyright © 2004, Oracle. All rights reserved.

SELECT *|{[DISTINCT] column|expression [alias],...}FROM table[WHERE condition(s)][ORDER BY {column, expr, alias} [ASC|DESC]] ;

Summary

In this lesson, you should have learned how to: • Use the WHERE clause to restrict rows of output:

– Use the comparison conditions– Use the BETWEEN, IN, LIKE, and NULL conditions– Apply the logical AND, OR, and NOT operators

• Use the ORDER BY clause to sort rows of output:

• Use ampersand substitution in iSQL*Plus to restrict and sort output at run time

Copyright © 2004, Oracle. All rights reserved.

Practice 2: Overview

This practice covers the following topics:• Selecting data and changing the order of

the rows that are displayed• Restricting rows by using the WHERE clause• Sorting rows by using the ORDER BY clause

• Using substitution variables to add flexibility to your SQL SELECT statements