Top Banner
Accelerated Computer Training for Working Professionals Factory 2010 Case Orange Coast Database Associates Course (800)355-9855 or http://ocdatabases.itgo.com Orange Coast Database Associates Specializing in Microsoft Office, Access, SQL, and related technologies Classes custom designed for Working Professionals http://www.dhdursoassociates.com San Juan Capistrano, CA (800)355-9855 SQL212 Introduction to SQL Using Oracle
100

SQL212 Oracle SQL Manual

May 21, 2015

Download

Technology

Dan D'Urso

SQL212 Accelerated Introduction to SQL Using oracle. Covers create, alter, drop, insert, update, delete. Includes joins, inner and outer, subqueries, calculations and grouping.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: SQL212 Oracle SQL Manual

Accelerated Computer Training for Working Professionals Factory 2010 Case

Orange Coast Database Associates Course (800)355-9855 or http://ocdatabases.itgo.com

Orange Coast

Database Associates

Specializing in Microsoft Office,

Access, SQL, and related technologies Classes custom designed for Working Professionals

http://www.dhdursoassociates.com

San Juan Capistrano, CA

(800)355-9855

SQL212 Introduction to SQL Using

Oracle

Page 2: SQL212 Oracle SQL Manual

1

Bookstore SQL212 1

An accelerated introduction to SQL for non-programmers

P.O. Box 6142

Laguna Niguel, CA 92607

949-489-1472

http://www.d2associates.com

Welcome to SQL212 –Accelerated Introduction to

SQL with Oracle

Bookstore SQL212 2

Accelerated Introduction to Oracle SQL

• Introduction (s)

• Facilities

• Course Packet (content may vary by class)

– Student questionnaire

– Collaterals (Price List, Flyers, etc.)

– PowerPoint handouts for all sessions (instructor slides may have some changes)

– Evaluation form

– Training certificate

• Website (Terms, Practice Tests, etc.)

Page 3: SQL212 Oracle SQL Manual

2

Bookstore SQL212 3

SQL Curriculum

SQL200*

SQL200S*

SQL212

OracleSQL202

SQL Server

SQL201W

MySQL

* = included in

above courses

Bookstore SQL212 4

Accelerated Introduction to SQL

• Assumes no prior knowledge of SQL or Oracle products

• Quick pace for experienced computer users

• End-user, not programmer, oriented

• SQL212 is an extension to SQL/200

– Uses Oracle in class but is otherwise identical.

• SQL200s is first two modules of SQL200 - a “read only” version.

Page 4: SQL212 Oracle SQL Manual

3

Bookstore SQL212 5

Accelerated Introduction to Oracle SQL

• Select– Basic– Filters– Joins– Subqueries– Unions– Grouping and

Summarization

SQL Covered (Day 1) 9:00AM – 4:00PM:

Bookstore SQL212 6

Accelerated Introduction to Oracle SQL

• Data Updates– Insert– Update– Delete

• Data structures– Create– Drop– Alter– Views– Indexes

SQL Covered (Day 2, 9:00AM – 12:00PM):

Page 5: SQL212 Oracle SQL Manual

4

Bookstore SQL212 7

Accelerated Introduction to SQL

• Focus is on SQL language

• We will use Oracle SQL Developer in this

class

• Enterprise manager outside scope of this

class

Bookstore SQL212 8

Accelerated Introduction to SQL

• 3 Sessions• Lecture• Demo• Student “hands-on” • Many exercises are cumulative –

later examples build on queries created earlier

Course Format:

Page 6: SQL212 Oracle SQL Manual

5

Bookstore SQL212 9

Accelerated Introduction to SQL

• Session 1 – Basic SQL• Session 2 – Multi-table

Retrieval• Session 3 – Modifying Data

Course Schedule (“1/2” day sessions):

Notes

Bookstore SQL212 10

Page 7: SQL212 Oracle SQL Manual

6

Notes

Bookstore SQL212 11

Notes

Bookstore SQL212 12

Page 8: SQL212 Oracle SQL Manual

11/25/2011

1

Bookstore SQL200 Module 1 1

SQL200

Based on SQL Clearly Explained by Jan Harrington

SQL Programming

Module 1 – Relational Database Background,

Basic Single Table Retrieval Operations

Bookstore SQL200 Module 1 2

SQL Programming

• Course focus is SQL language

• Widely used for:

– Database administration

– Enterprise application development

– Data driven web sites

• A foundation skill for eBusiness and almost all major business applications that use relational databases

Page 9: SQL212 Oracle SQL Manual

11/25/2011

2

Bookstore SQL200 Module 1 3

SQL Programming

• A basic knowledge of query systems,

perhaps via MS Access, or some

programming knowledge, is desirable

• We will use “SQL View” almost

exclusively

Bookstore SQL200 Module 1 4

Relational Database Evolution

• Based on Codd‟s paper

• Early commercial efforts focused on Unix

• First mainframe implementation by IBM -

