Download Chapter 3 Effects of IT on Strategy and Competition

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Serializability wikipedia , lookup

IMDb wikipedia , lookup

Microsoft SQL Server wikipedia , lookup

Entity–attribute–value model wikipedia , lookup

Open Database Connectivity wikipedia , lookup

Ingres (database) wikipedia , lookup

Database wikipedia , lookup

SQL wikipedia , lookup

Microsoft Jet Database Engine wikipedia , lookup

Concurrency control wikipedia , lookup

Functional Database Model wikipedia , lookup

Extensible Storage Engine wikipedia , lookup

Clusterpoint wikipedia , lookup

Database model wikipedia , lookup

Relational model wikipedia , lookup

PL/SQL wikipedia , lookup

Oracle Database wikipedia , lookup

Transcript
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
[email protected]
Dr. Chen, Oracle Database System (Oracle)
1
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)
2
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 SELECT…FOR UPDATE
command to create a shared lock
Dr. Chen, Oracle Database System (Oracle)
3
Refresh the Database
• 1. Run the following script file
– Start c:\oradata\chapter5\JLDB_Build_5.sql
Dr. Chen, Oracle Database System (Oracle)
4
SQL Components
ORACLE
(SQL Components)
DDL
DML
D.B.
DCL
(Create Table structure
and insert database)
Dr. Chen, Oracle Database System (Oracle)
5
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)
6
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)
7
DCL Commands
• Used to control the privileges and security of
database objects
– GRANT
– REVOKE
Dr. Chen, Oracle Database System (Oracle)
8
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)
9
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
Rollback - 1
--*********** ROLLBACK AND COMMIT *********
SELECT table_name from user_tables;
DESC acctmanager;
Amid
Amfirst
Amlast
AmeDate
Amsal
Amcomm
Region
VARCHAR2(4)
VARCHAR2(12)
VARCHAR2(12)
DATE
NUMBER(8,2)
NUMBER(7,2)
CHAR(2)
Next, CREATE table for acctmanager;
Dr. Chen, Oracle Database System (Oracle)
12
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)
13
Rollback - 2
--*********** ROLLBACK AND COMMIT *********
ROLLBACK;
DESC acctmanager;
-- TABLE of acctmanager still exists. Why?
-- ***NEXT, INSERT a record into acctmanager TABLE
Dr. Chen, Oracle Database System (Oracle)
14
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. 144
INSERT INTO acctmanager
VALUES ('T500', 'NICK', 'TAYLOR', '05-SEP-09', 42000,
3500, 'NE');
SELECT * FROM acctmanager;
Dr. Chen, Oracle Database System (Oracle)
15
Rollback - 3
Now a record is inserted into the acctmanager TABLE
--*********** ROLLBACK AND COMMIT *********
ROLLBACK;
DESC acctmanager;
-- acctmanager TABLE exists
SELECT * FROM acctmanager;
-- NO data is saved in acctmanager TABLE
Dr. Chen, Oracle Database System (Oracle)
16
Now, Commit and Rollback - 4
-- chapter 5, Figure 5-3; p. 144
INSERT INTO acctmanager
VALUES ('T500', 'NICK', 'TAYLOR', '05-SEP-09', 42000,
3500, 'NE');
SELECT * FROM acctmanager;
COMMIT;
--*********** ROLLBACK AND COMMIT *********
ROLLBACK;
DESC acctmanager;
-- acctmanager TABLE exists
SELECT * FROM acctmanager;
The data is still available in acctmanager TABLE
Dr. Chen, Oracle Database System (Oracle)
17
Inserting New Records (Your Turn …)
-- chapter 5, Figure 5-5; p. 146
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 (w/different versions); p. 148 [ ERROR OCCURS – why?]
INSERT INTO acctmanager (amid, amfirst, amlast, amedate, amsal, amcomm, region)
VALUES ('J500', 'Sammie', 'Jones', ‘DEFAULT’, 39500, 2000, 'NW');
--[ ERROR OCCURS – (NO ' ')]
-- the following two versions are correct
INSERT INTO acctmanager (amid, amfirst, amlast, amedate, amsal, amcomm, region)
VALUES ('J500', 'Sammie', 'Jones', DEFAULT, 39500, 2000, 'NW');
-- or
INSERT INTO acctmanager (amid, amfirst, amlast, amsal, amcomm, region)
VALUES ('J500', 'Sammie', 'Jones', 39500, 2000, 'NW');
-- chapter 5, Figure 5-10; p. 148
SELECT *
FROM acctmanager;
Dr. Chen, Oracle Database System (Oracle)
18
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)
19
Three Ways Inserting NULL Value
• Omit column name from INSERT INTO clause column list
• Substitute two single quotation marks
• Use NULL keyword
Run script file
on SQL PLUS
-- chapter 5, Figure 5-5; p. 146
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, '');
NULL value input
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
20
Three Ways Inserting “SYSDATE” Value (p.147)
• 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. 147
-- 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. 148
INSERT INTO acctmanager (amid, amfirst, amlast, amsal, amcomm, region)
VALUES ('J500', 'Sammie', 'Jones', 39500, 2000, 'NW');
Dr. Chen, Oracle Database System (Oracle)
21
DEFAULT … ON NULL Option (p.149)
A DEAFULT column option setting will be overridden when an explicit
NULL value is inserted. Oracle12c provides an (new) ON NULL clause
that may be used with the DEFAULT option.
1. Originally, both amedate and amsal are set to NULL (DEFAULT).
2. Next, amsal column is further modified to include a DEFAULT option
using ON NULL clause, which will set the column value to zero.
Figure 5-11 Using the ON NULL Clauses with a column DEFAULT option
Dr. Chen, Oracle Database System (Oracle)
22
Data Dictionary
• The data dictionary will assist in identifying information
regarding DEFAULT value settings.
-- chapter 5, Figure 5-12; p. 150
SELECT table_name, column_name, data_default,
default_on_null
FROM user_tab_columns
WHERE table_name = 'ACCTMANAGER';
Dr. Chen, Oracle Database System (Oracle)
UPPER
CASE
23
Handling Virtual Columns
Create an amearn (acct manager’s earn) column as indicated in
Fig. 5-13 (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. 148
SELECT *
FROM acctmanager;
-- chapter 5, Figure 5-13; p. 150
ALTER TABLE acctmanager
ADD (amearn AS (amsal + amcomm));
-- chapter 5, Figure 5-14; p. 151
SELECT *
FROM acctmanager;
Dr. Chen, Oracle Database System (Oracle)
24
Handling Virtual Columns (cont.)
-- chapter 5, Figure 5-14; p. 151
SELECT *
FROM acctmanager;
Dr. Chen, Oracle Database System (Oracle)
virtual (derived)
column
25
Handling Virtual Columns (cont.) - INSERT
-- chapter 5, Figure 5-15; p. 151
INSERT INTO acctmanager (amid, amfirst, amlast, amsal,
amcomm, region, amearn)
VALUES ('D500', 'SCOTT', 'DAVIS', 53000, 6000, 'SE', 59000);
An INSERT attempt of a fourth account manager including
a value of virtual column amearn. An error occurs that a
value can’t be inserted in a virtual column.
Summary: a virtual column is created and saved
permanently in the database. However, the value is
added automatically.
Dr. Chen, Oracle Database System (Oracle)
26
Handling Virtual Columns (cont.) - UPDATE
Q: If a value is changed (updated) on the “field(s)” (e.g., amsal
change to 40000 on T500) that derive the value on the virtual
column, will the value on the virtual column be updated
automatically?
UPDATE acctmanager
SET amsal = 40000
WHERE amid = 'T500';
SELECT * FROM acctmanager;
What will be new value for amearn on T500?
Dr. Chen, Oracle Database System (Oracle)
27
Handling Virtual Columns (cont.) - UPDATE
Q: If a value is changed (updated) on the “field(s)” (e.g., amsal
change to 40000 on T500) that derive the value on the virtual
column, will the value on the virtual column be updated
automatically.
UPDATE acctmanager
SET amsal = 40000
WHERE amid = 'T500';
Dr. Chen, Oracle Database System (Oracle)
SELECT * FROM acctmanager;
28
Handling Single Quotes in an INSERT Value
-- chapter 5, Figure 5-17; p. 152
INSERT INTO acctmanager (amid, amfirst, amlast, amsal,
amcomm, region)
VALUES ('M500', 'Peg', 'O'hara', 46000, 2000, 'SW');
-- chapter 5, Figure 5-18; p. 152 (w two single quotes)
INSERT INTO acctmanager (amid, amfirst, amlast, amsal,
amcomm, region)
VALUES ('M500', 'Peg', 'O''hara', 46000, 2000, 'SW');
-- chapter 5, Figure 5-19; p. 152
SELECT *
FROM acctmanager;
Dr. Chen, Oracle Database System (Oracle)
29
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.156-163)
Dr. Chen, Oracle Database System (Oracle)
30
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. 154
SELECT *
FROM acctbonus;
31
Modifying Existing Rows
• Modify rows using UPDATE command
• Use UPDATE command to:
– Add values to an existing row (replace NULL
values)
– Change existing values
• 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)
32
UPDATE Command Syntax
Figure 5-21 Syntax of the UPDATE command
UPDATE Command Examples
-- chapter 5, Figure 5-24; p. 157
UPDATE acctmanager
SET amedate = '01-AUG-09'
WHERE amid = 'J500';
-- chapter 5, Figure 5-25; p. 157
UPDATE acctmanager
SET region = 'W'
WHERE region IN ('NE', 'NW');
Dr. Chen, Oracle Database System (Oracle)
-- chapter 5, Figure 5-26; p. 158
UPDATE acctmanager
SET amedate = '10-OCT-09',
region = 'S'
WHERE amid = 'L500';
SELECT * FROM acctmanager;
33
Substitution Variables
• Prompts user for value
• Identified by ampersand (&) preceding
variable name
• Can be used to create interactive scripts
-- chapter 5, Figure 5-28; p. 159
UPDATE customers
SET region = 'W'
WHERE state = 'CA';
Dr. Chen, Oracle Database System (Oracle)
-- chapter 5, Figure 5-29; p. 160
UPDATE customers
SET region = '&Region'
WHERE state = '&State';
34
Substitution Variable Example
Figure 5-29 Prompt for substitution variable input
Dr. Chen, Oracle Database System (Oracle)
35
Figure 5-28 Verify
UPDATE results
Dr. Chen, Oracle Database System (Oracle)
36
Deleting Rows
• DELETE command removes a row from a
table
WHERE clause
determines which
row(s) are removed
Figure 5-31 DELETE command to remove a row from the ACCTMANAGER table
Dr. Chen, Oracle Database System (Oracle)
37
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
Note that you need to have “TWO” DELETE for
HW #9 (p.177)
Dr. Chen, Oracle Database System (Oracle)
38
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)
39
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)
40
Transaction Control Example
A
B
C
SAVEPOINT ALEX;
ROLLBACK TO ONE;
UPPLER CASE
Figure 5-36 Establishing a SAVEPOINT
Dr. Chen, Oracle Database System (Oracle)
41
Transaction Control Example (continued)
Figure 5-37 Database before using ROLLBACK TO ONE;
-- chapter 5, Figure 5-37; p. 166
ROLLBACK TO ONE;
Only undo DML actions
after SAVEPOINT
Figure 5-37 Undo changes to SAVEPOINT ONE
Dr. Chen, Oracle Database System (Oracle)
42
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)
43
• 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)
44
Homework - Hands-On Assignments
Upload the spooled file (*.txt) to the Bb (under
“Assignments & Projects”) by the deadline.
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.176-177) 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 UPLOAD the
file (Oracle_ch5_Spool_Lname_Fname.txt) to Bb
by the midnight before the next class.
Dr. Chen, Oracle Database System (Oracle)
45
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)
Upload the spooled file (*.txt) to the Bb (under
“Assignments & Projects”) by the deadline.
Dr. Chen, Oracle Database System (Oracle)
46
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)
47
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 it’s 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)
48
Summary (continued)
• DML operations aren’t 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)
49
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 isn’t
released unless a DDL command is issued or the user exits the
system
Dr. Chen, Oracle Database System (Oracle)
50
End of Chapter 5
Dr. Chen, Oracle Database System (Oracle)
51