Enhanced Guide to Oracle 10g Chapter 3: Using SQL Queries to Insert,

advertisement
Enhanced Guide to Oracle 10g
Chapter 3:
Using SQL Queries to Insert,
Update, Delete, and View Data
Guide to Oracle 10g
1
Queries and action queries
 Queries are the DML commands that allow users
to retrieve database data, because the retrieved
data are answers to questions.
 Action queries are the DML commands that insert,
update, or delete database data, because the
commands perform an action that change the data
value.
Guide to Oracle 10g
2
SQL Scripts
 Script: text file that contains a sequence of SQL
commands.
 Usually have .sql extension
 Running a script:
SQL> START path_to_script_file;
OR
SQL> @ path_to_script_file;

Path cannot contain any blank spaces
Guide to Oracle 10g
3
Inserting a Value Into Every
Field in a Record
 Syntax:
INSERT INTO tablename VALUES
(column1_value, column2_value, …);
 You must insert a value or a NULL placeholder
for every field.
 Fields must be entered in the order they appear
in the table when you issue the DESCRIBE
command.
Guide to Oracle 10g
4
Inserting a Value Into Every
Field in a Record

Example:
Guide to Oracle 10g
5
Inserting Selected Table Fields
 Command to insert values for selected
record fields:
INSERT INTO tablename
(column1_name, column2_name, …)
VALUES
(column1_value, column2_value, …);
Guide to Oracle 10g
6
Inserting Selected Table Fields
 Example:
Guide to Oracle 10g
7
Format Models (Masks)


All data is stored in the database in a
standard binary format
Format masks are alphanumeric text
strings that specify the format of input
and output data


Table 3-1: Number format masks
Table 3-2: Date format masks
Guide to Oracle 10g
8
Inserting Date Values
 Date values must be converted from
characters to dates using the TO_DATE
function and a format mask
 Example:
Guide to Oracle 10g
9
Inserting Text Data
 Must be enclosed in single quotes
 Is case-sensitive
 To insert a string with a single quote,
type the single quote twice
 Example:
'Mike''s Motorcycle Shop'
Guide to Oracle 10g
10
Inserting Interval Values
 Year To Month Interval:
TO_YMINTERVAL(‘years-months’)
e.g. TO_YMINTERVAL(‘3-2’)
 Day To Second Interval:
TO_DSINTERVAL(‘days HH:MI:SS.99’)
e.g. TO_DSINTERVAL(‘-0 01:15:00’)
Guide to Oracle 10g
11
Inserting LOB Column Locators
 Oracle stores LOB data in a separate physical
location from other types of data in a row.
 Before inserting data in a LOB column, a locator
must be inserted first.
 A locator is a structure that contains information that
identifies the LOB data type and points to the
alternate memory location.
 After that a program or a utility is needed to insert
the data into the DB (chapter 10).
 Ex. To create a locator for a BLOB data:
 EMPTY_BLOB();
 Another example page 96.
Guide to Oracle 10g
12
Transactions
 Transaction
 Logical unit of work consisting of one or
more SQL DML commands
 INSERT, UPDATE, DELETE
 All transaction commands must succeed or
none can succeed
 Transaction results are not visible to
other users until they are “committed”
to the database (this is not the case with DDL commands)
 Until a transaction is committed, it can
easily be “rolled back” (undone)
Guide to Oracle 10g
13
Transactions
 A transaction starts when you type
one or more DML commands in
SQL*Plus
 A transaction ends when you issue
either the COMMIT or ROLLBACK
command
SQL>COMMIT;
SQL>ROLLBACK;
Guide to Oracle 10g
14
Committing and Rolling Back
Data

COMMIT


Makes transaction command changes
permanent in the database and visible to
other users
ROLLBACK

Rolls back transaction command changes
and restores database to its state before
the transaction
Guide to Oracle 10g
15
Savepoints
 Used to mark
individual
sections of a
transaction
 You can roll