precursor to today‟s DB2

• First PC implementation in early 80‟s by

Oracle

Page 10: SQL212 Oracle SQL Manual

11/25/2011

3

Bookstore SQL200 Module 1 5

Relational Database Basics

• Storage

• Databases

• Tables

• Rows

• Columns

• Indexes

• Views

• Cursors

• Application interfaces

Bookstore SQL200 Module 1 6

Relational Database Table

Page 11: SQL212 Oracle SQL Manual

11/25/2011

4

Bookstore SQL200 Module 1 7

Constraints

• Database

– Domain

– Uniqueness

– Relationship

Cardinality

• 1 to 1

• 1 to N

• Other Business Rule

– Triggers

– Stored Procedures

Bookstore SQL200 Module 1 8

Relational Database with constraints

Page 12: SQL212 Oracle SQL Manual

11/25/2011

5

Bookstore SQL200 Module 1 9

Database Management Systems

Positioning Chart

VLDB

Enterprise

Workgroup

Single user

Spreadsheet

# Users

Cost

Bookstore SQL200 Module 1 10

System Architecture

AccessMDB

File Server Architecture

Access

Page 13: SQL212 Oracle SQL Manual

11/25/2011

6

Bookstore SQL200 Module 1 11

System Architecture

OracleDB

Visual Basic App

Client/Server Architecture

Access

SQL

Bookstore SQL200 Module 1 12

System Architecture

OracleDB

Browser

Web Architecture

WebServer

SQL

Page 14: SQL212 Oracle SQL Manual

11/25/2011

7

Bookstore SQL200 Module 1 13

Approaching SQL

• Relatively simple

• Two main environments

– Interactive (This course)

– Embedded

• Static (Compiled)

• Dynamic

Bookstore SQL200 Module 1 14

SQL Standardization

ANSI standardization

– First standard in 1986

– SQL 89

– SQL 92

– SQL 99

• Various vendor extensions

– Microsoft/Sybase: T-SQL

– Oracle: PL/SQL

Page 15: SQL212 Oracle SQL Manual

11/25/2011

8

Bookstore SQL200 Module 1 15

SQL Conformance

• Entry

• Intermediate

• Advanced

• Most are at least entry level

Bookstore SQL200 Module 1 16

SQL Statements

• Data Manipulation Language (DML)

• Data Control Language (DCL)

• Data Definition Language (DDL)

• Note: SQL 99 changes these to seven types

Page 16: SQL212 Oracle SQL Manual

11/25/2011

9

Bookstore SQL200 Module 1 17

SQL DDL

• Data definition language (DDL)

– Create, alter, drop, etc.

– Frequently implemented via various CASE

tools: Visio, Embarcadero, ERWin, etc.

– But very useful for database administration

Bookstore SQL200 Module 1 18

SQL DCL

• Data Control Language (DDL)

– Grant

– Revoke

– Constraints

Page 17: SQL212 Oracle SQL Manual

11/25/2011

10

Bookstore SQL200 Module 1 19

SQL DML

• Data Manipulation Language (DML)

– Select

– Insert

– Update

– Delete

Bookstore SQL200 Module 1 20

SQL Statement Processing

Parse

Validate

Optimize

Access Plan

Execute

Page 18: SQL212 Oracle SQL Manual

11/25/2011

11

Bookstore SQL200 Module 1 21

Bookstore Sample Database

• Before we continue (note: instructor may have already done this)…

• Load the sample database if you haven‟t already– Use Access import table feature, or

– Run SQL script, or

– Use Access upsizing wizard

Bookstore SQL200 Module 1 22

Conventions

• In Access character strings are normally

surrounded by double quotes

– “Jones”

• In an enterprise database such as Oracle or SQL

Sever, then single quotes

– „Jones‟

• Be sensitive to the environment of your class in

copying scripts from the PowerPoint slides!

Page 19: SQL212 Oracle SQL Manual

11/25/2011

12

Bookstore SQL200 Module 1 23

SELECT

Basic Syntax (Projection):

Select <column-list> or <*>

From <table-list>

Bookstore SQL200 Module 1 24

SELECT

Basic Example (Projection):

select

customer_last_name,

customer_street

from customers

Page 20: SQL212 Oracle SQL Manual

11/25/2011

13

Bookstore SQL200 Module 1 25

MS Access SQL Query

Bookstore SQL200 Module 1 26

Page 21: SQL212 Oracle SQL Manual

11/25/2011

14

Bookstore SQL200 Module 1 27

SQL Server Query

Bookstore SQL200 Module 1 28

SELECT with Where Clause

Example (Restriction plus Projection):

Select <column-list>

From <table-list>

Where <selection-criteria>;

Page 22: SQL212 Oracle SQL Manual

11/25/2011

15

Bookstore SQL200 Module 1 29

SELECT with Where

Basic Example (Restriction plus

Projection):

select customer_last_name,

customer_street

from customers

where customer_last_name =

‘Jones’

