Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 IT420: Database Management and Organization SQL Views, Triggers and Stored Procedures 17 February 2006 Adina Crăiniceanu www.cs.usna.edu/~adina.

Similar presentations


Presentation on theme: "1 IT420: Database Management and Organization SQL Views, Triggers and Stored Procedures 17 February 2006 Adina Crăiniceanu www.cs.usna.edu/~adina."— Presentation transcript:

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


Download ppt "1 IT420: Database Management and Organization SQL Views, Triggers and Stored Procedures 17 February 2006 Adina Crăiniceanu www.cs.usna.edu/~adina."

Similar presentations


Ads by Google