Sei sulla pagina 1di 45

Chapter 5

Data Manipulation and


Transaction Control
Jason C. H. Chen, Ph.D.
Professor of MIS
School of Business
Gonzaga University
Spokane, WA 99258 USA
chen@jepson.gonzaga.edu
Dr. Chen, Oracle Database System (Oracle)

Objectives
Use the INSERT command to add a record to an
existing table
Manage virtual columns in data manipulations
Use quotes in data values
Use a subquery to copy records from an existing
table
Use the UPDATE command to modify the
existing rows of a table
Use substitution variables with an UPDATE
command
Dr. Chen, Oracle Database System (Oracle)

Objectives (continued)
Delete records
Manage transactions with transaction
control commands COMMIT, ROLLBACK,
and SAVEPOINT
Differentiate between a shared lock and an
exclusive lock
Use the SELECTFOR UPDATE
command to create a shared lock

Dr. Chen, Oracle Database System (Oracle)

Refresh the Database


1. Run the following script file
Start c:\oradata\chapter5\JLDB_Build_5.sql

Dr. Chen, Oracle Database System (Oracle)

SQL Components
ORACLE
(SQL Components)
DDL
DML

D.B.

DCL
(Create Table structure
and insert database)
Dr. Chen, Oracle Database System (Oracle)

DDL Commands
Used to create and modify the structure of
database objects
CREATE
ALTER
DROP

DDL commands execute as soon as they are


issued, and do not need to be explicitly saved

Dr. Chen, Oracle Database System (Oracle)

DML Commands
Used to insert, view, and modify database data

INSERT
UPDATE
DELETE
SELECT

DML commands need to be explicitly saved or


rolled back
COMMIT
ROLLBACK
SAVEPOINT

Dr. Chen, Oracle Database System (Oracle)

DCL Commands
Used to control the privileges and security of
database objects
GRANT
REVOKE

Dr. Chen, Oracle Database System (Oracle)

Security Granting Table Privileges


Security is the prevention of unauthorized access
to the database. Within an organization, the
database administrator determines the types of
access various users need for the database.
Some users might be able to retrieve and update
data in the database. Other users might be able to
retrieve any data from the database but not make
any changes to it. Still other users might be able
to access only a portion of the database.

Dr. Chen, Oracle Database System (Oracle)

INSERT Command

Used to add rows to existing tables


Identify the table in the INSERT INTO clause
Specify data in the VALUES clause
Can only add one row at a time to a table
Enclose nonnumeric data in single quotes
If a column list is not provided, a value must be
assigned to each column in the table

Figure 5-2

Syntax of the INSERT command

Dr. Chen, Oracle Database System (Oracle)

10

Your Turn
Re-run a new script file not including
acctmanager table
SQL> start c:\oradata\chapter5\JLDB_Build_5.sql

You now are able to


create acctmanager table, and
insert new rows (data value) into the acctmanager
table

Dr. Chen, Oracle Database System (Oracle)

11

The acctmanaer Table Creation


Amid

Amfirst

Amlast

AmeDate

Amsal

Amcomm

Region

VARCHAR2(4)

VARCHAR2(12)

VARCHAR2(12)

DATE

NUMBER(8,2)

NUMBER(7,2)

CHAR(2)

CREATE TABLE acctmanager


(amid CHAR(4),
amfirst VARCHAR2(12) NOT NULL,
amlast VARCHAR2(12) NOT NULL,
amedate DATE DEFAULT SYSDATE,
amsal NUMBER(8,2),
amcomm NUMBER(7,2) DEFAULT 0,
region CHAR(2),
CONSTRAINT acctmanager_amid_pk PRIMARY KEY (amid),
CONSTRAINT acctmanager_region_ck
CHECK (region IN ('N', 'NW', 'NE', 'S', 'SE', 'SW', 'W', 'E')));
Figure 5-1 The ACCTMANAGER table creation
Dr. Chen, Oracle Database System (Oracle)

12

Inserting New Records


ID

Name

Employment Date Salary

Commission Region

T500

Nick Taylor

September 5, 2009

$42,000

$3,500

L500

Mandy Lopez

October 1, 2009

$47,000

$1,500

J500

Sammie Jones

Today

$39,5000

$2,000

NE

NW

Table 5-2 Data for Account Managers

Type the following commands:


-- chapter 5, Figure 5-3; p. 140
INSERT INTO acctmanager
VALUES ('T500', 'NICK', 'TAYLOR', '05-SEP-09', 42000,
3500, 'NE');
SELECT * FROM acctmanager;
Dr. Chen, Oracle Database System (Oracle)

13

Inserting New Records (Your Turn )