back a
transaction to
a savepoint
Guide to Oracle 10g
16
Search Conditions
 Format:
WHERE fieldname operator expression
 Operators









Equal (=)
Greater than, Less than (>, <)
Greater than or Equal to (>=)
Less than or Equal to (<=)
Not equal (< >, !=, ^=)
LIKE
BETWEEN
IN
NOT IN
Guide to Oracle 10g
17
Search Condition Examples
WHERE s_name = ‘Sarah’
WHERE s_age > 18
WHERE s_class <> ‘SR’
 Text in single quotes is case sensitive
Guide to Oracle 10g
18
Updating Records
 Syntax:
UPDATE tablename
SET column1 = new_value,
column2 = new_value, …
WHERE search_condition;
 Each update statement can update
row(s) in one table only
 Can update multiple records if they all
match the search condition
Guide to Oracle 10g
19
Deleting Records
 Syntax:
DELETE FROM tablename
WHERE search_condition;
 Deletes multiple records if search
condition specifies multiple records
 If search condition is omitted, all table
records are deleted
 You can’t delete a record if it contains a
primary key value that is referenced as
a foreign key
Guide to Oracle 10g
20
Truncating Tables

Removes ALL table data WITHOUT
saving any rollback information (DELETE needs to
save a copy of all the deleted records for a rollback possibility)



Advantage: fast way to delete table data
Disadvantage: can’t be undone (rollback)
Syntax:
TRUNCATE TABLE tablename;
Guide to Oracle 10g
21
Truncating Tables


You can not truncate a table that has an
enabled foreign key constrain. So you
need to disable the constraint first:
Syntax:
TRUNCATE TABLE tablename
DISABLE CONSTRAINT constraint_name;
Guide to Oracle 10g
22
Sequences
 Sequential list of numbers that is
automatically generated by the
database
 Used to generate unique values
for surrogate keys
Guide to Oracle 10g
23
Creating Sequences
 Syntax:
CREATE SEQUENCE sequence_name
[optional parameters];
 Example:
CREATE SEQUENCE f_id_sequence
START WITH 200;
Guide to Oracle 10g
24
Viewing Sequence Information

Query the SEQUENCE Data Dictionary
View: (user_sequences) see table 2.3 p.69
Guide to Oracle 10g
25
Pseudocolumns



To use sequences, psedocolumns should be
understood first.
Psedocolumns acts like a column in a
database table, but it is actually a
command that returns a specific value.
Used to retrieve:



Current system date
Name of the current database user
Next or Current values of a sequence
Guide to Oracle 10g
26
Pseudocolumn Examples
Pseudocolumn Output
Name
CURRVAL
Most recently retrieved
sequence value
NEXTVAL
Next value in a sequence
SYSDATE
Current system date from
database server
USER
Username of current user
Guide to Oracle 10g
27
Using Pseudocolumns
 Retrieving the current system date:
SELECT SYSDATE
FROM DUAL;

Retrieving the name of the current user:
SELECT USER
FROM DUAL;
 DUAL is a system table that is used with
pseudocolumns. It contains one column. Its
value can not be deleted or modified. (P.110)
Guide to Oracle 10g
28
Using Pseudocolumns
With Sequences
 Accessing the next value in a sequence:
sequence_name.NEXTVAL

(Can you know the retrieved value before using it?) see next slide.
 Inserting a new record using a
sequence:
INSERT INTO my_faculty VALUES
(f_id_sequence.nextval, ‘Professor Jones’);
Guide to Oracle 10g
29
Seeing value of sequences
 The following command shows the NEXT value of the
sequence:
 SELECT sequence_name.NEXTVAL FROM DUAL;
 The following command shows the current value of the
sequence:
 SELECT sequence_name.CURRVAL FROM DUAL;
 See example page 111.
 Accessing CURRVAL without NEXTVAL in advance cause an error.