Bookstore SQL200 Module 1 30

Select with Where

Page 23: SQL212 Oracle SQL Manual

11/25/2011

16

Bookstore SQL200 Module 1 31

On Your Own

• Find books written by Mark Twain

• Show title, publisher, year

Bookstore SQL200 Module 1 32

Complex Predicates

Follow normal boolean logic

Select customer_last_name,

customer_street

From customers

Where (customer_last_name =

‘Jones’ or customer_last_name =

‘Smith’)and customer_state=‘NY’

Page 24: SQL212 Oracle SQL Manual

11/25/2011

17

Bookstore SQL200 Module 1 33

Select with Complex Where

Bookstore SQL200 Module 1 34

Complex Where Result

Page 25: SQL212 Oracle SQL Manual

11/25/2011

18

Bookstore SQL200 Module 1 35

Special Operators

• Can be used in where clause

• LIKE

• IN

• BETWEEN

• IS NULL

Bookstore SQL200 Module 1 36

Like (“Wild Card Matches”)

• ANSI

• Where

customer_last_name

like “Jo%”

• Like “Jo_”

• Access

• Where

customer_last_name

like “Jo*”

• Like “Jo?”

Page 26: SQL212 Oracle SQL Manual

11/25/2011

19

Bookstore SQL200 Module 1 37

IN

Select *

From customers

Where customer_last_name in

(‘Rizzo’, ‘Jones’, ‘Garcia’)

The list in parentheses can be replaced by a

subquery. We will study this later.

Bookstore SQL200 Module 1 38

SQL Where Clause with IN

Page 27: SQL212 Oracle SQL Manual

11/25/2011

20

Bookstore SQL200 Module 1 39

IS NULL

Select *

From customers

Where customer_street IS NULL

SQL uses three valued logic. Must use IS NULL

to test for unknowns. A null is NOT the same as

blank or empty.

Bookstore SQL200 Module 1 40

On Your Own

• Find all customers with an address not equal to 4592 Maple Lane

• Was Peter Johnson selected?

• Why or why not?

Page 28: SQL212 Oracle SQL Manual

11/25/2011

21

Bookstore SQL200 Module 1 41

BETWEEN

Select *

From orders

Where order_date BETWEEN

‘1-jan-99’ and ‘31-dec-99’

Note: date formats vary from product to product.

Bookstore SQL200 Module 1 42

Where with Between

Page 29: SQL212 Oracle SQL Manual

11/25/2011

22

Bookstore SQL200 Module 1 43

Removing Duplicates

Select DISTINCT

customer_city

From customers

List once each city in which there are

customers

Removes duplicate rows from result set

Bookstore SQL200 Module 1 44

Removing Duplicates

Page 30: SQL212 Oracle SQL Manual

11/25/2011

23

Bookstore SQL200 Module 1 45

Sorting – ORDER BY

DESC will sort in descending order

Basic syntax:

Select <column list>

From <table list>

Where <selection criteria>

Order by <column list> [DESC]

Bookstore SQL200 Module 1 46

Sorting – ORDER BY

Select *

From customers

Order by customer_state,

customer_city

Example:

List all records sorted by state, city

Page 31: SQL212 Oracle SQL Manual

11/25/2011

24

Bookstore SQL200 Module 1 47

Sorting Results with Order By

Bookstore SQL200 Module 1 48

SQL Exercises

• List all books whose publisher name begins with “H” or “T”; sort by title [hint: use LIKE]

• List all customers whose last name ends with “S”; sort by state, city, last name

• Find the order numbers of orders with order dates in 1999; sort by order #. [Hint: use BETWEEN]

• Find the order numbers and order dates of all orders with a “2” in column 2 of the credit card #; sort by order date descending

[end module]

Page 32: SQL212 Oracle SQL Manual

1

Bookstore2 SQL212 Module 2 1

SQL212

SQL Programming

Workshop 2 – Joins, Subqueries, Unions,

Calculations and Grouping

Bookstore2 SQL212 Module 2 2

SQL212 Contact Information

P.O. Box 6142

Laguna Niguel, CA 92607

949-489-1472

http://www.d2associates.com

[email protected]

Copyright 2001-2009. All rights reserved.

Page 33: SQL212 Oracle SQL Manual

2

Bookstore2 SQL212 Module 2 3

SQL212

SQL Programming

Part 1 – Joins, Subqueries

Bookstore2 SQL212 Module 2 4

Relational Database with constraints (from text)

Page 34: SQL212 Oracle SQL Manual

3

Bookstore2 SQL212 Module 2 5

Warning!

• Some slides may show queries using a

table called…

Order_filled

• The current database uses a better name…

Orders

Construct your queries with this

latter table name

Bookstore2 SQL212 Module 2 6

Joins

• Inner

• Outer

– Left

– Right

– Full

• Cross

• Self

• Theta

• We will cover the most important; others as time and interest permit

Page 35: SQL212 Oracle SQL Manual