-- chapter 5, Figure 5-5; p. 142
INSERT INTO acctmanager (amid, amfirst, amlast, amedate, amsal, amcomm)
VALUES ('L500', 'MANDY', 'LOPEZ', '01-OCT-09', 47000, 1500);
SELECT *
FROM acctmanager;
-- chapter 5, Figure 5-9; p. 143 [ ERROR OCCURS (NO ' ')]
INSERT INTO acctmanager (amid, amfirst, amlast, amedate, amsal, amcomm,
region)
VALUES ('J500', 'Sammie', 'Jones', DEFAULT, 39500, 2000, 'NW');
-INSERT INTO acctmanager (amid, amfirst, amlast, amsal, amcomm, region)
VALUES ('J500', 'Sammie', 'Jones', 39500, 2000, 'NW');
-- chapter 5, Figure 5-10; p. 144
SELECT *
FROM acctmanager;
Dr. Chen, Oracle Database System (Oracle)

14

INSERT Command Examples


No Column List

Figure 5-3

The INSERT command for Nick Taylor

Column List

Figure 5-9

Use an INSERT statement that applies a DEFAULT column option

Dr. Chen, Oracle Database System (Oracle)

15

Three Ways Inserting NULL Value


Omit column name from INSERT INTO clause column list
Substitute two single quotation marks
Use NULL keyword
-- chapter 5, Figure 5-5; p. 142
INSERT INTO acctmanager (amid, amfirst, amlast, amedate, amsal,
amcomm)
VALUES ('L500', 'MANDY', 'LOPEZ', '01-OCT-09', 47000, 1500);
INSERT INTO acctmanager
VALUES ('L500', 'MANDY', 'LOPEZ', '01-OCT-09', 47000, 1500, '');
INSERT INTO acctmanager
VALUES ('L500', 'MANDY', 'LOPEZ', '01-OCT-09', 47000, 1500, NULL);
Figure 5-6

The INSERT INTO command for Mandy Lopez

Dr. Chen, Oracle Database System (Oracle)

NULL value input


16

Three Ways Inserting SYSDATE Value


(Note: errors in the text book; p.143)
Insert the current date SYSDATE in the Amedate column
Use the keyword DEFAULT for the column value in the VALUES
clause
Include a column list in the INSERT INTO clause that omits the Amedate
column
-- chapter 5, Figure 5-7; 5-8; p. 143
-- note that no is required, or, error occurred
INSERT INTO acctmanager (amid, amfirst, amlast, amedate, amsal,
amcomm, region)
VALUES ('J500', 'Sammie', 'Jones', SYSDATE, 39500, 2000, 'NW');
-- or
INSERT INTO acctmanager (amid, amfirst, amlast, amedate, amsal,
amcomm, region)
VALUES ('J500', 'Sammie', 'Jones', DEFAULT, 39500, 2000, 'NW');
-- chapter 5, Figure 5-9; p. 143
INSERT INTO acctmanager (amid, amfirst, amlast, amsal, amcomm, region)
VALUES ('J500', 'Sammie', 'Jones', 39500, 2000, 'NW');
Dr. Chen, Oracle Database System (Oracle)

17

Handling Virtual Columns