See example page 112.
Guide to Oracle 10g
30
Deleting Sequencing
 The following DDL command drops sequences from a DB:
 DROP SEQUENCE sequence_name;
 No need for commit with DDL commands.
Guide to Oracle 10g
31
Object Privileges

Permissions that you can grant to other users to allow them to access
or modify your database objects
Object Type
Privilege
Description
Table,
Sequence
ALTER
Allows user to change object’s structure
using the ALTER command
Table,
Sequence
DROP
Allows user to drop object
Table,
Sequence
SELECT
Allows user to view object
Table
INSERT,
UPDATE,
DELETE
Allows user to insert, update, delete table
data
Any database
object
ALL
Allows user to perform any operation on
object
Guide to Oracle 10g
32
Syntax
Granting object privileges:

GRANT privilege1, privilege2, …
ON object_name
TO user1, user 2, …;
Revoking (cancel) object privileges:

REVOKE privilege1, privilege2, …
ON object_name
FROM user1, user 2, …;
Guide to Oracle 10g
33
Granting and Revoking Object
Privileges
Guide to Oracle 10g
34
Retrieving Data From
a Single Table
 Syntax:
SELECT column1, column2, …
FROM tablename
WHERE search_condition;
Guide to Oracle 10g
35
Retrieving Data From
a Single Table
 To retrieve every column in a table:
SELECT * FROM …
 To retrieve every record in a table,
omit the search condition
SELECT column1, column2, …
FROM tablename;
Guide to Oracle 10g
36
Qualifying Table Names

If you retrieve data from a table that is owned by
another user, you must qualify the table name by
prefacing it with the owner’s name. (we will study it again when
joining multiple tables P.159)
Guide to Oracle 10g
37
Suppressing Duplicate Records
 Sometimes queries retrieve
duplicate records
 To suppress duplicate
outputs, use the DISTINCT
qualifier:
SELECT DISTINCT
column1, column2, …
FROM ...
Guide to Oracle 10g
38
Using Multiple Search
Conditions
 Use the search condition (where) to retrieve rows
matching specific criteria.
 Combining search conditions
 AND: both conditions must be true
 OR: either condition can be true
 Combining AND and OR in a single operation
 AND comparisons are evaluated first
 Always use parentheses to force conditions to be
evaluated in the correct order
Guide to Oracle 10g
39
Example
SQL> SELECT room
2. FROM location
3. WHERE bldg_code = ‘BUS’
4. AND capacity >= 40;
Guide to Oracle 10g
40
Searching for NULL Records
 NULL: not defined
 Use IS NULL search condition
SELECT s_name, s_class
FROM my_students
WHERE s_class IS NULL;
Guide to Oracle 10g
41
Searching for
NOT NULL Records
 Use IS NOT NULL operator
SELECT s_name, s_age
FROM my_students
WHERE s_class IS NOT NULL;
Guide to Oracle 10g
42
Using the IN and NOT IN
Operators

IN retrieves all values where the search
column value matches a set of values
SELECT *
FROM enrollment
WHERE grade IN (‘A’, ‘B’);
Either A or B.
Guide to Oracle 10g
43
Using the IN and NOT IN
Operators

NOT IN retrieves all values where the search
column value matches a set of values
SELECT *
FROM enrollment
WHERE grade NOT IN (‘A’, ‘B’);
Neither A or B.
Guide to Oracle 10g
44
Using the LIKE Operator

Performs inexact searches by matching
part of a character string
WHERE fieldname LIKE character_string;
Guide to Oracle 10g
45
Using the LIKE Operator

Character string must be in single quotes and use
wildcard characters

(%) represents multiple wildcard characters



(_) Underscore represents a single wildcard character


‘%2006’ Exact search of a string its right characters same as
‘2006’, it ignores anything on the left (no matter how many
characters are there).
‘FALL%’ all rows in which the first 4 characters are FALL.
‘_R’ retrieve all values its first character can be any value, but
the second must be ‘R’.
Wildcard characters can be placed at beginning or end
of string
Guide to Oracle 10g
46
Examples Using the LIKE Operator