4

Bookstore2 SQL212 Module 2 7

Inner Join

• Pairs each row from first table with

corresponding row from second table over

the “join column”

• The result set only contains rows where

there is a match over the join column in

both tables

• Equi-join is the common inner join

Bookstore2 SQL212 Module 2 8

Inner Join

Older Syntax:

Select <column-list>

From <tablelist>

Where <predicate>

Still very commonly used

Page 36: SQL212 Oracle SQL Manual

5

Inner Join Examples

• Show customers and their orders

• Join the customers table to the orders table

where the customer number in each table

matches

Bookstore2 SQL212 Module 2 9

Bookstore2 SQL212 Module 2 10

Inner Join

Example using older syntax:

SELECT customer_first_name,

customer_street, order_numb,

order_date

from customers, orders

Where customers.customer_numb =

orders.customer_numb

Page 37: SQL212 Oracle SQL Manual

6

Bookstore2 SQL212 Module 2 11

Inner Join with Result

Bookstore2 SQL212 Module 2 12

Inner Join (New Syntax)

Basic SQL 92 Syntax:

Select <column-list>

From <table1>

Inner join <table2>

On <join condition>

Page 38: SQL212 Oracle SQL Manual

7

Bookstore2 SQL212 Module 2 13

Inner Join

Basic Example:

SELECT customer_first_name,

customer_street, order_numb,

order_date

from customers

inner join orders

on customers.customer_numb =

orders.customer_numb

Bookstore2 SQL212 Module 2 14

Inner Join with Result

Page 39: SQL212 Oracle SQL Manual

8

Bookstore2 SQL212 Module 2 15

Inner Join over Multiple columns

• Note that that the join condition can apply

to multiple columns if desired

• Used with composite keys

Bookstore2 SQL212 Module 2 16

Inner Join Result in MS Access

Page 40: SQL212 Oracle SQL Manual

9

Bookstore2 SQL212 Module 2 17

Inner Join

• In the last example…

– What was the cardinality of the relationship

between customers and orders?

– Which table was the parent?

– What was it‟s primary key?

– In which table did we employ a foreign key

and what was it?

Bookstore2 SQL212 Module 2 18

Cross Join

• What happens when you omit a join

expression?

• Get the cartesian product of the tables – all

possible combinations of the two tables

• For large tables this will run a long time!

Page 41: SQL212 Oracle SQL Manual

10

Dual

• Sometimes we want to generate an

expression without actually referring to a

real table.

• A trivial example would show the date.

• Oracle has a 1 row, 1 column built in table

called Dual to handle this.

• Ex: select sysdate from dual;

Bookstore2 SQL212 Module 2 19

Bookstore2 SQL212 Module 2 20

Cross Join Result Set in MS Access

Page 42: SQL212 Oracle SQL Manual

11

Bookstore2 SQL212 Module 2 21

Additional SQL92 Syntax

• Table1 natural join table2 – automatically

uses columns with same name

• Table1 natural join table2 using(<column-

list>)

• Not yet widely available in commercial

implementations

Natural Join

Bookstore2 SQL212 Module 2 22

Page 43: SQL212 Oracle SQL Manual

12

Bookstore2 SQL212 Module 2 23

Joining More than Two Tables

• Can join several tables in one select

• Try to limit to three or four

• Join order can be important for performance (although optimizers will usually handle this for you)

• Use parentheses to force order of evaluation (also vendor extensions, often called “hints”)

Bookstore2 SQL212 Module 2 24

Joining More than Two Tables

• Add orderlines detail to previous queries

SELECT customer_first_name, customer_street,

orders.order_numb, orders.order_date,

orderlines.isbn, orderlines.quantity

FROM customers

INNER JOIN orders ON

customers.customer_numb=orders.customer_numb

INNER JOIN orderlines

on orders.order_numb = orderlines.order_numb

Page 44: SQL212 Oracle SQL Manual

13

Bookstore2 SQL212 Module 2 25

Multi-table Join with Results

Bookstore2 SQL212 Module 2 26

MS Access Multi-table Join Result Set

Page 45: SQL212 Oracle SQL Manual

14

Own Your Own

• Add the book title to the previous query

Bookstore2 SQL212 Module 2 27

Bookstore2 SQL212 Module 2 28

Sample Database

• Before we continue (Access classes

only)…

• Create a new employees table

Page 46: SQL212 Oracle SQL Manual

15

Bookstore2 SQL212 Module 2 29

Correlation Names (Table Aliases)

• Can abbreviate references to tables

• For example:

Select e.name, j.payrange

From employees as e

Inner join job_information as j

On e.jobcode = j.jobcode;

Bookstore2 SQL212 Module 2 30

Self Joins

• Implements a recursive relationship

• Important in various applications

– Parts lists/assemblies

– HR

– Etc.

– Table joined to itself using correlation names

Page 47: SQL212 Oracle SQL Manual

16

Bookstore2 SQL212 Module 2 31

