Download presentation
Presentation is loading. Please wait.
Published byReynold King Modified over 9 years ago
1
1 IT420: Database Management and Organization SQL Views, Triggers and Stored Procedures 17 February 2006 Adina Crăiniceanu www.cs.usna.edu/~adina
2
Kroenke, Database Processing2 Last time SQL Views
3
Kroenke, Database Processing3 Today Updates on views Triggers Stored procedures
4
Kroenke, Database Processing4 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
5
Kroenke, Database Processing5 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
6
Kroenke, Database Processing6 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
7
Kroenke, Database Processing7 Using Views Customer(CustID, CustName, Address, Phone) CREATE VIEW CustomerV AS SELECT * FROM Customers SELECT * FROM CustomerV CustIDCustNameAddressPhone 01Amy GaleAnnapolis, MD410-293-5234 02Tom SmithBaltimore, MD443-5674-7899 05Chris O’NealAnnapolis, MD - 21402 410-295-6583 CustIDCustNameAddressPhone 01Amy GaleAnnapolis, MD410-293-5234 02Tom SmithBaltimore, MD443-5674- 7899 05Chris O’NealAnnapolis, MD - 21402 410-295-6583 Customers SELECT * FROM CustomerV query result:
8
Kroenke, Database Processing8 Using Views CREATE VIEW CustomerV AS SELECT * FROM Customers SELECT * FROM CustomerV WHERE Address LIKE ‘%Annapolis%’ CustIDCustNameAddressPhone 01Amy GaleAnnapolis, MD410-293-5234 02Tom SmithBaltimore, MD443-5674-7899 05Chris O’NealAnnapolis, MD - 21402 410-295-6583 CustIDCustNameAddressPhone 01Amy GaleAnnapolis, MD410-293-5234 05Chris O’NealAnnapolis, MD - 21402 410-295-6583 Customers SELECT query result:
9
Kroenke, Database Processing9 UPDATE on Views CREATE VIEW CustomerV AS SELECT * FROM Customers UPDATE CustomerV SET Phone = ‘410-123-1234’ WHERE CustID = 01 CustIDCustNameAddressPhone 01Amy GaleAnnapolis410-293-5234 02Tom SmithBaltimore, MD443-5674-7899 05Chris O’NealAnnapolis, MD - 21402 410-295-6583 CustIDCustNameAddressPhone 01Amy GaleAnnapolis410-123-1234 02Tom SmithBaltimore, MD443-5674- 7899 05Chris O’NealAnnapolis, MD - 21402 410-295-6583 Customers table before update: Customers table after update: UPDATE impacts the Customers table
10
Kroenke, Database Processing10 INSERT on Views CREATE VIEW CustomerV AS SELECT * FROM Customers INSERT INTO CustomerV VALUES(‘08’,’Scott White’,’DC’,’401-456-3415’) CustIDCustNameAddressPhone 01Amy GaleAnnapolis410-293-5234 02Tom SmithBaltimore, MD443-5674-7899 05Chris O’NealAnnapolis, MD - 21402 410-295-6583 CustIDCustNameAddressPhone 01Amy GaleAnnapolis410-123-1234 02Tom SmithBaltimore, MD443-5674- 7899 05Chris O’NealAnnapolis, MD - 21402 410-295-6583 08Scott WhiteDC401-456-3415 Customers table Customers table after insert: INSERT impacts the Customers table
11
Kroenke, Database Processing11 DELETE on Views CREATE VIEW CustomerV AS SELECT * FROM Customers DELETE FROM CustomerV WHERE Address LIKE ‘%Annapolis%’ CustIDCustNameAddressPhone 01Amy GaleAnnapolis410-293-5234 02Tom SmithBaltimore, MD443-5674-7899 05Chris O’NealAnnapolis, MD - 21402 410-295-6583 CustIDCustNameAddressPhone 02Tom SmithBaltimore, MD443-5674- 7899 Customers table Customers table after delete: DELETE impacts the Customers table
12
Kroenke, Database Processing12 Using Views – Case 2 Customer(CustID, CustName, Address, Phone) CREATE VIEW CustomerV2 AS SELECT CustID, CustName, Phone FROM Customers SELECT * FROM CustomerV2 CustIDCustNameAddressPhone 01Amy GaleAnnapolis, MD410-293-5234 02Tom SmithBaltimore, MD443-5674-7899 05Chris O’NealAnnapolis, MD - 21402 410-295-6583 CustIDCustNamePhone 01Amy Gale410-293-5234 02Tom Smith443-5674-7899 05Chris O’Neal410-295-6583 Customers SELECT * FROM CustomerV2 query result:
13
Kroenke, Database Processing13 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’) CustIDCustNameAddressPhone 01Amy GaleAnnapolis410-293-5234 02Tom SmithBaltimore, MD443-5674-7899 05Chris O’NealAnnapolis, MD - 21402 410-295-6583 CustIDCustNameAddressPhone 01Amy GaleAnnapolis410-123-1234 02Tom SmithBaltimore, MD443-5674- 7899 05Chris O’NealAnnapolis, MD - 21402 410-295-6583 08Scott WhiteNULL401-456-3415 Customers table Customers table after insert: Address NOT NULL, INSERT fails
14
Kroenke, Database Processing14 Views – Case 3 Rental(RentalID, CustID, PlaneID, NbHours, HRate) CREATE VIEW RentalView AS SELECT RentalID, CustID, PlaneID, NbHours*HRate AS Charge FROM Rental SELECT * FROM RentalView RentalIDCustIDPlaneIDNbHoursHRate 01111013$400 02111137$250 05112011$420 RentalIDCustIDPlaneIDCharge 0111101$1200 0211113$1750 0511201$420 Rental SELECT * FROM RentalView query result:
15
Kroenke, Database Processing15 INSERT on Views – Case 3 CREATE VIEW RentalView AS SELECT RentalID, CustID, PlaneID, NbHours*HRate AS Charge FROM Rental INSERT INTO RentalView VALUES (03,113,01,1250) INSERT fails! UPDATE Charge fails! RentalIDCustIDPlaneIDNbHoursHRate 01111013$400 02111137$250 05112011$420 RentalIDCustIDPlaneIDCharge 0111101$1200 0211113$1750 0511201$420 Rental SELECT * FROM RentalView query result:
16
Kroenke, Database Processing16 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
17
Kroenke, Database Processing17 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
18
Kroenke, Database Processing18 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
19
Kroenke, Database Processing19 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
20
Kroenke, Database Processing20 Create trigger CREATE TRIGGER trigger_name ON table_or_view_name AFTER | BEFORE | INSTEAD OF INSERT | UPDATE | DELETE AS trigger_code
21
Kroenke, Database Processing21 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
22
Kroenke, Database Processing22 Declare variables Create trigger Built-in function
23
Kroenke, Database Processing23
24
Kroenke, Database Processing24 Trigger for Referential Integrity Actions – generic code
25
Kroenke, Database Processing25 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
26
Kroenke, Database Processing26 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
27
Kroenke, Database Processing27 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
28
Kroenke, Database Processing28
29
Kroenke, Database Processing29 Triggers vs. Stored Procedures
30
Kroenke, Database Processing30 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
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.