SELECT * from term
WHERE term_desc LIKE ‘Fall%’;

SELECT course_no FROM course
WHERE course_no LIKE ‘%1__’;
Two
underscores
Guide to Oracle 10g
47
Sorting Query Output
 Use the ORDER BY clause
 Specify sort key, which is the
column used as a basis for ordering
the output data
SELECT s_name, s_age
FROM my_students
ORDER BY s_age;
Guide to Oracle 10g
48
Sorting Query Data
 Default sort order
 Numerical: ascending
 Character: A - Z
 Date: oldest - newest
 To force the sort order: use ASC or DESC
 Example
SELECT s_name, s_age
FROM my_students
ORDER BY s_age DESC;

You can specify multiple sort keys.
Example P. 131.
Guide to Oracle 10g
49
Using Calculations in Queries
 Calculation using SQL directly is efficient, because
the result is returned to the client calculated.
 Arithmetic operations on retrieved data




Addition (+)
Subtraction (-)
Multiplication (*)
Division (/)
 Calculations are performed on NUMBER, DATE, and
INTERVAL data types.
Guide to Oracle 10g
50
Example Calculations in Queries
 SELECT inv_id, inv_qoh * inv_price
FROM inventory;


Date calculations involve the current
date.
To retrieve the current date from the
server use:


SELECT SYSDATE FROM DUAL;
And then use it in equations:

SYSDATE – o_date
Guide to Oracle 10g
51
Example Calculations in Queries
 Remember that time_enrolled is an
INTERVAL data type in STUDENT table.
 SELECT s_id, s_last, SYSDATE – time_enrolled
FROM student;
 Remember to use SELECT SYSDATE FROM
DUAL first.
Guide to Oracle 10g
52
Single-Row
Number Functions
 Called so, because they return a single result for each row
of data retrieved.
 ABS - absolute value
 CEIL – rounds a number up to the next integer
 FLOOR – rounds a number down to the previous integer
 MOD – returns the remainder of a number and a divisor
 POWER - raises a number to an exponent
 ROUND - rounds a number
 SQRT – returns the square root of a value
 TRUNC - truncates a number to the nearest whole number
 Table 3-7 P. 137.
Guide to Oracle 10g
53
Using Single-Row
Number Functions
 Example:
SELECT s_name,
TRUNC((SYSDATE - s_dob)/365)
FROM my_students;
Guide to Oracle 10g
54
Single-Row
Character Functions
 CONCAT – joins 2 character strings
 INITCAP – returns a string with the initial letter only
uppercase
 LENGTH – returns the length of a string
 LPAD, RPAD – returns a string with a specific number of
characters added on the left or right side
 LTRIM, RTRIM – returns a string with all instances of a
specific character trimmed from the left or right side
 REPLACE – replaces all instances of a character with
another character
 UPPER/LOWER – returns a string in all upper/lower case
letters
 Table 3-8 P. 139
Guide to Oracle 10g
55
Using Single-Row
Character Functions
 Example:
SELECT UPPER(s_name)
FROM my_students;
Guide to Oracle 10g
56
Date Arithmetic
 To find a date that is a specific
number of days before or after a
known date, add or subtract the
number from the known date
 Example:
SELECT order_date + 30
FROM cust_order;
Guide to Oracle 10g
57
Date Arithmetic
 To find the number of days
between two known dates,
subtract the later date from the
earlier date
 Example:
SELECT SYSDATE – s_dob
FROM my_students;
Guide to Oracle 10g
58
Single-row Date Functions
 ADD_MONTHS
 returns a date that is a specific number of
months after a given date
 Example:
SELECT ADD_MONTHS(SYSDATE, 6)
FROM dual;
Guide to Oracle 10g
59
Date Functions
 LAST_DATE
 Returns the date that is the last day
of the month specified in the current
date
 Example:
SELECT LAST_DATE(order_date)
FROM cust_order
WHERE order_id = 1057;
Guide to Oracle 10g
60
Date Functions
 MONTHS_BETWEEN
 Returns the number of months between two
input dates
 Example:
SELECT MONTHS_BETWEEN(order_date, SYSDATE)
FROM cust_order
WHERE order_id = 1057;
Guide to Oracle 10g
61
Group Functions
 Used to perform an operation on a
field from a group of retrieved records





AVG (average of all retrieved values)
COUNT (number of records retrieved)
MAX (maximum value retrieved)
MIN (minimum value retrieved)
SUM (sum of all retrieved values)
Guide to Oracle 10g
62
Group Function Examples
SELECT
SELECT
SELECT
SELECT
AVG
MAX
MIN
SUM
(s_age)
(s_age)
(s_age)
(s_age)
FROM
FROM
FROM
FROM
Guide to Oracle 10g
my_students;
my_students;
my_students;
my_students;
63
Using the GROUP BY Clause
 Group the output by the column with duplicate values and apply
group functions to the grouped data.
 Example:
SELECT bldg_code, SUM(capacity)
FROM location
GROUP BY bldg_code;
 The bldg_code has 3 values(CR,BUS,LIB) see page 31.
Each value has several occurrences, BUS=7 times. So
the query group the occurrences of each value and
AVG the capacity of each. See result page 145.

Note that AVG(capacity)without group by gives
different results. NOT as desired. THINK!
Guide to Oracle 10g
64
Using the HAVING Clause
 Is used to filter grouped data. It can be used to place
condition on the results of queries that display group
function calculation.
 Example:
SELECT bldg_code, SUM(capacity)
FROM location
HAVING SUM(capacity) >= 100
GROUP BY bldg_code;
 Here we are interested in the total
capacity of more than 99 for each building.
Guide to Oracle 10g
65
Creating Alternate Column
Headings in SQL*Plus
Formatting output: did you notice the output of the queries? the column
name appeared as it is in the DB or the calculation formula.

To display a different headings:

Syntax:
SELECT column1 “heading1”, column2 “heading2”, …


Example:
SELECT bldg_code “Building”, SUM(capacity) “Building
Capacity”
FROM location
GROUP BY bldg_code;
Might contain spaces. Example (Building Capacity)
See output page 147.
Guide to Oracle 10g
66
Creating a Column Alias


Column alias: is an alternate column name that can be
referenced in the ORDER BY and GROUP BY clauses
Syntax:
SELECT column1 AS alias1 …
 Example:
SELECT (SYSDATE – s_dob) AS age_alias
ORDER BY age_alias
Can NOT contain space.
Guide to Oracle 10g
67
SQL* Plus Environment




Options  Environment
Linessize Custom  120 (char/line)
Pagesize  Custom  40 (line/page)
OK
Guide to Oracle 10g
68
Formatting Data Using the
TO_CHAR Function
Used to display NUMBER and DATE values using a specific
format mask (model table 3-2 page 92)
 Syntax:
TO_CHAR(fieldname, ‘format_mask’);

Note the single quote.
Example
SELECT c_sec_id, sec_num,c_sec_day,
TO_CHAR(c_sec_time, ‘HH:M1 AM’)
FROM course_section;

See output page 152. See example page 152 for currency format.
Guide to Oracle 10g
69
Join Queries


Retrieve data from multiple tables by joining tables using foreign key
references
Syntax
SELECT col1, col2, …
FROM table1, table2
WHERE table1.joincol = table2.joincol
AND search_condition(s);



Qualify a column by specifying the table that contains the column
followed by a period and then the column name.
The WHERE clause contains the join condition, which contains the
foreign key reference and the primary key in the other table.
Search condition is added using AND or OR operators.
Guide to Oracle 10g
70
Join Queries Types

Join query types:




Inner (equality)
Outer
Self
Inequality
Guide to Oracle 10g
71
Inner Joins

Occurs when joining two tables based on
values in one table being equal to values in
another table.
Guide to Oracle 10g
72
Inner Joins
 Syntax:
SELECT column1, column2, …
FROM table1, table2
WHERE table1.join_column =
table2.join_column
Join condition
 You must include a join condition for every
link between 2 tables
Guide to Oracle 10g
73
Inner Joins
 Example:
SELECT s_name, f_name
FROM student, faculty
WHERE student.f_id =
faculty.f_id;
 If you have N tables in the FROM
clause, you must have (N - 1) join
conditions
Guide to Oracle 10g
74
Inner Joins
 If the tables have a single commonly named
and defined column, you can use the NATURAL
JOIN keywords to join the tables. See example figure 3
43 page 161.
Example
SELECT s_name, f_name
FROM student NATURAL JOIN faculty;
Note:
 No commas between table names, just the
key words.

No qualifiers are needed.
Guide to Oracle 10g
75
Qualifying Field Names

If a field in the SELECT clause exists in
multiple tables in the FROM clause, you
must qualify the field name by prefacing
it with either table’s name
Guide to Oracle 10g
76
Process for Designing
Complex Inner Join Queries
1. Identify all of the tables involved in the
query, and label:



Display fields
Join fields
Search fields
2. Write the query




List
List
List
List
all
all
all
all
display fields in the SELECT clause
table names in the FROM clause
join condition links in the WHERE clause
search fields in the WHERE clause
Guide to Oracle 10g
77
Process for Designing
Complex Inner Join Queries
1. What happens if you omit a join
condition in a multiple-table query?
 The output retrieves more rows than
expected. (Cartesian product).
 See example page 166.
Guide to Oracle 10g
78
Outer Joins

Limitation of inner joins:


some records may be omitted if
corresponding records don’t exist in one of
the tables
Example:

retrieve records for all students, along with
their corresponding ENROLLMENT
information
Guide to Oracle 10g
79
Outer Joins

Student 105 (Michael Connoly) does not have any ENROLLMENT
records. So no information about 105 will be retrieved when
using inner join.
Guide to Oracle 10g
80
Outer Joins

No records retrieved for Michael:
Guide to Oracle 10g
81
Outer Joins

To include records in first (inner) table,
even when they do not have matching
records in second (outer) table:


place outer join marker (+) beside outer
table name in join clause
The (+) signals the DBMS to insert a NULL
value for the columns in the outer table
that do not have matching rows in the
inner table.
Guide to Oracle 10g
82
Outer Joins
Guide to Oracle 10g
Outer join marker
83
Self Joins

Used to join a table to itself when the table
has a foreign key that references a column in
the same table.
Guide to Oracle 10g
84
Self Joins


To create a self-join, you need to create
a table alias, which gives an alternate
name to the table so you can create a
join condition
Syntax to create table alias in FROM
clause:
FROM table1 alias1, table2 alias2
Guide to Oracle 10g
85
PARENT_PROJECT
P_ID
Self Joins
PROJECT_NAME
1 Hardware Support Intranet
CLIENT_ID
MGR_ID
PARENT_P_ID
2
105
2 Hardware Support Interface
2
103
1
3 Hardware Support Database
2
102
1
4 T eller Support System
4
105
5 Internet Advertising
6
105
6 Network Design
6
104
7 Exploration Database
5
102
5
SUB_PROJECT
P_ID
PROJECT_NAME
1 Hardware Support Intranet
CLIENT_ID
MGR_ID
PARENT_P_ID
2
105
2 Hardware Support Interface
2
103
1
3 Hardware Support Database
2
102
1
4 T eller Support System
4
105
5 Internet Advertising
6
105
6 Network Design
6
104
7 Exploration Database
5
102
Alias 1
Alias 2
5
PROJECT
P_ID
PROJECT_NAME
1 Hardware Support Intranet
CLIENT_ID
MGR_ID
PARENT_P_ID
2
105
2 Hardware Support Interface
2
103
1
3 Hardware Support Database
2
102
1
4 T eller Support System
4
105
5 Internet Advertising
6
105
6 Network Design
6
104
7 Exploration Database
5
102
Guide to Oracle 10g
5
86
Self Join Example
Note: the table alias is used in the select clause and in join conditions.
NOT the table name.
Guide to Oracle 10g
87
Inequality Joins