Self Joins

SELECT e.*, m.name

FROM employees AS e, employees

AS m

WHERE e.managerid =

m.employeeid;

Bookstore2 SQL212 Module 2 32

Page 48: SQL212 Oracle SQL Manual

17

Bookstore2 SQL212 Module 2 33

Outer Joins

• Left – selects all rows from the left or first table,

even if no match exists in the other table

– Widely used in commercial practice

– Especially useful for reporting

– Can be slower and interfere with optimizer

• Right – same idea but all rows from right table

• Full – all rows form both tables

Bookstore2 SQL212 Module 2 34

Left Outer Join

Basic SQL 92 Syntax:

Select <column-list>

From <table1>

Left [outer] join <table2>

On <join condition>

Page 49: SQL212 Oracle SQL Manual

18

Outer Join Example

• Show all customers and their orders.

• Include customers with no orders as well.

Bookstore2 SQL212 Module 2 35

Bookstore2 SQL212 Module 2 36

Left-Join

Basic Example:

SELECT customer_first_name,

customer_street, order_numb,

order_date

from customers as c

left join orders as o

on c.customer_numb =

o.customer_numb

Page 50: SQL212 Oracle SQL Manual

19

Bookstore2 SQL212 Module 2 37

Bookstore2 SQL212 Module 2 38

Left Join with Results

Page 51: SQL212 Oracle SQL Manual

20

Bookstore2 SQL212 Module 2 39

SQL200

SQL Programming

Part 2– Subqueries, Unions

Bookstore2 SQL212 Module 2 40

Subqueries

• One select statement embedded in another.

• Can be paced in select list, from clause or

where clause.

– We will study the latter in this class

• Can be nested multiple levels deep

• Two types:

– Uncorrelated – executes inner query then outer

– Correlated – executes inner query once for each outer

query row

Page 52: SQL212 Oracle SQL Manual

21

Subquery Example

• Show all the orderline information for

orders places in 1999

• Note that orderlines table does not have

order date. Thus must filter on a different

table (orders).

Bookstore2 SQL212 Module 2 41

Bookstore2 SQL212 Module 2 42

Uncorrelated Subquery

select isbn, quantity

from orderlines ol

where ol.order_numb in

(select o.order_numb from

orders o where order_date

between „1-JAN-99‟ and ‟31-

DEC-99‟)

Page 53: SQL212 Oracle SQL Manual

22

Bookstore2 SQL212 Module 2 43

Uncorrelated Subquery with Results

Bookstore2 SQL212 Module 2 44

Negative Subquery

• A type of subquery that matches “not

found” conditions

Page 54: SQL212 Oracle SQL Manual

23

Bookstore2 SQL212 Module 2 45

Negative Subquery

select isbn, quantity

from orderlines ol

where ol.order_numb not in

(select o.order_numb from

orders o where order_date

between „1-JAN-99‟ and 31-

DEC-99‟)

Bookstore2 SQL212 Module 2 46

Negative Subquery with Results

Page 55: SQL212 Oracle SQL Manual

24

Bookstore2 SQL212 Module 2 47

Correlated Subquery with Exists

• Inner subquery executed once for each outer row

• Exists will return true or false depending on

whether the result will have any rows or not

• Can be a quick way to test for existence of

records (parent records, say) as used in

application enforcement of referential integrity

Bookstore2 SQL212 Module 2 48

Correlated subquery with Exists

SELECT isbn, quantity

FROM orderlines AS ol

WHERE exists

(select * from orders o where

ol.order_numb = o.order_numb

and o.order_date between „1-JAN-

99‟ and „31-DEC-99‟);

This type of query covered in intermediate SQL class

Page 56: SQL212 Oracle SQL Manual

25

Bookstore2 SQL212 Module 2 49

Unions

• Combines two tables

• Tables must be union compatible

• Uses:

– Combine current tables with history

– Combine information from tables with no

common join column

Bookstore2 SQL212 Module 2 50

Unions

Select <column-list> from

<table1>

Union [ALL]

Select <same-columns> from

<table2>

Page 57: SQL212 Oracle SQL Manual

26

Union Example

• Create a mailing list of customers and

sources

• Use a union of the two tables, making sure

the columns match

Bookstore2 SQL212 Module 2 51

Bookstore2 SQL212 Module 2 52

Unions

Page 58: SQL212 Oracle SQL Manual

27

Union Results

Bookstore2 SQL212 Module 2 53

Bookstore2 SQL212 Module 2 54

SQL200

SQL Programming

Part 3 – Calculations, Aggregates

Page 59: SQL212 Oracle SQL Manual

28

Bookstore2 SQL212 Module 2 55

Calculated Fields

• Can add a column calculated from others

SELECT order_numb, quantity,

cost_each,

quantity*cost_each as

extension

FROM orderlines

Bookstore2 SQL212 Module 2 56

Calculated field in the Result

Page 60: SQL212 Oracle SQL Manual