Create an Amearn column as indicated in Fig. 5-11 (also in Fig.
3-2; p. 64. The column is called virtual column (or
derived/computed), which is generated from other column
values.
-- chapter 5, Figure 5-10; p. 144
SELECT *
FROM acctmanager;

-- chapter 5, Figure 5-11; p. 144


ALTER TABLE acctmanager
ADD (amearn AS (amsal + amcomm));
-- chapter 5, Figure 5-12; p. 145
SELECT *
FROM acctmanager;
Dr. Chen, Oracle Database System (Oracle)

18

Handling Virtual Columns (cont.)


-- chapter 5, Figure 5-12; p. 145
SELECT *
FROM acctmanager;

Dr. Chen, Oracle Database System (Oracle)

virtual (derived)
column

19

Manage Virtual Column Input

Figure 5-13 Error caused by using a virtual column in an INSERT statement


Dr. Chen, Oracle Database System (Oracle)

20

Handling Single Quotes in an INSERT Value


-- chapter 5, Figure 5-15; p. 146
INSERT INTO acctmanager (amid, amfirst, smlast, amsal,
amcomm, region)
VALUES ('M500', 'Peg', 'O'hara', 46000, 2000, 'SW');

-- chapter 5, Figure 5-16; p. 147


INSERT INTO acctmanager (amid, amfirst, smlast, amsal,
amcomm, region)
VALUES ('M500', 'Peg', 'O''hara', 46000, 2000, 'SW');
-- chapter 5, Figure 5-17; p. 147
SELECT *
FROM acctmanager;
Dr. Chen, Oracle Database System (Oracle)

21

Constraint Violations
When you add or modify table data, the data
is checked for compliance with any
applicable constraints
You should practice all examples (more
commands such as UPDATE on p.150-157))

Dr. Chen, Oracle Database System (Oracle)

22

Inserting Data from an Existing Table


Substitute subquery for VALUES clause
Note: make sure you have re-run a new script
file (i.e., JLDB_Build_5.sql) with acctbonus
table created.
Subquery

Figure 5-19 INSERT INTO command with a subquery

Dr. Chen, Oracle Database System (Oracle)

-- chapter 5, Figure 5-20; p. 149


SELECT *
FROM acctbonus;
23

Modifying Existing Rows


Modify rows using UPDATE command
Use UPDATE command to:
Add values to an existing row (replace NULL
values)
Change existing values

Dr. Chen, Oracle Database System (Oracle)

24

UPDATE Command
UPDATE clause identifies table
SET clause identifies column(s) being
changed and new value(s)
Optional WHERE clause specifies row(s) to
be changed if omitted, all rows will be
updated!

Dr. Chen, Oracle Database System (Oracle)

25

UPDATE Command Syntax

Figure 5-21 Syntax of the UPDATE command

UPDATE Command Examples


-- chapter 5, Figure 5-22; p. 151
UPDATE acctmanager
SET amedate = '01-AUG-09'
WHERE amid = 'J500';
-- chapter 5, Figure 5-23; p. 151
UPDATE acctmanager
SET region = 'W'
WHERE region IN ('NE', 'NW');
Dr. Chen, Oracle Database System (Oracle)

-- chapter 5, Figure 5-24; p. 152


UPDATE acctmanager
SET amedate = '10-OCT-09',
region = 'S'
WHERE amid = 'L500';
SELECT * FROM acctmanager;
26

Substitution Variables
Prompts user for value
Identified by ampersand (&) preceding
variable name
Can be used to create interactive scripts
-- chapter 5, Figure 5-26; p. 153
UPDATE customers
SET region = 'W'
WHERE state = 'CA';

Dr. Chen, Oracle Database System (Oracle)

-- chapter 5, Figure 5-27; p. 154


UPDATE customers
SET region = '&Region'
WHERE state = '&State';

27

Substitution Variable Example

Figure 5-27 Prompt for substitution variable input


Dr. Chen, Oracle Database System (Oracle)

28

Figure 5-28 Verify


UPDATE results

Dr. Chen, Oracle Database System (Oracle)

29

Deleting Rows
DELETE command removes a row from a
table
WHERE clause
determines which
row(s) are removed

Figure 5-30 DELETE command to remove a row from the ACCTMANAGER table
Dr. Chen, Oracle Database System (Oracle)

30

DELETE Command Omitting WHERE Clause


Omitting WHERE clause removes all rows
Example below removes all rows from the
acctmanager table

Figure 5-32 DELETE command without the WHERE clause

Dr. Chen, Oracle Database System (Oracle)

31

Transaction Control Statements


Results of data manipulation language
(DML) are not permanently updated to a
table until explicit or implicit COMMIT
occurs
Transaction control statements can:
Commit data through COMMIT command
Undo data changes through ROLLBACK
command

Dr. Chen, Oracle Database System (Oracle)

32

COMMIT Command
Explicit COMMIT occurs by executing
COMMIT;
Implicit COMMIT occurs when DDL
command is executed or user properly exits
system
Permanently updates table(s) and allows
other users to view changes

Dr. Chen, Oracle Database System (Oracle)

33

ROLLBACK Command
Used to undo changes that have not been
committed
Occurs when:
ROLLBACK; is executed
System restarts after a crash
SAVEPOINT marks a specific spot within the
transaction
Can ROLLBACK to a SAVEPOINT to undo part
of the transaction

Dr. Chen, Oracle Database System (Oracle)

34

Transaction Control Example


A
B
C
SAVEPOINT ALEX;

ROLLBACK TO ONE;

Figure 5-34 Establishing a SAVEPOINT


Dr. Chen, Oracle Database System (Oracle)

35

Transaction Control Example (continued)

Figure 5-35 Database before using ROLLBACK TO ONE;

-- chapter 5, Figure 5-36; p. 161


ROLLBACK TO ONE;

Only undo DML actions


after SAVEPOINT

Figure 5-37 Undo changes to SAVEPOINT ONE


Dr. Chen, Oracle Database System (Oracle)

36

Transaction Control Example (continued)

Figure 5-37 Database before using ROLLBACK

-- chapter 5, Figure 5-38; p. 162


ROLLBACK;

Figure 5-39 Verify the ROLLBACK results

Dr. Chen, Oracle Database System (Oracle)

37

Practice all the examples in the text.


A Script file is available on the Bb (file
name: Ch5Queries.sql)
After completing all examples, do the HW.

Dr. Chen, Oracle Database System (Oracle)

38

Homework - Hands-On Assignments


Email me with one attachment
(Oracle_ch5_Spool_Lname_Fname.) to:
chen@jepson.gonzaga.edu
with subject title of
bmis441_Oracle_ch5 or mbus699_Oracle_ch5
Read and Practice all examples on Chapters 5
1. Run the script files (in the folder \oradata\chapter5\):
JLDB_Build_5.sql
2. Read Oracle assignment and create a script file
Oracle_ch5_Lname_Fname.sql for questions (#1 to
#5, #9,#10; p.170) on Hands-on Assignments. .
3. Execute and test one problem at a time and make sure
they are all running successfully.
4. When you done, spool the script files (see next slide
for spooling instructions) and email the file
(Oracle_ch5_Spool_Lname_Fname.txt) to me by the
midnight before the next class.

Dr. Chen, Oracle Database System (Oracle)

39

How to Spool your Script and Output Files


After you tested the script file of Oracle_ch5_Lname_Fname.sql successfully,
follow the instructions below to spool both script and output files:
Step 0. Run the following script file from SQL*Plus (since you have created
JLDB tables)
Start c:\oradata\chapter5\JLDB_Build_5.sql

1. type the following on SQL>


Spool c:\oradata\Oracle_ch5_Spool_Lname_Fname.txt (make sure your name is entered)

2. open Oracle_ch5_Lname_Fname.sql that you already tested


3. copy and paste all the SQL commands (including all comments) to the
SQL*PLUS
4. type Spool Off on the SQL>
The output should contain your personal information, all SQL commands and
their solution on the .txt file and saved in C: drive (oradata\ folder)
Email me with the spooled file (.txt) with attachment to:
chen@jepson.gonzaga.edu
with subject title of
bmis441_Oracle_ch5 or mbus699_Oracle_ch5
Dr. Chen, Oracle Database System (Oracle)

40

Summary
Data manipulation language (DML) includes the INSERT,
UPDATE, DELETE, COMMIT, and ROLLBACK commands
The INSERT INTO command is used to add new rows to an
existing table
The column list specified in the INSERT INTO clause must
match the order of data entered in the VALUES clause
A virtual column must be ignored in all DML actions because
the database system generates this column value automatically
You can use a NULL value in an INSERT INTO command by
including the keyword NULL, omitting the column from the
column list of the INSERT INTO clause, or entering two
single quotes (without a space) in the position of the NULL
value
Dr. Chen, Oracle Database System (Oracle)

41

Summary (continued)
To assign a DEFAULT option value, a column must be
excluded from the column list in an INSERT statement or the
keyword DEFAULT must be included as the value for the
column
In a DML statement, two single quotes together must be used
to represent a single quote in a value
If rows are copied from a table and entered in an existing
table by using a subquery in the INSERT INTO command,
the VALUES clause must be omitted because its irrelevant
You can change the contents of a row or group of rows with
the UPDATE command
You can use substitution variables to allow you to execute the
same command several times with different data values
Dr. Chen, Oracle Database System (Oracle)

42

Summary (continued)
DML operations arent stored permanently in a table until a
COMMIT command is issued implicitly or explicitly
A transaction consists of a set of DML operations committed as
a block
Uncommitted DML operations can be undone by issuing the
ROLLBACK command
A SAVEPOINT serves as a marker for a point in a transaction
and allows rolling back only a portion of the transaction
Use the DELETE command to remove records from a table; if
the WHERE clause is omitted, all rows in the table are deleted
Table locks can be used to prevent users from mistakenly
overwriting changes made by other users
Dr. Chen, Oracle Database System (Oracle)

43

Summary (continued)
Table locks can be in SHARE mode or EXCLUSIVE mode
EXCLUSIVE mode is the most restrictive table lock and
prevents any other user from placing any locks on the same
table
A lock is released when a transaction control statement is
issued, a DDL statement is executed, or the user exits the
system by using the EXIT command
SHARE mode allows other users to place shared locks on other
portions of the table, but it prevents users from placing an
exclusive lock on the table
The SELECT . . . FOR UPDATE command can be used to
place a shared lock for a specific row or rows; the lock isnt
released unless a DDL command is issued or the user exits the
system
Dr. Chen, Oracle Database System (Oracle)

44

End of Chapter 5

Dr. Chen, Oracle Database System (Oracle)

45

Potrebbero piacerti anche