The SQL Query Language DML The SQL Query Language DML

Download Report

Transcript The SQL Query Language DML The SQL Query Language DML

The SQL Query Language DML
The SQL Query Language
DML Odds and Ends
The SQL Query Language DML
1
Outline
 Data creation and destruction
 Inserting into a table
 Deleting from a table
 Modifying values in a table
 Other commonly used features
 Views
 Transactions and triggers
 Summary
The SQL Query Language DML
2
Modifications
 There are three modification statements
 INSERT
 UPDATE
 DELETE
 For insertions, either values can be specified, or a select
statement provides the values
 Enter a reservation for Eric for the film 332244
INSERT INTO Reserved
VALUES (123456, 332244, CURRENT_DATE)
The SQL Query Language DML
3
INSERT, cont.
 Let Melanie reserve all the films that Eric has reserved.
INSERT INTO Reserved
SELECT
C2.CustomerID, FilmID, CURRENT_DATE
FROM Reserved, Customer C, Customer C2
WHERE
C.Name = ’Eric’
AND C.CustomerID = Reserved.CustomerID
AND C2.Name = ’Melanie’
The SQL Query Language DML
4
DELETE
 A where clause identifies which rows to remove from
the table
 Delete all the reservations of customer 123456
DELETE FROM Reserved
WHERE CustomerID = 123456
 Other tables can be consulted to determine which rows
should be removed
 Delete all of Eric's reservations
DELETE FROM Reserved
WHERE CustomerID = ANY(SELECT CustomerID
FROM Customer
WHERE
Name = ’Eric’)
The SQL Query Language DML
5
DELETE, cont
 Delete the films with a rental price below the average
DELETE FROM Film WHERE RentalPrice <(SELECT
AVG(RentalPrice)
FROM Film)
 Implementation difficulty: As we delete rows from Film,
the average rental balance changes
 Not a problem
 Inner query, first computes the average balance
 Outer “loop” deletes tuples without recomputing AVG
The SQL Query Language DML
6
UPDATE
 Increase the rental price of all films by 10%
UPDATE Film
SET RentalPrice = RentalPrice * 1.10
 The update statement has an optional where clause
 Increase the rental price of foreign films by 10%
UPDATE Film
SET RentalPrice = RentalPrice * 1.10
WHERE Kind = ’F’
The SQL Query Language DML
7
UPDATE, cont
 Increase the rental price of films with a current price of
under $3 by 20%, and all others by 10%
UPDATE Film
SET
RentalPrice = RentalPrice * 1.10
WHERE RentalPrice >= 3.00
UPDATE Film
SET
RentalPrice = RentalPrice * 1.20
WHERE RentalPrice < 3.00
 Careful, order is important!
The SQL Query Language DML
8
Outline
 Data creation and destruction
 Inserting into a table
 Deleting from a table
 Modifying values in a table
 Other commonly used features
 Views
 Transactions and triggers
 Summary
The SQL Query Language DML
9
View
 Views provide a mechanism to create a virtual table
CREATE VIEW name AS query expression
 To create a view we use the command
 Define a view of all customers in Dublin
CREATE VIEW Dublin_Customers AS
SELECT *
FROM Customer
WHERE City = ’Dublin’
The SQL Query Language DML
10
View, cont.
 Define a view of all customers holding reservations, and
the films they have reserved
CREATE VIEW Reservations AS
SELECT Name, Title
FROM Customer, Reserved, Film
WHERE Customer.CustomerID = Reserved.CustomerID
AND Reserved.FilmID = Film.FilmID
The SQL Query Language DML
11
Transactions
 A transaction identifies an elementary unit of work
carried out by an application, to which we wish to
allocate particular characteristics of reliability and
isolation
 A system that makes available mechanisms for the
definition and execution of transactions is called a
transaction processing system
 Transactions are initiated with any SQL statement that
modifies the database
The SQL Query Language DML
12
Transactions
 A transaction can be defined syntactically: each
transaction, irrespective of the language in which it is
written, is enclosed whthin two commands
begin transaction
end transaction
 Within the transaction code, two particular instructions
can appear
commit work
rollback work
The SQL Query Language DML
13
Transaction example
 An example of transaction is given in the following code
begin transaction
X := x – 10;
Y := y + 10;
Commit work;
end transaction
The SQL Query Language DML
14
Active databases
 An active database system is a DBMS that supports an
integrated subsystem for the definition and
management of production rules
 The rules follow the event – condition – action
paradigm: each rule reacts to some events, evaluates a
condition and, based on the truth value of the
condition, might carry out an action
 The execution of the rules happens under the control of
an autonomous subsystem, known as the rule engine,
which keeps track of the events that have occurred and
schedules the rules for execution
 One of the active rules called triggers
The SQL Query Language DML
15
Triggers
 The creation of triggers is part of the DDL
 Maintain data integrity
 Associated with a table (view)
 Event-condition-action
 Wait for a table event
before
after
X
insertion
deletion
update
 On event, evaluate condition
 If condition is true, execute action
The SQL Query Language DML
16
How to create a trigger (SQL Server Enterprise Manager)
1.
Expand a server group, and then expand a server.
2.
Expand Databases, expand the database in which the table to
contain the trigger belongs, and then click Tables.
3.
In the details pane, right-click the table on which the trigger will
be created, point to All Tasks, and then click Manage Triggers.
4.
In Name, click <new>.
5.
In the Text box, enter the text of the trigger. Use CTRL-TAB to
indent the text of a trigger.
6.
To check the syntax, click Check Syntax.
The SQL Query Language DML
17
Syntax (SQL server)
CREATE TRIGGER trigger_name
ON { table | view }
[ WITH ENCRYPTION ]
{
{ { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] }
[ WITH APPEND ]
[ NOT FOR REPLICATION ]
AS
[ { IF UPDATE ( column )
[ { AND | OR } UPDATE ( column ) ]
[ ...n ]
| IF ( COLUMNS_UPDATED ( ) { bitwise_operator } updated_bitmask
)
{ comparison_operator } column_bitmask [ ...n ]
}]
sql_statement [ ...n ]
}
}
The SQL Query Language DML
18
Oracle Table-level Trigger Body
 Example: At most 100 people can live in Dublin
 After update/insert into Person
DECLARE
Declare Variables
C INTEGER;
BEGIN
Body of Trigger
SELECT COUNT(Name) INTO C
FROM Person
WHERE City =
‘Dublin’;
IF (C > 100) THEN
RAISE_APPLICATION_ERROR(-20000, ‘too many in Dublin’);
END IF;
END
The SQL Query Language DML
19
Potential Applications
 Notification
 an active database may be used to monitor
 Enforce integrity constraints
 Business roles
 Maintenance of derived data
 Maintain the derived attribute whenever individual tuples are
changed
The SQL Query Language DML
20
Trigger Gotchas
 Potentially infinite loop
 Trigger A: On insertion into Person, insert into Population
 Trigger B: On insertion into Population, insert into Person
 Mutating tables
 Trigger A: On insertion into Person, insert into Person!
 Disallowed!
 Trigger cannot make changes to table that trigger is defined on
The SQL Query Language DML
21
Summary
 Schema Definition




CREATE TABLE
CREATE VIEW
ALTER
DROP
 Queries
 SELECT
 Modifications
 INSERT
 DELETE
 UPDATE
 Transaction Management
 COMMIT
 ROLLBACK
 Active Database
 Trigger
The SQL Query Language DML
22