29

Bookstore2 SQL212 Module 2 57

Bookstore2 SQL212 Module 2 58

String Manipulation

• Concatenation

• Trim

• Substring

• Upper, Lower

• Etc. (various vendor extensions)

Page 61: SQL212 Oracle SQL Manual

30

Bookstore2 SQL212 Module 2 59

Concatenation

• Used for concatenated keys

• Useful to format reports

Basic syntax:

(Oracle, std) Field1 || Field2

Bookstore2 SQL212 Module 2 60

Concatenation

select customer_first_name

|| „ „ ||

trim(customer_last_name)

as Name

from customers

Page 62: SQL212 Oracle SQL Manual

31

Bookstore2 SQL212 Module 2 61

Bookstore2 SQL212 Module 2 62

Date Functions

• Numerous date functions

• Often vendor specific

• Often used:– Take the year of a date

– Take the month of a date

– Add a month (not 30 days)

– Etc.

Page 63: SQL212 Oracle SQL Manual

32

Bookstore2 SQL212 Module 2 63

Aggregate Functions

• Count

• Sum

• Min

• Max

• Avg

• Often used in conjunction with grouping

Bookstore2 SQL212 Module 2 64

Aggregate Functions

Basic syntax:

Select <function>(<column>)

From <table>

Group by <column-list>

Having <predicate>

Group by all columns to left of one(s)

you want to aggregate

Page 64: SQL212 Oracle SQL Manual

33

Bookstore2 SQL212 Module 2 65

Aggregate Functions

SELECT orderlines.order_numb,

Count(*) AS “Number of Order Lines”

, Sum(orderlines.quantity) AS

SumOfquantity, Sum(quantity *

cost_each) AS extension

FROM orderlines

GROUP BY orderlines.order_numb

having count(*) > 1

Bookstore2 SQL212 Module 2 66

Page 65: SQL212 Oracle SQL Manual

34

Bookstore2 SQL212 Module 2 67

Having vs. Where

• Having and Where clauses are similar but

not the same

• Having removes groups after they are

formed

• Where removes rows before groups are

formed

Bookstore2 SQL212 Module 2 68

Exercise

• List all customers and their orders

– Name nicely formatted

– With orders in the year of 1999

– Show total order quantities and amounts

– Only include orders with more than three

order lines

Page 66: SQL212 Oracle SQL Manual

35

Bookstore2 SQL212 Module 2 69

Exercise Result

[end module]

Notes

Bookstore2 SQL212 Module 2 70

Page 67: SQL212 Oracle SQL Manual

36

Notes

Bookstore2 SQL212 Module 2 71

Notes

Bookstore2 SQL212 Module 2 72

Page 68: SQL212 Oracle SQL Manual

1

SQL/212

SQL Programming

Bookstore SQL212 Module 3 1

Workshop 3 – Modifying Data, Managing the Database

SQL212 Contact Information

P.O. Box 6142Laguna Niguel, CA 92607949-489-1472htt // d2 i t

Bookstore SQL212 Module 3 2

http://[email protected]

Copyright 2001-2009. All rights reserved.

Page 69: SQL212 Oracle SQL Manual

2

SQL212 Module 3

• Part 1 – Modifying Data• Part 2 – Managing Database Structures• Part 3 – Creating Views and Indexes• Part 4 -- Security

Bookstore SQL212 Module 3 3

SQL/212

SQL Programming

Bookstore SQL212 Module 3 4

Part 1 – Modifying Data

Page 70: SQL212 Oracle SQL Manual

3

Relational Database with constraints (from text)

Bookstore SQL212 Module 3 5

Data Modification Statements

• Insert• Insert

• Update

D l t

Bookstore SQL212 Module 3 6

• Delete

Page 71: SQL212 Oracle SQL Manual

4

Data Modification Statements

• End-user rarely sees theseEnd user rarely sees these statements

• Application developer prepares these statements “behind the scenes” based on forms filled out b

Bookstore SQL212 Module 3 7

by user

Insert

• Adds new rows to an existing table• Two forms:

– Single Row– Multi-Row

Bookstore SQL212 Module 3 8

Page 72: SQL212 Oracle SQL Manual

5

Single Row Insert

Basic Syntax:Insert [into] <table-name>

Values (<value-list>)

Bookstore SQL212 Module 3 9

Single Row Insert

Basic Example:insert into sources(source_numb, source_name, source_street)values(22,'Specialty Books', 'Canal Street')

Bookstore SQL212 Module 3 10

Page 73: SQL212 Oracle SQL Manual

6

Insert Statement

Bookstore SQL212 Module 3 11

Sources table after Insert

Bookstore SQL212 Module 3 12

Page 74: SQL212 Oracle SQL Manual

7

Multi-row Insert

Basic Syntax:

Insert [into] <table-name>

Select <select-statement>

Bookstore SQL212 Module 3 13

We will do this after creating a new table later in this module

Update

• Updates fields in an existing row

