Views, Stored Procedures, Functions, and Triggers
Download MySQL from this link: [Link] and
install.
Views in SQL
• A view is a “virtual” table that is derived from other tables
• Allows for limited update operations
• Since the table may not physically be stored
• Allows full query operations
SQL Views: An Example
• Create a view for Department Managers:
CREATE VIEW MANAGER AS
SELECT FNAME, LNAME, DName, Dnumber, SALARY
FROM EMPLOYEE, DEPARTMENT
WHERE SSN=MGRSSN AND DNO=DNUMBER;
Select * from MANAGER;
• Find employees who earn more than their managers
SELECT [Link], [Link]
FROM EMPLOYEE E, MANAGER M
WHERE [Link]=[Link] AND [Link] > [Link];
• When no longer needed, a view can be dropped:
DROP VIEW MANAGER;
Stored Procedures in MySQL
• A stored procedure contains a sequence of SQL commands stored in the database catalog so
that it can be invoked later by a program
• Stored procedures are declared using the following syntax:
Create Procedure <proc-name>
(param_spec1, param_spec2, …, param_specn )
begin
-- execution code
end;
where each param_spec is of the form:
[in | out | inout] <param_name> <param_type>
• in mode: allows you to pass values into the procedure,
• out mode: allows you to pass value back from procedure to the calling program
[Note: Uncheck the safe updates checkbox as following, if it is checked/enabled by default]
Example: Create employee, department tables and insert values as given in the following tables.
• Suppose we want to keep track of the total salaries of employees working for each
department
Step 1: Change the delimiter (i.e., terminating character) of SQL statement from semicolon (;) to
something else (e.g., //)
So that you can distinguish between the semicolon of the SQL statements in the procedure and the
terminating character of the procedure definition
Step 2:
1. Define a procedure called updateSalary which takes as input a department number.
2. The body of the procedure is an SQL command to update the totalsalary column of the
deptsal table.
3. Terminate the procedure definition using the delimiter you had defined in step 1 (//)
Step 3: Change the delimiter back to semicolon (;)
Step 4: Call the procedure to update the totalsalary for each department
Step 5: Show the updated total salary in the deptsal table
Functions
• Functions are declared using the following syntax:
function <function-name> (param_spec1, …, param_speck)
returns <return_type>
[not] deterministic allow optimization if same output
for the same input (use RAND not deterministic )
Begin
-- execution code
end;
where param_spec is:
[in | out | in out] <param_name> <param_type>
• You need ADMIN privilege to create functions on mysql-user server
Example of Functions
SQL Triggers
• To monitor a database and take a corrective action when a condition occurs
• Examples:
• Charge $10 overdraft fee if the balance of an account after a withdrawal
transaction is less than $500
• Limit the salary increase of an employee to no more than 5% raise
CREATE TRIGGER trigger-name
trigger-time trigger-event
ON table-name
FOR EACH ROW
trigger-action;
• trigger-time {BEFORE, AFTER}
• trigger-event {INSERT,DELETE,UPDATE}
SQL Triggers: An Example
• We want to create a trigger to update the total salary of a department when a new
employee is hired
• Create a trigger to update the total salary of a department when a new employee is hired:
The keyword “new” refers to the new row inserted
SQL Triggers: An Example
• A trigger to update the total salary of a department when an employee tuple is modified:
SQL Triggers: An Example
• A trigger to update the total salary of a department when an employee tuple is deleted:
• To list all the triggers you have created:
mysql> show triggers;