Join created by placing making join
condition satisfy an inequality
condition(< , > , !=)
Only makes sense when
primary/foreign key values are not
surrogate keys
Guide to Oracle 10g
88
Inequality Joins
Guide to Oracle 10g
89
Nested Queries

Created when a subquery is nested
within a main query


Main query: first query listed in SELECT
command
Subquery: retrieves one or more values
that specify the main query’s search
condition
Guide to Oracle 10g
90
Nested Query Where
Subquery Returns a Single Value

Syntax:
SELECT column1, column2, …
FROM table1, table2, …
WHERE join conditions
AND search_column1 = (SELECT column1
FROM table1, table2, …
Subquery
WHERE search and
that returns
join conditions)
one value
Guide to Oracle 10g
91
Nested Query Where
Subquery Returns Multiple Values

Syntax:
SELECT column1, column2, …
FROM table1, table2, …
WHERE join conditions
AND search_column1 IN (SELECT column1
FROM table1, table2, …
Subquery
WHERE search and
that returns
join conditions)
multiple
values
Guide to Oracle 10g
92
Using Set Operators in Queries


Performs set operations on outputs of
two unrelated queries
Both queries must have:


same number of display fields
corresponding display fields must have
same data type
Guide to Oracle 10g
93
Query Set Operators




UNION: combines results, suppresses
duplicate rows
UNION ALL: combines results, displays
duplicates
INTERSECT: finds matching rows
MINUS: returns the difference between
returned record sets
Guide to Oracle 10g
94
Database Views




Logical table based on a query
Does not physically exist in the
database
Presents data in a different format from
underlying tables
Uses:


Security
Simplifying complex queries
Guide to Oracle 10g
95
Database Views


Creating a view:
CREATE VIEW view_name AS
SQL_command;
Views can be queried just like tables:
SELECT *
FROM view_name;
Guide to Oracle 10g
96
Simple Views


Based on SQL query that retrieves data
from only one table
View can support all table DML
operations:



INSERT
UPDATE
DELETE
Guide to Oracle 10g
97
Complex Views


Based on query that retrieves data from
multiple tables
Can only be used to support SELECT
operations

No DML operations supported
Guide to Oracle 10g
98
Synonyms


Alternate name for a table
Allows you to not have to preface table
with owner’s username when you are
querying a table that belongs to
another user
Guide to Oracle 10g
99
Public Synonyms


Can only be created by a DBA
Syntax:
CREATE PUBLIC SYNONYM synonym_name
FOR owner_name.tablename;

All users with privileges to use table can
then use synonym instead of
owner_name.tablename
Guide to Oracle 10g
100
Private Synonyms



You can create private synonyms for
any tables that you have privileges to
use
Only you can use the synonym
Syntax:
CREATE SYNONYM synonym_name
FOR table_name.table_name;
Guide to Oracle 10g
101
Dynamic SQL Queries


Queries that allow users to specify
search conditions at runtime
Approaches


Substitution Values
Runtime Variables
Guide to Oracle 10g
102
Using Substitution Values


Created when search expression is
prefaced with an ampersand (&)
System then prompts user for value
Guide to Oracle 10g
103
Using Runtime Variables

Runtime variable: variable defined
in SQL*Plus environment

Syntax:
DEFINE variable_name = variable_value;

You can then substitute the variable
name for a query search condition
value
Guide to Oracle 10g
104
Using Runtime Variables

Example:
Guide to Oracle 10g
105
Download