Basic Syntax:

Update <table-name>

Set <field1> = new value <field2> = new

Bookstore SQL212 Module 3 14

Set <field1> new value, <field2> new value,…

Where <selection-criteria>

Page 75: SQL212 Oracle SQL Manual

8

Update

• Increase Ingram prices by 10%

Example:

Update books

Set retail price = retail price

Bookstore SQL212 Module 3 15

Set retail_price retail_price *1.10

Where source_numb = 1

Ingram Book Prices before Update

Bookstore SQL212 Module 3 16

Page 76: SQL212 Oracle SQL Manual

9

Ingram Book Prices after Update

Bookstore SQL212 Module 3 17

Delete

• Deletes one or more rows

Basic Syntax:

Delete from <table-name>

Bookstore SQL212 Module 3 18

Where <selection-criteria>

Page 77: SQL212 Oracle SQL Manual

10

Delete

Example: delete the source we added

Delete from sources

h b 22

Bookstore SQL212 Module 3 19

Where source_numb = 22

Delete

Bookstore SQL212 Module 3 20

Page 78: SQL212 Oracle SQL Manual

11

Sources table after Delete

Bookstore SQL212 Module 3 21

Delete and Referential Integrity• Can affect referential integrity when deleting a

“parent” rowparent row• Can do following with child…

– Cascade: delete the child row– Set null: set the child’s foreign key null– Set default: as above but to default value– No action: don’t allow delete of parent row

• Referential integrity can be established when

Bookstore SQL212 Module 3 22

• Referential integrity can be established when creating or modifying table structures which we will look at later in the class

Page 79: SQL212 Oracle SQL Manual

12

SQL/212

SQL Programming

Bookstore SQL212 Module 3 23

Part 2– Managing Database Structures

Schemas

• Logical view of a database; sort of a “sub-database” – we will not cover these in this module…– Catalogs– Clusters– Domains (somewhat like a user defined datatype)

Bookstore SQL212 Module 3 24

• These topics are highly dependent upon the vendor DBMS and installation practices– In Oracle you are logged in to your schema

Page 80: SQL212 Oracle SQL Manual

13

Tables

• Two types• Two types– Base tables– Temporary tables

• Local (or module scope)• Global (session scope)

Bookstore SQL212 Module 3 25

• We will create base tables in this class

Creating Tables

• Use create statement• Specify:

– Columns with data types and column constraints

– Table constraints• Foreign key references

Bookstore SQL212 Module 3 26

• Foreign key references• Primary key designation

Page 81: SQL212 Oracle SQL Manual

14

Data Types

• Int – integers or whole numbers– Ex: how_many int

• Char – fixed length fields– Ex: state char(2)

• Varchar/Varchar2 – variable length fields– Ex: address varchar2(35)

• Money money field

Bookstore SQL212 Module 3 27

• Money – money field• Date/Datetime – date and time • And many others – see documentation or Help

Create Table

Basic syntax:

Create table <table-name>

<column1> <datatype> <constraints>

,.. <column1> <datatype> <constraints>

Bookstore SQL212 Module 3 28

<table constraints>Note: often preceded by a drop

Page 82: SQL212 Oracle SQL Manual

15

Temporary Tables

Basic syntax:

Create [global] temporary table <table-name>

<rest of statement as for normal create>

Bookstore SQL212 Module 3 29

Note: SQL Server uses a different syntax. Just put a #in front of the table name as in #mytable. Access doesn’t have true temporary tables.

Column Constraints

• Primary key• Not NULL• CHECK clause• Default• Unique

Bookstore SQL212 Module 3 30

q

Page 83: SQL212 Oracle SQL Manual

16

Table Constraints

• Primary Key• Foreign Key• Compare fields against each other. I.e.

ship_date >= order_date

Bookstore SQL212 Module 3 31

But first – the Drop Statement

• Deletes a database “object”– Drop table <table-name>– Drop view <view-name>– Drop index <index-name>– Drop domain <domain-name>

Bookstore SQL212 Module 3 32

Page 84: SQL212 Oracle SQL Manual

17

Create Table

Example 1: Create a summary tableCreate table summary(

isbn varchar2(20) primary key,

How_many int check (how_many >= 0),

Constraint isbn_fk

Bookstore SQL212 Module 3 33

Foreign key (isbn) referencesbooks(isbn)

)

Create Summary Table

Bookstore SQL212 Module 3 34

Page 85: SQL212 Oracle SQL Manual

18

Constraints on Summary Table

Bookstore SQL212 Module 3 35

Multi-row Insert

Basic Syntax:

Insert [into] <table-name>

Bookstore SQL212 Module 3 36

Select <select-statement>

Page 86: SQL212 Oracle SQL Manual

19

Multi-row Insert

