Manipulating Data Lecture - PPSX
Manipulating Data Lecture - PPSX
Objectives
After completing this lesson, you should be able to
do the following:
• Describe each DML statement
• Insert rows into a table
• Update rows in a table
• Delete rows from a table
• Merge rows in a table
• Control transactions
Data Manipulation Language
• A DML statement is executed when you:
– Add new rows to a table
– Modify existing rows in a table
– Remove existing rows from a table
• A transaction consists of a collection of DML
statements that form a logical unit of work.
Adding a New Row to a Table
New
DEPARTMENTS row
1 row created.
Copying Rows
from Another Table
• Write your INSERT statement with a subquery.
INSERT INTO sales_reps(id, name, salary, commission_pct)
SELECT employee_id, last_name, salary, commission_pct
FROM employees
WHERE job_id LIKE '%REP%';
4 rows created.
• Do not use the VALUES clause.
• Match the number of columns in the INSERT clause
to those in the subquery.
Changing Data in a Table
EMPLOYEES
UPDATE employees
SET department_id = 55
WHERE department_id = 110;
UPDATE employees
*
ERROR at line 1:
ORA-02291: integrity constraint (HR.EMP_DEPT_FK)
violated - parent key not found
Removing a Row from a Table
DEPARTMENTS
1 row created.
Using a Subquery in an INSERT
Statement
• Verify
SELECT the results last_name, email, hire_date,
employee_id,
job_id, salary, department_id
FROM employees
WHERE department_id = 50;
Database Transactions
A database transaction consists of one of the
following:
• DML statements which constitute one consistent
change to the data
• One DDL statement
• One DCL statement
Database Transactions
• Begin when the first DML SQL statement is
executed
• End with one of the following events:
– A COMMIT or ROLLBACK statement is issued
– A DDL or DCL statement executes (automatic
commit)
– The user exits iSQL*Plus
– The system crashes
Advantages of COMMIT
and ROLLBACK Statements
With COMMIT and ROLLBACK statements, you can:
• Ensure data consistency
• Preview data changes before making changes
permanent
• Group logically related operations
Controlling Transactions
Time COMMIT
Transaction
DELETE
SAVEPOINT A
INSERT
UPDATE
SAVEPOINT B
INSERT ROLLBACK ROLLBACK ROLLBACK
to SAVEPOINT B to SAVEPOINT A
Rolling Back Changes
to a Marker
• Create a marker in a current transaction by using the
SAVEPOINT statement.
• Roll back to that marker by using the ROLLBACK
TO SAVEPOINT statement.
UPDATE...
SAVEPOINT update_done;
Savepoint created.
INSERT...
ROLLBACK TO update_done;
Rollback complete.
Implicit Transaction Processing
• An automatic commit occurs under the following
circumstances:
– DDL statement is issued
– DCL statement is issued
– Normal exit from iSQL*Plus, without explicitly
issuing COMMIT or ROLLBACK statements
• An automatic rollback occurs under an abnormal
termination of iSQL*Plus or a system failure.
State of the Data
Before COMMIT or ROLLBACK
• The previous state of the data can be recovered.
• The current user can review the results of the DML
operations by using the SELECT statement.
• Other users cannot view the results of the DML
statements by the current user.
• The affected rows are locked; other users cannot
change the data within the affected rows.
State of the Data after COMMIT
• Data changes are made permanent in the database.
• The previous state of the data is permanently lost.
• All users can view the results.
• Locks on the affected rows are released; those rows
are available for other users to manipulate.
• All savepoints are erased.
Committing Data
• Make the changes.
DELETE FROM employees
WHERE employee_id = 99999;
1 row deleted.
Rollback
segments
changed
SELECT * and
FROM userA.employees; Read unchanged
consistent data
image before
change
“old” data
User B
Locking
In an Oracle database, locks:
• Prevent destructive interaction between
concurrent transactions
• Require no user action
• Are held for the duration of the transaction
• Are of two types: explicit locking and implicit
locking
Implicit Locking
• Two lock modes:
– Exclusive: Locks out other users
– Share: Allows other users to access
• High level of data concurrency:
– DML: Table share, row exclusive
– Queries: No locks required
– DDL: Protects object definitions
• Locks held until commit or rollback