it420: database management and organization
DESCRIPTION
IT420: Database Management and Organization. SQL Views, Triggers and Stored Procedures 17 February 2006 Adina Cr ă iniceanu www.cs.usna.edu/~adina. Last time. SQL Views. Today. Updates on views Triggers Stored procedures. SQL Views. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: IT420: Database Management and Organization](https://reader036.vdocument.in/reader036/viewer/2022062517/5681366d550346895d9dfbdd/html5/thumbnails/1.jpg)
1
IT420: Database Management and Organization
SQL Views, Triggers and Stored Procedures17 February 2006
Adina Crăiniceanuwww.cs.usna.edu/~adina
![Page 2: IT420: Database Management and Organization](https://reader036.vdocument.in/reader036/viewer/2022062517/5681366d550346895d9dfbdd/html5/thumbnails/2.jpg)
Kroenke, Database Processing 2
Last time
SQL Views
![Page 3: IT420: Database Management and Organization](https://reader036.vdocument.in/reader036/viewer/2022062517/5681366d550346895d9dfbdd/html5/thumbnails/3.jpg)
Kroenke, Database Processing 3
Today
Updates on views Triggers Stored procedures
![Page 4: IT420: Database Management and Organization](https://reader036.vdocument.in/reader036/viewer/2022062517/5681366d550346895d9dfbdd/html5/thumbnails/4.jpg)
Kroenke, Database Processing 4
SQL Views
SQL view is a virtual table that is constructed from other tables or views
It has no data of its own, but obtains data from tables or other views
It only has a definition
![Page 5: IT420: Database Management and Organization](https://reader036.vdocument.in/reader036/viewer/2022062517/5681366d550346895d9dfbdd/html5/thumbnails/5.jpg)
Kroenke, Database Processing 5
CREATE VIEW Command
CREATE VIEW command:CREATE VIEW view_name AS select_statement
Use the view: In SELECT statements Sometimes in INSERT statements Sometimes in UPDATE statements Sometimes in DELETE statements
![Page 6: IT420: Database Management and Organization](https://reader036.vdocument.in/reader036/viewer/2022062517/5681366d550346895d9dfbdd/html5/thumbnails/6.jpg)
Kroenke, Database Processing 6
Uses for SQL Views
Security: hide columns and rows Display results of computations Hide complicated SQL syntax Provide a level of isolation between actual data
and the user’s view of data three-tier architecture
Assign different processing permissions to different views on same table
Assign different triggers to different views on same table
![Page 7: IT420: Database Management and Organization](https://reader036.vdocument.in/reader036/viewer/2022062517/5681366d550346895d9dfbdd/html5/thumbnails/7.jpg)
Kroenke, Database Processing 7
Using Views
Customer(CustID, CustName, Address, Phone)
CREATE VIEW CustomerV AS
SELECT *
FROM Customers
SELECT *
FROM CustomerV
CustID CustName Address Phone
01 Amy Gale Annapolis, MD 410-293-5234
02 Tom Smith Baltimore, MD 443-5674-7899
05 Chris O’Neal Annapolis, MD - 21402
410-295-6583
CustID CustName Address Phone
01 Amy Gale Annapolis, MD 410-293-5234
02 Tom Smith Baltimore, MD 443-5674-7899
05 Chris O’Neal Annapolis, MD - 21402
410-295-6583
Customers
SELECT * FROM CustomerV query result:
![Page 8: IT420: Database Management and Organization](https://reader036.vdocument.in/reader036/viewer/2022062517/5681366d550346895d9dfbdd/html5/thumbnails/8.jpg)
Kroenke, Database Processing 8
Using Views
CREATE VIEW CustomerV AS
SELECT *
FROM Customers
SELECT *
FROM CustomerV
WHERE Address LIKE ‘%Annapolis%’
CustID CustName Address Phone
01 Amy Gale Annapolis, MD 410-293-5234
02 Tom Smith Baltimore, MD 443-5674-7899
05 Chris O’Neal Annapolis, MD - 21402
410-295-6583
CustID CustName Address Phone
01 Amy Gale Annapolis, MD 410-293-5234
05 Chris O’Neal Annapolis, MD - 21402
410-295-6583
Customers
SELECT query result:
![Page 9: IT420: Database Management and Organization](https://reader036.vdocument.in/reader036/viewer/2022062517/5681366d550346895d9dfbdd/html5/thumbnails/9.jpg)
Kroenke, Database Processing 9
UPDATE on Views
CREATE VIEW CustomerV AS
SELECT *
FROM Customers
UPDATE CustomerV
SET Phone = ‘410-123-1234’
WHERE CustID = 01
CustID CustName Address Phone
01 Amy Gale Annapolis 410-293-5234
02 Tom Smith Baltimore, MD 443-5674-7899
05 Chris O’Neal Annapolis, MD - 21402
410-295-6583
CustID CustName Address Phone
01 Amy Gale Annapolis 410-123-1234
02 Tom Smith Baltimore, MD 443-5674-7899
05 Chris O’Neal Annapolis, MD - 21402
410-295-6583
Customers table before update:
Customers table after update:
UPDATE impacts the Customers table
![Page 10: IT420: Database Management and Organization](https://reader036.vdocument.in/reader036/viewer/2022062517/5681366d550346895d9dfbdd/html5/thumbnails/10.jpg)
Kroenke, Database Processing 10
INSERT on Views
CREATE VIEW CustomerV AS
SELECT *
FROM Customers
INSERT INTO CustomerV
VALUES(‘08’,’Scott White’,’DC’,’401-456-3415’)
CustID CustName Address Phone
01 Amy Gale Annapolis 410-293-5234
02 Tom Smith Baltimore, MD 443-5674-7899
05 Chris O’Neal Annapolis, MD - 21402
410-295-6583
CustID CustName Address Phone
01 Amy Gale Annapolis 410-123-1234
02 Tom Smith Baltimore, MD 443-5674-7899
05 Chris O’Neal Annapolis, MD - 21402
410-295-6583
08 Scott White DC 401-456-3415
Customers table
Customers table after insert:
INSERT impacts the Customers table
![Page 11: IT420: Database Management and Organization](https://reader036.vdocument.in/reader036/viewer/2022062517/5681366d550346895d9dfbdd/html5/thumbnails/11.jpg)
Kroenke, Database Processing 11
DELETE on Views
CREATE VIEW CustomerV AS
SELECT *
FROM Customers
DELETE FROM CustomerV
WHERE Address LIKE ‘%Annapolis%’
CustID CustName Address Phone
01 Amy Gale Annapolis 410-293-5234
02 Tom Smith Baltimore, MD 443-5674-7899
05 Chris O’Neal Annapolis, MD - 21402
410-295-6583
CustID CustName Address Phone
02 Tom Smith Baltimore, MD 443-5674-7899
Customers table
Customers table after delete:
DELETE impacts the Customers table
![Page 12: IT420: Database Management and Organization](https://reader036.vdocument.in/reader036/viewer/2022062517/5681366d550346895d9dfbdd/html5/thumbnails/12.jpg)
Kroenke, Database Processing 12
Using Views – Case 2
Customer(CustID, CustName, Address, Phone)
CREATE VIEW CustomerV2 AS
SELECT CustID, CustName, Phone
FROM Customers
SELECT *
FROM CustomerV2
CustID CustName Address Phone
01 Amy Gale Annapolis, MD 410-293-5234
02 Tom Smith Baltimore, MD 443-5674-7899
05 Chris O’Neal Annapolis, MD - 21402
410-295-6583
CustID CustName Phone
01 Amy Gale 410-293-5234
02 Tom Smith 443-5674-7899
05 Chris O’Neal 410-295-6583
Customers
SELECT * FROM CustomerV2 query result:
![Page 13: IT420: Database Management and Organization](https://reader036.vdocument.in/reader036/viewer/2022062517/5681366d550346895d9dfbdd/html5/thumbnails/13.jpg)
Kroenke, Database Processing 13
INSERT on Views - Case 2
CREATE VIEW CustomerV2 AS
SELECT CustID, CustName, Phone
FROM Customers
INSERT INTO CustomerV2
VALUES(‘08’,’Scott White’,’401-456-3415’)
CustID CustName Address Phone
01 Amy Gale Annapolis 410-293-5234
02 Tom Smith Baltimore, MD 443-5674-7899
05 Chris O’Neal Annapolis, MD - 21402
410-295-6583
CustID CustName Address Phone
01 Amy Gale Annapolis 410-123-1234
02 Tom Smith Baltimore, MD 443-5674-7899
05 Chris O’Neal Annapolis, MD - 21402
410-295-6583
08 Scott White NULL 401-456-3415
Customers table
Customers table after insert:
Address NOT NULL, INSERT fails
![Page 14: IT420: Database Management and Organization](https://reader036.vdocument.in/reader036/viewer/2022062517/5681366d550346895d9dfbdd/html5/thumbnails/14.jpg)
Kroenke, Database Processing 14
Views – Case 3 Rental(RentalID, CustID,
PlaneID, NbHours, HRate)
CREATE VIEW RentalView ASSELECT RentalID, CustID,
PlaneID, NbHours*HRate AS Charge
FROM Rental
SELECT * FROM RentalView
RentalID CustID PlaneID NbHours HRate
01 111 01 3 $400
02 111 13 7 $250
05 112 01 1 $420
RentalID CustID PlaneID Charge
01 111 01 $1200
02 111 13 $1750
05 112 01 $420
Rental
SELECT * FROM RentalView query result:
![Page 15: IT420: Database Management and Organization](https://reader036.vdocument.in/reader036/viewer/2022062517/5681366d550346895d9dfbdd/html5/thumbnails/15.jpg)
Kroenke, Database Processing 15
INSERT on Views – Case 3 CREATE VIEW RentalView
ASSELECT RentalID, CustID,
PlaneID, NbHours*HRate AS Charge
FROM Rental
INSERT INTO RentalViewVALUES (03,113,01,1250)
INSERT fails!
UPDATE Charge fails!
RentalID CustID PlaneID NbHours HRate
01 111 01 3 $400
02 111 13 7 $250
05 112 01 1 $420
RentalID CustID PlaneID Charge
01 111 01 $1200
02 111 13 $1750
05 112 01 $420
Rental
SELECT * FROM RentalView query result:
![Page 16: IT420: Database Management and Organization](https://reader036.vdocument.in/reader036/viewer/2022062517/5681366d550346895d9dfbdd/html5/thumbnails/16.jpg)
Kroenke, Database Processing 16
Updateable Views
Views based on a single table No computed columns All non-null columns present in view
Views with INSTEAD OF triggers defined on them
Views based on a single table, primary key in view, some non-null columns missing from view Updates for non-computed columns ok Deletes ok Inserts not ok
![Page 17: IT420: Database Management and Organization](https://reader036.vdocument.in/reader036/viewer/2022062517/5681366d550346895d9dfbdd/html5/thumbnails/17.jpg)
Kroenke, Database Processing 17
Triggers
Trigger: stored program that is executed by the DBMS whenever a specified event occurs
Associated with a table or view Three trigger types: BEFORE, INSTEAD
OF, and AFTER Each type can be declared for INSERT,
UPDATE, and DELETE Resulting in a total of nine trigger types
![Page 18: IT420: Database Management and Organization](https://reader036.vdocument.in/reader036/viewer/2022062517/5681366d550346895d9dfbdd/html5/thumbnails/18.jpg)
Kroenke, Database Processing 18
Programming Languages for Triggers Depends on DBMS
Java or PL/SQL for Oracle T-SQL for SQL Server
C++, C#, Visual Basic .NET for SQL Server 2005
![Page 19: IT420: Database Management and Organization](https://reader036.vdocument.in/reader036/viewer/2022062517/5681366d550346895d9dfbdd/html5/thumbnails/19.jpg)
Kroenke, Database Processing 19
Firing Triggers
When a trigger is fired, the DBMS supplies: Old and new values for the update New values for inserts Old values for deletions
The way the values are supplied depends on the DBMS product
Trigger applications: Provide default values Enforce data constraints Update views Perform referential integrity actions
![Page 20: IT420: Database Management and Organization](https://reader036.vdocument.in/reader036/viewer/2022062517/5681366d550346895d9dfbdd/html5/thumbnails/20.jpg)
Kroenke, Database Processing 20
Create trigger
CREATE TRIGGER trigger_name
ON table_or_view_name
AFTER | BEFORE | INSTEAD OF
INSERT | UPDATE | DELETE
AS
trigger_code
![Page 21: IT420: Database Management and Organization](https://reader036.vdocument.in/reader036/viewer/2022062517/5681366d550346895d9dfbdd/html5/thumbnails/21.jpg)
Kroenke, Database Processing 21
Trigger for Complex Default Value
Trans(TransactionID, WorkID, AcquisitionPrice, AskingPrice)
ArtistWorkNet(SaleID, WorkID, NetPrice)
AskingPrice = max of 2*AcquisitionPrice AcquisitionPrice+AVG(Past_NetPrice), if
WorkID already in table
![Page 22: IT420: Database Management and Organization](https://reader036.vdocument.in/reader036/viewer/2022062517/5681366d550346895d9dfbdd/html5/thumbnails/22.jpg)
Kroenke, Database Processing 22
Declare variables
Create trigger
Built-in function
![Page 23: IT420: Database Management and Organization](https://reader036.vdocument.in/reader036/viewer/2022062517/5681366d550346895d9dfbdd/html5/thumbnails/23.jpg)
Kroenke, Database Processing 23
![Page 24: IT420: Database Management and Organization](https://reader036.vdocument.in/reader036/viewer/2022062517/5681366d550346895d9dfbdd/html5/thumbnails/24.jpg)
Kroenke, Database Processing 24
Trigger for Referential Integrity Actions – generic code
![Page 25: IT420: Database Management and Organization](https://reader036.vdocument.in/reader036/viewer/2022062517/5681366d550346895d9dfbdd/html5/thumbnails/25.jpg)
Kroenke, Database Processing 25
Class Exercise
Students(Alpha, LName, FName, GPA) Enroll(Alpha, CourseID, Semester, Grade) GradeValues(LetterGrade, PointValue)
Define a trigger to update the GPA every time the student gets a new grade, or a grade changes
![Page 26: IT420: Database Management and Organization](https://reader036.vdocument.in/reader036/viewer/2022062517/5681366d550346895d9dfbdd/html5/thumbnails/26.jpg)
Kroenke, Database Processing 26
Stored Procedures
A stored procedure is a program that is stored within the database and is compiled when used In Oracle, it can be written in PL/SQL or Java In SQL Server, it can be written in TRANSACT-SQL
Stored procedures can receive input parameters and they can return results
Stored procedures can be called from: Programs written in standard languages, e.g., Java, C# Scripting languages, e.g., JavaScript, VBScript SQL command prompt, e.g., SQL*Plus, Query Analyzer
![Page 27: IT420: Database Management and Organization](https://reader036.vdocument.in/reader036/viewer/2022062517/5681366d550346895d9dfbdd/html5/thumbnails/27.jpg)
Kroenke, Database Processing 27
Stored Procedure Advantages
Greater security as store procedures are always stored on the database server
SQL can be optimized by the DBMS compiler Code sharing resulting in:
Less work Standardized processing Specialization among developers
![Page 28: IT420: Database Management and Organization](https://reader036.vdocument.in/reader036/viewer/2022062517/5681366d550346895d9dfbdd/html5/thumbnails/28.jpg)
Kroenke, Database Processing 28
![Page 29: IT420: Database Management and Organization](https://reader036.vdocument.in/reader036/viewer/2022062517/5681366d550346895d9dfbdd/html5/thumbnails/29.jpg)
Kroenke, Database Processing 29
Triggers vs. Stored Procedures
![Page 30: IT420: Database Management and Organization](https://reader036.vdocument.in/reader036/viewer/2022062517/5681366d550346895d9dfbdd/html5/thumbnails/30.jpg)
Kroenke, Database Processing 30
Project 1 – Due March 3, 2006
National College Learning Center Organization (NCLCA) www.nclca.org Membership Conferences organized
Have: Partial user requirements (forms) Tasks:
Design the ER model Transform ER model to tables Verify tables are normalized Write SQL to create the tables in SQL Server Write SQL to answer typical user queries Write-up explaining your work