View
224
Download
1
Embed Size (px)
Citation preview
1
Enhanced Guide to Enhanced Guide to Oracle8iOracle8i
Chapter 3:Using Oracle to Add, View, and Update Data
2
Script: text file that contains a sequence of SQL commands
Running a script:SQL> START path_to_script_file; Path cannot contain any blank spaces
SQL Scripts
3
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
Inserting a Value Into EveryField in a Record
4
Inserting a Value Into EveryField in a Record Example:
5
Command to insert values for selected record fields:INSERT INTO tablename
(column1_name, column2_name, …)
VALUES
(column1_value, column2_value, …);
Inserting Selected Table Fields
6
Example:
Inserting Selected Table Fields
7
Format 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 Table 3-3: Character format masks
8
Date values must be converted from characters to dates using the TO_DATE function and a format mask
Example:
Inserting Date Values
9
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'
Inserting Text Data
10
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
Until a transaction is committed, it can easily be “rolled back” (undone)
Transactions
11
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;
Transactions
12
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
13
Used to mark individual sections of a transaction
You can roll back a transaction to a savepoint
Savepoints
14
Syntax:UPDATE tablename
SET column1 = new_value,
column2 = new_value, …
WHERE search_condition; Records can be updated in only
one table at a time Can update multiple records if
they all match the search condition
Updating Records
15
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
Search Conditions
16
WHERE s_name = ‘Sarah’
WHERE s_age > 18
WHERE s_class <> ‘SR’
Text in single quotes is case sensitive
Search Condition Examples
17
Syntax:DELETE FROM tablenameWHERE 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
Deleting Records
18
Truncating Tables Removes all table data without
saving any rollback information Advantage: fast way to delete table
data Disadvantage: can’t be undone
Syntax:TRUNCATE TABLE tablename;
19
Sequential list of numbers that is automatically generated by the database
Used to generate values for surrogate keys
Sequences
20
Syntax:CREATE SEQUENCE sequence_name
[optional parameters];
Example:CREATE SEQUENCE f_id_sequence
START WITH 200;
Creating Sequences
21
Viewing Sequence Information Query the SEQUENCE Data
Dictionary View:
22
Pseudocolumns Acts like a column in a database
query Actually a command that returns a
specific values Used to retrieve:
Current system date Name of the current database user Next value in a sequence
23
Pseudocolumn Examples
PseudocolumnName
Output
CURRVAL Most recently retrieved sequence value
NEXTVAL Next value in a sequence
SYSDATE Current system date from database server
USER Username of current user
24
Retrieving the current system date:SELECT SYSDATEFROM DUAL; Retrieving the name of the current
user:SELECT USERFROM DUAL;
DUAL is a system table that is used with pseudocolumns
Using Pseudocolumns
25
Accessing the next value in a sequence:
sequence_name.NEXTVAL
Inserting a new record using a sequence:
INSERT INTO my_faculty VALUES
(f_id_sequence.nextval, ‘Professor Jones’);
Using PseudocolumnsWith Sequences
26
Permissions that you can grant to other users to allow them to access or modify your database objects
Granting object privileges:GRANT privilege1, privilege2, …ON object_nameTO user1, user 2, …;
Revoking object privileges:REVOKE privilege1, privilege2, …ON object_nameFROM user1, user 2, …;
Object Privileges
27
Examples of Object Privileges
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
28
Granting and Revoking Object Privileges
29
Syntax:
SELECT column1, column2, …
FROM tablename
WHERE search_condition;
Retrieving Data From a Single Table
30
To retrieve every column in a table:SELECT * FROM …
To retrieve every record in a table, omit the search conditionSELECT column1, column2, …
FROM tablename;
Retrieving Data From a Single Table
31
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
32
Sometimes queries retrieve duplicate records
To suppress duplicate outputs, use the DISTINCT qualifier:SELECT DISTINCT column1, column2, …
FROM ...
Suppressing Duplicate Records
33
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
Using Multiple Search Conditions
34
NULL: not defined Use IS NULL search condition
SELECT s_name, s_class
FROM my_students
WHERE s_class IS NULL;
Searching for NULL Records
35
Use IS NOT NULL operator
SELECT s_name, s_age
FROM my_students
WHERE s_class IS NOT NULL;
Searching for NOT NULL Records
36
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’);
37
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’);
38
Using the LIKE Operator Performs inexact searches by
matching part of a character string
WHERE fieldname LIKE character_string;
39
Using the LIKE Operator Character string must be in single
quotes and use wildcard characters % represents multiple wildcard characters _ represents a single wildcard character Wildcard characters can be placed at
beginning or end of string
Examples:WHERE s_class LIKE ‘_R’;WHERE s_name LIKE ‘J%’;
40
Use the ORDER BY clause Specify sort key, which is
column by which output is sorted
SELECT s_name, s_age
FROM my_students
ORDER BY s_age;
Sorting Query Output
41
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_ageFROM my_studentsORDER BY s_age DESC;
Sorting Query Data
42
Arithmetic operations on retrieved data Addition (+) Subtraction (-) Multiplication (*) Division (/)
Example:SELECT inv_id, qoh*price
FROM inventory;
Using Calculations in Queries
43
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
Single-RowNumber Functions
44
Example:SELECT s_name,
TRUNC((SYSDATE - s_dob)/365)
FROM my_students;
Using Single-RowNumber Functions
45
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
Single-RowCharacter Functions
46
Example:SELECT UPPER(s_name)
FROM my_students;
Using Single-RowCharacter Functions
47
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;
Date Arithmetic
48
To find the number of days between two known dates, subtract the later date from the earlier date
Example:SELECT SYSDATE – s_dobFROM my_students;
Date Arithmetic
49
ADD_MONTHS returns a date that is a specific
number of months after a given date
Example:SELECT ADD_MONTHS(SYSDATE, 6)
FROM dual;
Date Functions
50
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_orderWHERE order_id = 1057;
Date Functions
51
MONTHS_BETWEEN Returns the number of months
between two input dates
Example:SELECT MONTHS_BETWEEN(order_date, SYSDATE)
FROM cust_orderWHERE order_id = 1057;
Date Functions
52
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)
Group Functions
53
SELECT AVG (s_age) FROM my_students;
SELECT MAX (s_age) FROM my_students;
SELECT MIN (s_age) FROM my_students;
SELECT SUM (s_age) FROM my_students;
Group Function Examples
54
GROUP BY must be used if some columns in the SELECT clause are used in a group function and some are not
Group all fields that are not included in the group function
Example:SELECT s_class, AVG(s_age)
FROM my_students
GROUP BY s_class;
Using the GROUP BY Clause
55
Creating Alternate Column Headings in SQL*Plus Syntax:SELECT column1 “heading1”, column2 “heading2”, …
Example:SELECT (SYSDATE – s_dob) “Student Age”
FROM my_students;
56
Creating a Column Alias Column alias: 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
57
Dynamic SQL Queries Queries that allow users to specify
search conditions at runtime Approaches
Substitution Values Runtime Variables
58
Using Substitution Values Created when search expression is
prefaced with an ampersand (&) System then prompts user for
value
59
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
60
Using Runtime Variables Example:
61
Formatting Data Using theTO_CHAR Function Used to display NUMBER and DATE
values using a specific format mask Syntax:TO_CHAR(fieldname, ‘format_mask’);
62
Join Queries Retrieve data from multiple tables
by joining tables using foreign key references
Join query types: Inner (equality) Outer Self Inequality
63
Inner Joins One record is retrieved for each
matching row
FACULTY
64
Syntax:SELECT column1, column2, …
FROM table1, table2
WHERE table1.join_column =
table2.join_column
You must include a join condition for every link between 2 tables
Inner Joins
Join condition
65
Example:SELECT s_name, f_nameFROM student, facultyWHERE student.f_id = faculty.f_id;
If you have N tables in the FROM clause, you must have (N - 1) join conditions
Inner Joins
66
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
67
1. Identify all of the tables involved in the query, and label:
Display fields Join fields Search fields
2. Write the query List all display fields in the SELECT clause List all table names in the FROM clause List all join condition links in the WHERE
clause List all search fields in the WHERE clause
Process for DesigningComplex Inner Join Queries
68
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
69
Outer Joins
Student 105 (Michael Connoly) does not have any ENROLLMENT records
70
Outer Joins No records retrieved for Michael:
71
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
72
Outer Joins Outer join marker
73
Self Joins Used to join a table to itself when
the table has a hierarchical relationship
74
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
75
Self Joins
P_ID PROJECT_NAME CLIENT_ID MGR_ID PARENT_P_ID
1 Hardware Support Intranet 2 105
2 Hardware Support Interface 2 103 1
3 Hardware Support Database 2 102 1
4 Teller Support System 4 105
5 Internet Advertising 6 105
6 Network Design 6 104 5
7 Exploration Database 5 102
PARENT_PROJECT
P_ID PROJECT_NAME CLIENT_ID MGR_ID PARENT_P_ID
1 Hardware Support Intranet 2 105
2 Hardware Support Interface 2 103 1
3 Hardware Support Database 2 102 1
4 Teller Support System 4 105
5 Internet Advertising 6 105
6 Network Design 6 104 5
7 Exploration Database 5 102
PROJECT
P_ID PROJECT_NAME CLIENT_ID MGR_ID PARENT_P_ID
1 Hardware Support Intranet 2 105
2 Hardware Support Interface 2 103 1
3 Hardware Support Database 2 102 1
4 Teller Support System 4 105
5 Internet Advertising 6 105
6 Network Design 6 104 5
7 Exploration Database 5 102
SUB_PROJECT
76
Self Join Example
77
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
78
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
79
Inequality Joins
80
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
81
Nested Query WhereSubquery Returns a Single Value
Syntax:SELECT column1, column2, …
FROM table1, table2, …
WHERE join conditions
AND search_column1 = (SELECT column1
FROM table1, table2, …
WHERE search and
join conditions)
Subquerythat returnsone value
82
Nested Query WhereSubquery Returns Multiple Values
Syntax:SELECT column1, column2, …
FROM table1, table2, …
WHERE join conditions
AND search_column1 IN (SELECT column1
FROM table1, table2, …
WHERE search and
join conditions)
Subquerythat returnsmultiple values
83
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
Using Set Operators in Queries
84
UNION: combines results, suppresses duplicate rows
UNION ALL: combines results, displays duplicates
INTERSECT: finds matching rows MINUS: returns the difference
between returned record sets
Query Set Operators
85
Selecting Records For Update In a normal SELECT command, the
retrieved records are not locked, and are available for other users to view, updated, and delete
Sometimes, you need to select records, and then immediately update them based on the retrieved values Airline seat reservations Inventory items for sale
86
Selecting Records For Update Syntax:SELECT column1, column2, …
FROM table1, table2, …
WHERE search and join conditions
FOR UPDATE OF column1, column2, …
NOWAIT;
87
Selecting Records For Update All retrieved records are locked until
you issue a COMMIT command Fields listed in FOR UPDATE clause are
for documentation purposes only NOWAIT clause is optional
Makes it so when another user tries to retrieved locked record, their system doesn’t just “hang”
88
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
Database Views
89
Creating a view:CREATE VIEW view_name AS
SQL_command;
Views can be queried just like tables:SELECT *
FROM view_name;
Database Views
90
Simple Views Based on SQL query that retrieves
data from only one table View can support all table DML
operations: INSERT UPDATE DELETE
91
Complex Views Based on query that retrieves data
from multiple tables Can only be used to support
SELECT operations No DML operations supported
92
Indexes Index: Separate table
is maintained that shows index keys and physical locations of corresponding records
In Oracle, ROWID is translated to physical location of row on disk
Improves response time of searches and joins
SLName ROWID
Brown 13387289
Jones 13879872
Smith 58925789
Helgeson 29875018
93
Using Indexes
Create table index AFTER table is populated with data Indexes make INSERT, UPDATE, and DELETE
operations slower because index must also be maintained
94
Indexing Strategies A table can have indexes on multiple fields
Create indexes based on fields used for search or join operations
Typically, indexes only speed retrievals when <15% of the table records are involved
Each additional index adds processing overhead for INSERT, UPDATE, and DELETE operations
In Oracle, primary keys are automatically indexed
95
Creating Indexes Syntax:CREATE INDEX index_name
ON tablename(index_field);
96
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
97
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
98
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;