Basic Example: (store # times each book ordered)

Insert into summary(isbn, how_many)

S l t i b t(*)

Bookstore SQL212 Module 3 37

Select isbn, count(*)

From orderlines

Group by isbn;

Multi-row Insert

Bookstore SQL212 Module 3 38

Page 87: SQL212 Oracle SQL Manual

20

After multi-row insert in MS Access

Bookstore SQL212 Module 3 39

SQL/212

SQL Programming

Bookstore SQL212 Module 3 40

Part 3 – Creating Views and Indexes, Modifying Structures

Page 88: SQL212 Oracle SQL Manual

21

Views

• Think of a view as a named query wherein the definition is stored in the database

• Can be read like a table• Some are updateable

Bookstore SQL212 Module 3 41

Views

Basic syntax:

Create view <view-name> (<column-list>)

As

<select statement>

Bookstore SQL212 Module 3 42

Page 89: SQL212 Oracle SQL Manual

22

Creating a View

• Example: show inventory for each book

Bookstore SQL212 Module 3 43

Using Views

• Can be used like a table subject to various limitations– Cannot insert into grouped queries, etc.– Etc.

• Sample syntax:l l l

Bookstore SQL212 Module 3 44

select column-listfrom employee_view

Page 90: SQL212 Oracle SQL Manual

23

Using a View

Bookstore SQL212 Module 3 45

Indexes

• Used to speed searches, joins, etc.• Placed on:

– primary and foreign keys– Secondary keys

• In commercial practice often managed by

Bookstore SQL212 Module 3 46

DBA’s for large databases

Page 91: SQL212 Oracle SQL Manual

24

Indexes

Basic syntax:y

Create [unique] index <index-name>

On <table-name> (field-name> [desc])

Bookstore SQL212 Module 3 47

Note: can place index on a composite key; ex: state and city

Indexes

• Add an index on state to speed searches

Basic example:

t i d t t i

and reporting

Bookstore SQL212 Module 3 48

create index state_inx

on customers(customer_state)

Page 92: SQL212 Oracle SQL Manual

25

After indexing on customer_state

Bookstore SQL212 Module 3 49

State_inx in Oracle

Bookstore SQL212 Module 3 50

Page 93: SQL212 Oracle SQL Manual

26

Modifying a Table Design

• Applies to tables• Use ALTER statement

– Add columns– Delete columns– Rename columns

Bookstore SQL212 Module 3 51

– Add column constraints– Add table constraints

Modifying a Table Design

Basic syntax:y

Alter <table-name>

Add <field-name>,

Add <table-constraint>,

M dif fi ld

Bookstore SQL212 Module 3 52

Modify <field-name>

Etc.

Page 94: SQL212 Oracle SQL Manual

27

Modify a Table Design

l dd h b fi ldExample: add a phone number field

alter table publishers

add phone char(12);

Bookstore SQL212 Module 3 53

After alter publishers table

Bookstore SQL212 Module 3 54

Page 95: SQL212 Oracle SQL Manual

28

SQL/212

SQL Programming

Bookstore SQL212 Module 3 55

Part 4 – Security

Security

• Important DBA function– Beyond scope of this course– Typically controlled through Enterprise

Manager or Studio GUI’s• In commercial practice application security

frequently controlled via own login and a

Bookstore SQL212 Module 3 56

frequently controlled via own login and a “users” table or similar

Page 96: SQL212 Oracle SQL Manual

29

Security

• Specifics can vary by product• Access: workgroup administrator• SQL Server: users, roles• Oracle: users, roles

Bookstore SQL212 Module 3 57

SQL Security Statements

• Grant• Revoke• Deny

Bookstore SQL212 Module 3 58

Page 97: SQL212 Oracle SQL Manual

30

Grant

Syntax:

Grant <access-right> [with grant option]

On <object> to <user>

Bookstore SQL212 Module 3 59

Note: by default only tables owners and admins can access a table. Others must be granted the relevant rights.

Access Rights

• Select• Update• Insert• Delete• References

Bookstore SQL212 Module 3 60

• All privileges

Page 98: SQL212 Oracle SQL Manual

31

Grant

Example: Give user ddurso the permission to update the employees table.

Grant update

Bookstore SQL212 Module 3 61

On employees to ddurso

Revoke

• Revokes the rights• Syntax similar to grant

Bookstore SQL212 Module 3 62

[end module]

Page 99: SQL212 Oracle SQL Manual

32

Notes

Bookstore SQL212 Module 3 63

Notes

Bookstore SQL212 Module 3 64

Page 100: SQL212 Oracle SQL Manual

Accelerated Computer Training for Working Professionals

Orange Coast Database Associates Course (800)355-9855 or http://ocdatabases.itgo.com

Orange Coast

Database Associates

Specializing in Microsoft Office,

Access, SQL, and related technologies Computer Training, Programming & Consulting

32422 Alipaz St., Suite A-15

San Juan Capistrano, CA

(800)355-9855 (Toll Free) | (949)489-1472 (Direct) | (949)485-6284 (Fax)

http://www.dhdursoassociates.com | [email protected]

Accelerated Computer Training