IT420: Database Management and Organization
300 likes | 400 Vues
Learn about SQL views, triggers, and stored procedures for efficient database organization and management. Understand how to create views, use triggers, and implement procedures for enhanced data handling.
IT420: Database Management and Organization
E N D
Presentation Transcript
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 Kroenke, Database Processing
Today • Updates on views • Triggers • Stored procedures Kroenke, Database Processing
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 Kroenke, Database Processing
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 Kroenke, Database Processing
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 Kroenke, Database Processing
Using Views Customers • Customer(CustID, CustName, Address, Phone) • CREATE VIEW CustomerV AS SELECT * FROM Customers • SELECT * FROM CustomerV SELECT * FROM CustomerV query result: Kroenke, Database Processing
Using Views Customers • CREATE VIEW CustomerV AS SELECT * FROM Customers • SELECT * FROM CustomerV WHERE Address LIKE ‘%Annapolis%’ SELECT query result: Kroenke, Database Processing
UPDATE on Views Customers table before update: • CREATE VIEW CustomerV AS SELECT * FROM Customers • UPDATE CustomerV SET Phone = ‘410-123-1234’ WHERE CustID = 01 Customers table after update: UPDATE impacts the Customers table Kroenke, Database Processing
INSERT on Views Customers table • CREATE VIEW CustomerV AS SELECT * FROM Customers • INSERT INTO CustomerV VALUES(‘08’,’Scott White’,’DC’,’401-456-3415’) Customers table after insert: INSERT impacts the Customers table Kroenke, Database Processing
DELETE on Views Customers table • CREATE VIEW CustomerV AS SELECT * FROM Customers • DELETE FROM CustomerV WHERE Address LIKE ‘%Annapolis%’ Customers table after delete: DELETE impacts the Customers table Kroenke, Database Processing
Using Views – Case 2 Customers • Customer(CustID, CustName, Address, Phone) • CREATE VIEW CustomerV2 AS SELECT CustID, CustName, Phone FROM Customers • SELECT * FROM CustomerV2 SELECT * FROM CustomerV2 query result: Kroenke, Database Processing
INSERT on Views - Case 2 Customers table • CREATE VIEW CustomerV2 AS SELECT CustID, CustName, Phone FROM Customers • INSERT INTO CustomerV2 VALUES(‘08’,’Scott White’,’401-456-3415’) Customers table after insert: Address NOT NULL, INSERT fails Kroenke, Database Processing
Views – Case 3 Rental • Rental(RentalID, CustID, PlaneID, NbHours, HRate) • CREATE VIEW RentalView AS SELECT RentalID, CustID, PlaneID, NbHours*HRate AS Charge FROM Rental • SELECT * FROM RentalView SELECT * FROM RentalView query result: Kroenke, Database Processing
INSERT on Views – Case 3 Rental • 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! SELECT * FROM RentalView query result: Kroenke, Database Processing
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 Kroenke, Database Processing
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 Kroenke, Database Processing
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 Kroenke, Database Processing
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 Kroenke, Database Processing
Create trigger • CREATE TRIGGER trigger_name ON table_or_view_name AFTER | BEFORE | INSTEAD OF INSERT | UPDATE | DELETE AS trigger_code Kroenke, Database Processing
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 Kroenke, Database Processing
Create trigger Declare variables Built-in function Kroenke, Database Processing
Trigger for Referential Integrity Actions – generic code Kroenke, Database Processing
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 Kroenke, Database Processing
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 Kroenke, Database Processing
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 Kroenke, Database Processing
Triggers vs. Stored Procedures Kroenke, Database Processing
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 Kroenke, Database Processing