Lab Manuals DDBS
Lab Manuals DDBS
Lab Manuals DDBS
Lab Manual
Distributed
Database Systems
A simplified practical work book of Distributed Database management System
course for Computer Science, Information Technology and Software
Engineering students
Student Name:______________________________________
Registration No:___________________________________
Learning Objectives: By the end of the lab work, students should have following skills;
Query List:
List of all queries of Database Management System course are given below
1- Select Statement
a. Columns
b. AS
c. Arithmetic operators ( + , - , *, / )
d. Convert
e. Top
f. Percent
g. Distinct
2- Where Statement
a. AND / OR
b. IN
c. BETWEEN
d. NOT
e. LIKE / [ ] / ^
3- ORDER by
4- Aggregate Functions
a. SUM
b. COUNT
c. MAX
d. MIN
e. AVG
5- Group By
6- Having
7- Sub Query
8- Create
a. Database
b. Table
9- Add Constraints
a. PRIMARY KEY
b. FOREIGN KEY
c. CHECK
d. DEFAULT
10- INSERT / UPDATE / DELETE
11- ALTER
a. Add Column / Drop Column
b. Add Constraint / Drop Constraint
c. Change Data-Type Column
Query Examples:
Assume given table.
Employee( eid, eName, eAge, eCity, eStreet, eHouseno, eSalary, eBonus, eDepart)
Project ( pid, pName, pBonus, pDuration, eid)
1- SELECT
SELECT * FROM Employee
Above Query will display all rows and columns of Employee Table
2- WHERE
SELECT * FROM Employee WHERE EID = 101
- Displays all data of those employees whose id is 101
SELECT * FROM Employee WHERE ESALARY > 10000 AND ECITY = ‘ISB’
- Displays all those employees who live in ‘isb’ and their salary is above 10000
3- ORDER BY
4- AGGREGATE FUNCTIONS
SELECT COUNT(*) FROM Employee
- Display total number of rows in employee table. Column name will appear as ‘No Column’
5- GROUP BY / HAVING
SELECT eCity, COUNT(*) FROM Employee GROUP BY eCity
- Displays total number of employees of each city.
6- SUB QUERY
SELECT eName FROM Employee where eid IN (SELECT EID FROM PROJECT)
- Displays names of all those employees who have been assigned any project.
SELECT * FROM Employee where eid IN ( SELECT eid FROM PROJECT WHERE pBonus>
50000)
- Displays data of all those employees who are assigned any project and project bonus is more than 50000.
DELETE EMPLOYEE
- Delete all data of employee. ( it will not delete table, only data of table)
9- ALTER
ALTER TABLE EMPLOYEE
ADD ERANK VARCHAR(20)
- Add new column to employee table of “eRank”
EXAMPLE
ALTER TABLE EMPLOYEE
DROP CONSTRAINT CHK
- Above query is to drop any type of constraint.
TASK 1.1
4- Display data of employees who lives in “isb or rwp or khi or lhr”. (do not use or keyword)
5- Display those employees whose age is more than 18 and less than 33. (do not use relational
operators “ > or <”.
6- Display all those employees whose name starts with “S” and does not contain “I” in it.
8- Display All employees of “isb”. Employees must be displayed from younger to older. Younger
first and older later.
9- Display name of employee and total salary of employee. (total salary is sum of basic salary and
bonus)
12- Display Total expenditures of company. (total expenditures = basic salary + bonus of employee +
all project bonus)
15- Display total expenditures of only those departments whose total expenditures are more than 1
Million. (total expenditures = sum of basic salary of all employees of that department)
18- Insert a record in employee table, ( you must not enter edepartment and ebonus).
19- change basic salary of all employees, add increment of 5% to all.
22- Assume that you forgot to add primary key in Employee table, write a code that add a primary
key in employee table.
LAB # 2
UNION
The SQL UNION operator is used to combine the result sets of 2 or more SELECT statements. It removes
duplicate rows between the various SELECT statements.
Each SELECT statement within the UNION must have the same number of fields in the result sets with
similar data types.
Syntax
The syntax for the UNION operator in SQL is:
Parameters or Arguments
expression1, expression2, expression_n
The columns or calculations that you wish to retrieve.
TABLES:
The tables that you wish to retrieve records from. There must be at least one table listed in the FROM
clause.
WHERE conditions:
Optional. The conditions that must be met for the records to be selected.
Note:
- There must be same number of expressions in both SELECT statements.
- The corresponding expressions must have the same data type in the SELECT statements. For
example: expression1 must be the same data type in both the first and second SELECT statement.
SELECT supplier_id
FROM suppliers
UNION
SELECT supplier_id
FROM orders
ORDER BY supplier_id;
If you had the suppliers table populated with the following records:
supplier_id supplier_name
1000 Microsoft
2000 Oracle
3000 Apple
4000 Samsung
1 2015-08-01 2000
2 2015-08-01 6000
3 2015-08-02 7000
order_id order_date supplier_id
4 2015-08-03 8000
supplier_id
1000
2000
3000
4000
6000
7000
8000
As you can see in this example, the UNION has taken all supplier_id values from both
the suppliers table as well as the orders table and returned a combined result set. Because the
UNION operator removed duplicates between the result sets, the supplier_id of 2000 only
appears once, even though it is found in both the suppliersand orders table. If you do not wish
to remove duplicates, try using the UNION ALL operator instead.
For example:
In this SQL UNION example, since the column names are different between the two
SELECT statements, it is more advantageous to reference the columns in the ORDER BY
clause by their position in the result set. In this example, we've sorted the results by supplier_id /
company_id in ascending order, as denoted by the ORDER BY 1. The supplier_id / company_id
fields are in position #1 in the result set.
Now, let's explore this example further with data.
If you had the suppliers table populated with the following records:
supplier_id supplier_name
1000 Microsoft
2000 Oracle
3000 Apple
supplier_id supplier_name
4000 Samsung
company_id company_name
1000 Microsoft
3000 Apple
7000 Sony
8000 IBM
supplier_id supplier_name
3000 Apple
4000 Samsung
7000 Sony
8000 IBM
First, notice that the record with supplier_id of 3000 only appears once in the result set because
the UNION query removed duplicate entries.
Second, notice that the column headings in the result set are
called supplier_id and supplier_name. This is because these were the column names used in
the first SELECT statement in the UNION.
If you had wanted to, you could have aliased the columns as follows:
FROM suppliers
UNION
FROM companies
ORDER BY 1;
Now the column headings in the result will be aliased as ID_Value for the first column
and Name_Value for the second column.
ID_Value Name_Value
3000 Apple
4000 Samsung
7000 Sony
8000 IBM
INTERSECTION:
The SQL INTERSECT operator is used to return the results of 2 or more SELECT statements. However, it only
returns the rows selected by all queries or data sets. If a record exists in one query and not in the other, it will be
omitted from the INTERSECT results.
Explanation: The INTERSECT query will return the records in the blue shaded area. These are the
records that exist in both Dataset1 and Dataset2.
Each SQL statement within the SQL INTERSECT must have the same number of fields in the result sets
with similar data types.
NOTE: All rules are same for UNION and INTERSECTION except output.
Examples
1000 Microsoft
2000 Oracle
3000 Apple
4000 Samsung
1 2015-08-01 2000
2 2015-08-01 6000
3 2015-08-02 7000
order_id order_date supplier_id
4 2015-08-03 8000
supplier_id
2000
Example 2:
If you had the suppliers table populated with the following records:
supplier_id supplier_name
1000 Microsoft
2000 Oracle
3000 Apple
4000 Samsung
company_id company_name
1000 Microsoft
company_id company_name
3000 Apple
4000 Sony
8000 Samsung
supplier_id supplier_name
3000 Apple
1000 Microsoft
SET DIFFERENCE:
The SQL EXCEPT operator is used to return all rows in the first SELECT statement that are not returned
by the second SELECT statement. Each SELECT statement will define a dataset. The EXCEPT operator
will retrieve all records from the first dataset and then remove from the results all records from the second
dataset.
Except Query
Explanation: The EXCEPT query will return the records in the blue shaded area. These are the records
that exist in Dataset1 and not in Dataset2.
Each SELECT statement within the EXCEPT query must have the same number of fields in the result sets
with similar data types.
NOTE: All rules of SET DIFFERENCE and UNION are same except OUTPUT.
Examples:
1000 Microsoft
2000 Oracle
3000 Apple
4000 Samsung
1 2015-08-01 2000
2 2015-08-01 3000
3 2015-08-02 7000
4 2015-08-03 8000
supplier_id
1000
4000
Example 2:
If you had the suppliers table populated with the following records:
supplier_id supplier_name
1000 Microsoft
2000 Oracle
3000 Apple
4000 Samsung
company_id company_name
1000 Microsoft
company_id company_name
3000 Apple
4000 Sony
8000 Samsung
supplier_id supplier_name
2000 Oracle
4000 Samsung
TASK 2.1
Assume that you have following database relations.
BIIT_Student( CNIC, sName, sAge, sCity, Semester)
NUST_Student( CNIC, sName, sAge, sCity, Semester, phoneNo)
UAAR_Student( CNIC, sName, sAge,CGPA, sCity, Semester)
1- Display all CNIC numbers of BIIT students and NUST students. CNIC number must not repeat.
2- Display distinct student names from all above three tables.
3- Display all those students who are studying in BIIT and UAAR at the same time.
4- Display names of those student who are only studying in BIIT but not in NUST.
5- Display all data of students of BIIT who are also enrolled in UAAR and NUST at the same time.
6- Display list of all cities from all tables. ( city name must not repeat)
8- Display total number of students of BIIT who are only enrolled in BIIT.
9- Display total number of students who are enrolled in all three universities.
10- Display all those students of NUST who are also enrolled in BIIT but not in UAAR.
LAB # 3
Objectives:
This lab manual will teach students about Cartesian Product.
Project:
(above query is displaying names of all those employees who have been assigned any
project).
Conclusion:
Cartesian product is used whenever data from multiple tables is required to be viewed.
TASK 3.1
2- Display student name and ccode of all those students who have ‘F’ grade in 5th semester.
3- Display data of all those students who have enrolled at least 10 courses.
7- Display list of courses which are taught in 7th semester. (course name must not repeat)
8- Display list of all students by name and course name they have enrolled.
10- Display all those students who have not enrolled any course yet.
LAB # 4
JOINS
A JOIN clause is used to combine rows from two or more tables, based on a related
column between them.
JOIN condition is written by “ON” keyword. However where can be used but not for
joining purpose.
• (INNER) JOIN: Returns records that have matching values in both tables
• LEFT (OUTER) JOIN: Return all records from the left table, and the matched
records from the right table
• RIGHT (OUTER) JOIN: Return all records from the right table, and the
matched records from the left table
• FULL (OUTER) JOIN: Return all records when there is a match in either left or
right table
Project:
INNER JOIN
It displays only those records of both tables where condition is true.
SELECT * from Employee e INNER JOIN Project p ON e.eid = p.eid
OUTPUT:
LEFT JOIN
It displays all records of left table and those records of right tables where condition is true.
SELECT * from Employee e LEFT JOIN Project p ON e.eid = p.eid
OUTPUT:
RIGHT JOIN:
It displays all records of RIGHT table and those records of LEFT tables where condition is true.
SELECT * from Employee e RIGHT JOIN Project p ON e.eid = p.eid
OUTPUT:
OUTPUT:
Example Query:
selecte.ename,p.pname,p.PBONfromemployeee
innerjoinprojectpone.eid=p.eid
wheree.ecity='isb'
orderbye.ename
OUTPUT:
TASK 4.1
2- Display student name and ccode of all those students who have ‘F’ grade in 5th semester.
3- Display data of all those students who have enrolled at least 10 courses.
5- Display all courses of ‘Amir’ along with grade, also display names of courses which are not yet
enrolled by ‘Amir’.
6- Display course names along with number of enrolled student in it. If no one has yet enrolled that
particular course, it must display ‘0’ in number of enrollment column.
7- Display list of courses which are taught in 7th semester. (course name must not repeat)
8- Display list of all students by name and course name they have enrolled.
9- Display names of students and names of courses they have enrolled. Also display student’s name
that have not enrolled any course yet.
10- Display all those students who have not enrolled any course yet.
LAB # 5
Objectives:
- Variable Declaration / Usage / Assignment in SQL
- Condition Statements
- LOOP in SQL
- Stored Procedure
Following is the example of variable declaration with condition statement and loops.
For example:
DECLARE @NAME VARCHAR(20) , @AGE INT
SET @NAME = ‘SHAH NAWAZ’
SET @AGE = 34
PRINT @NAME
PRINT @AGE
OUTPUT:
SHAH NAWAZ
34
“Print statement displays data by default in new line”.
OUTPUT:
STORED PROCEDURE:
- Stored procedures are just like functions in programming.
- Used to store query to save time of writing query again and again.
- It reduces chances of errors.
- Once created, stored procedures remains in database until dropped.
EXEC procedure_name
Example 1:
CREATEPROCPRINT_NAME
AS
PRINT'MY COUNTRY NAME IS PAKISTAN'
-- EXECUTING PROCEDURE
EXECPRINT_NAME
OUTPUT:
Example 2:
CREATEPROCISB_EMPLOYEES
AS
BEGIN
SELECT*FROMEMPLOYEEWHEREECITY='ISB'
END
-- EXECUTING PROCEDURE
EXECISB_EMPLOYEES
NOTE: begin / end keywords are used to define BODY of procedure / condition statement / loops. It
is optional to define body of procedure.
OUTPUT:
TASK #5.1
1- Write SQL code which declares two variables for name and address. Store your name and
address in respective variables. Display name and address in a single line using print
statement.
3- Write a code which declares a variable and stores age of youngest employee from
“Employee” table. And display name of youngest employee 5 times his age.
4- Assume that in “Employee” table, Emp_idare assigned from 1 to onward. ie first employee’s
eid is 1, second employee’s eid is 2 and so on. Write a code that displays name of eldest
employee without using aggregate function of “max”. You can use count function once.
LAB# 6
Objectives:
- Stored procedures with arguments
General Syntax:
CREATE PROC NAME_PROC
(@ARGUMENT1 DATATYPE,
@ARGUMENT2 DATATYPE,
@ARGUMENT_ N DATATYPE)
AS
BEGIN
SQL STATEMENT 1
SQL STATEMENT 2
SQL STATEMENT N
END
Example 1:
CREATEPROCNAMES
(
@CITYVARCHAR(20)
)
AS
BEGIN
SELECT*FROMEMPLOYEEWHEREECITY=@CITY
END
-- EXECUTING PROCEDURE
EXECNAMES'RWP'
OUTPUT:
-- EXECUTING PROCEDURE
EXECNAMES'LHR'
OUTPUT:
Example 2:
CREATEPROCINS_EMP
(
@EIDINT,@ENAMEVARCHAR(20),
@CITYVARCHAR(20),@BONUSINT
)
AS
BEGIN
INSERTINTOEMPLOYEEVALUES (@EID,@ENAME,@CITY,@BONUS)
SELECT*FROMEMPLOYEEWHEREEID=@EID
END
-- EXECUTING PROCEDURE
EXECINS_EMP12,'AYESHA','RWP',25000
OUTPUT:
Details:
On calling of stored procedure “INS_EMP”, it stored values in “employee” table and then displayed
values inserted by user.
Example 3:
CREATEPROCINS_EMP_CHK_PRIMARY
(
@EIDINT,@ENAMEVARCHAR(20),
@CITYVARCHAR(20),@BONUSINT
)
AS
BEGIN
DECLARE@COUNTINT;
SET@COUNT=(SELECTCOUNT(*)FROMEMPLOYEEWHEREEID=@EID)
IF(@COUNT=0)
INSERTINTOEMPLOYEEVALUES (@EID,@ENAME,@CITY,@BONUS)
ELSE
PRINT'PRIMARY KEY VIOLATION'
SELECT*FROMEMPLOYEEWHEREEID=@EID
END
-- EXECUTING PROCEDURE
EXECINS_EMP12,'AYESHA','RWP',25000
- Example 3 procedure will check for primary key constraint as well. If eid already exists,
procedure will print ‘PRIMARY KEY VIOLATION’
TASK 6.1
3- Write a stored procedure which insert values in Student table and make sure following constraints
must not violate. (do not apply constraint using SQL server management studio)
a. regNo must not repeat
b. sCGPA must be between 0.0 and 4.0
c. sAge must be between 18 and 25
4- Write a stored procedure which inserts values in Enrollment table and make sure following
constraint must not violate.
a. regNo and cCode combines form primary key. Primary key rule must not violate.
b. regNo and cCode are also foreign keys from Student and Course tables respectively,
make sure foreign key constraint must not violate. Only those values must be entered
which exists in parent tables.
5- Write a Stored procedure which takes regno from user as an argument and displays name of
student and grades of student in each course he/she has enrolled.
LAB # 7
Objectives:
- Learning stored procedures with output parameters
Example 1:
CREATEPROCRET_VAL
(
@VINTOUTPUT
)
AS
BEGIN
SET@V=50
END
-- EXECUTING PROCEDURE
DECLARE@VALINT
SET@VAL=1
PRINT@VAL
EXECRET_VAL@VALOUTPUT
PRINT@VAL
OUTPUT:
Details:
In above stored procedure, an argument is defined as OUTPUT. And its value is set to 50. During calling
of procedure, a variable is declared and assigned value = 1 and printed. After calling, value of same
variable is printed which is “50”.
Example 2:
CREATEPROCGET_SUM
(@VAL1INT,@VAL2INT,@SUMINTOUTPUT)
AS
BEGIN
SET@SUM=@VAL1+@VAL2
END
----------------------------------------
CREATEPROCGET_SQUARE
(@VALINT,@SQINTOUTPUT)
AS
BEGIN
SET@SQ=@VAL*@VAL
END
---------------------------------------
DECLARE@SUMINT,@SQUAREINT
EXECGET_SUM4,5,@SUMOUTPUT
EXECGET_SQUARE@SUM,@SQUAREOUTPUT
PRINT'SUM = ';PRINT@SUM
PRINT'SQUARE = ';PRINT@SQUARE
OUTPUT:
Details:
In above two stored procedures “GET_SUM” and “GET_SQUARE”, output parameters are used to return
values after calculations.
“GET_SUM” stored procedure takes three arguments, one of them is output parameters which will return
sum of first two.
“GET_SQUARE” stored procedure takes two arguments and return square of first value.
TASK # 7.1
Write SQL queries for the given statements.
Consider following Database Schema.
Student( regNo, sName, sCity, sCGPA, sAge)
Course( cCode, cName, credit_hours)
Enrollment (regNo, cCode, semester,quality_points,Grade)
1- Write a stored procedure which takes 3 arguments from user and return maximum of them.
Display maximum value at calling place.
2- Write a stored procedure which returns age and name of student whose registration number is
‘101’.
Transaction:
“sequence of operations performed as a single logical unit of work”.
A transaction has four key properties that are abbreviated ACID. ACID is an acronym for Atomic,
Consistent, Isolated and Durability.
Syntax:
BEGINTRAN
-- SQL STATEMENT 1
-- SQL STATEMENT 2
-- SQL STATEMENT 3
-- SQL STATEMENT N
COMMIT/ROLLBACK
Example 1:
BEGINTRAN
updateemployee
setebonus=50000
whereeid=101
updateemployee
setebonus=23000
whereeid=102
COMMIT
Details:
In above example, begin tran will start a transaction. First update query will update bonus of
employee 101. Second update query will update bonus of employee 102. Here if user thinks that there is
an error or he/she wants to revert all changes performed in transaction. He/she will right “ROLLBACK”
statement instead of “COMMIT”. ROLLBACK will revert all the changes made by both update queries.
On other hand, COMMIT statement will make changes permanent.
Example 2:
BEGINTRAN
INSERTINTOEMPLOYEE
(EID,ENAME,EAGE,EBSAL)VALUES (1,'AMMAD',32,23000)
DECLARE@EINT
SET@E=@@ERROR
UPDATEEMPLOYEE
SETEBON=EBONUS+2000
IF@E<>0
ROLLBACK
ELSE
COMMIT
Details:
In above example, user wants to perform two changes in database.
1- Insert
2- Update
For a transaction, both queries must execute, if one of fail then transaction must “ROLLBACK” so that
database remains unchanged. Insert query can return error in case of “PRIMARY KEY VIOLATION”. In
case insert query returns an error, the global variable of @@ERROR will have value other then “ZERO”.
In Above example, after executing insert statement, value of variable @@ERROR is stored in variable
@E so that it can be used later. If @E has value other than “ZERO”, it means that value is not inserted. In
this case update query must also not execute. If @E has value other than “ZERO”, “ROLLBACK”
statement will execute and remove all changes performed by system.
Task #8.1
Consider following database schema and write SQL query for each of the statement given below.
1- Write a procedure which must insert values in Student table. After insertion, you must check
whether inserted value is stored more than once or not. If count of inserted value exists more than
once, system must ‘ROLLBACK’ and inserted value must be deleted by system.
Triggers:
- Are like functions
- Called by system
o On change on database
▪ INSERT
▪ UPDATE
▪ DELETE
- User cannot call triggers
- Triggers do not have arguments
Types of Triggers:
1- AFTER (INSERT / UPDATE / DELETE)
2- INSTEAD OF (INSERT / UPDATE / DELETE)
AFTER TRIGGER:
- AFTER trigger is called by system after the action is performed.
GENERAL SYNTAX:
CREATE TRIGGER T_NAME
ON <TABLE NAME>
AFTER <EVENT>
AS
BEGIN
SQL STATEMENT 1
SQL STATEMENT 2
SQL STATEMENT N
END
Example 1:
CREATETRIGGERTNAMEONEMP
AFTERINSERT
AS
BEGIN
SELECT*FROMEMP
END
Details:
Above trigger will be called by system whenever data is inserted in “EMP” table of database. In body of
trigger a single select statement is written which will show table of employee.
Example 2:
CREATETRIGGERSH_UPDATEONEMP
AFTERUPDATE
AS
BEGIN
PRINT'DATA HAS BEEN UPDATED'
END
Details:
Above trigger will be executed whenever data is updated in “EMP” table. And “PRINT” statement will
execute after updating data.
Example 3:
CREATETRIGGERDELONEMP
AFTERDELETE
AS
BEGIN
SELECTCOUNT(*)AS'REMAING RECORDS'FROMEMP
END
Details:
Above trigger will be executed whenever data is deleted from “EMP” table. Trigger will display number
of remaining records in “EMP” table after delete.
TASK 9.1
Consider given database schema and write triggers for each statement.
1- A trigger which display all data of student table whenever a record is inserted in Student
table.
2- A trigger which deletes all data from course table whenever total number of records in
“Course” table reaches 10.
3- A trigger which displays all data of “Enrollment” table whenever a record is deleted from
“Enrollment” table.
4- A trigger which displays data of “Student” table on insertion of every 10th record.
5- A trigger that checks age of Student after insertion, delete all those employees whose age
is above 25.
LAB #10
Objectives:
- Instead of Trigger
- Temporary tables in Triggers
INSTEAD OF TRIGGERS:
- Skips original action ( INSERT / UPDATE DELETE), instead of execute queries which
are written inside the trigger.
- For example if an insert trigger is called, instead of inserting data in table, system will
call the trigger and execute queries written in trigger.
Example 1:
CREATETRIGGERINSERT_EMPLOYEEONEMP
INSTEADOFINSERT
AS
BEGIN
SELECT*FROMEMP
END
Details:
Above query will not allow user to insert data in “EMP”. System will display EMP table instead
of inserting data in table.
Example 2:
CREATETRIGGERDONT_DELETEONEMP
INSTEADOFDELETE
AS
BEGIN
PRINT'YOU CANNOT DELETE DATA'
END
Details:
Above query will never allow user to delete any data from “EMP” table ever. Instead of deleting
data from table, system will call the trigger which will display “YOU CANNOT DELETE
DATA”.
- The deleted table stores copies of the affected rows during DELETE and UPDATE
statements. During the execution of a DELETE or UPDATE statement, rows are deleted
from the trigger table and transferred to the deleted table. The deleted table and the
trigger table ordinarily have no rows in common.
- The inserted table stores copies of the affected rows during INSERT and UPDATE
statements. During an insert or update transaction, new rows are added to both the
inserted table and the trigger table. The rows in the inserted table are copies of the new
rows in the trigger table.
- An update transaction is similar to a delete operation followed by an insert operation; the
old rows are copied to the deleted table first, and then the new rows are copied to the
trigger table and to the inserted table.
Example 1:
CREATETRIGGERSHOW_INSERTED
ONEMPAFTERINSERT
AS
BEGIN
SELECT*FROMinserted
END
OUTPUT:
Details:
Above trigger is created on “EMP” table, whenever data is inserted in “EMP” table,
“SHOW_INSERTED” trigger will be called by system. In body of trigger, all data of “inserted”
table is displayed. You can see OUTPUT of trigger. Effected rows copied to inserted table which
is shown in the output.
Example 2:
CREATETRIGGERSHOW_DELETED
ONEMPAFTERDELETE
AS
BEGIN
SELECT*FROMdeleted
END
DELETEEMPWHEREEID>100
OUTPUT:
Details:
You can see only those values are copied to deleted table which are effected by delete query.
Example 3:
CREATETRIGGERSHOW_UPDATED
ONEMPAFTERUPDATE
AS
BEGIN
SELECT*FROMinserted
SELECT*FROMdeleted
END
UPDATEEMP
SETECITY='ISB',ERANK='DEV'
WHEREEID=21
OUTPUT:
Details:
You can see, inserted table showing all values after update, which are inserted in the table and
deleted table showing all the values which are deleted from table. Basically delete table has all
the values before update and inserted table has all the values after update.
TASK # 10.1
Consider given database schema and write triggers for each statement.
1- Whenever a record is inserted in student table, system must check following constraints
in inserted value.
a. sAge between 18 and 25
b. sCGPA between 0.0 and 4.0
if any of constraints are violated, system must delete record inserted by user.
2- Write a mechanism which should not allow user to update Grade in Enrollment table.
Other columns of Enrollment table can be updated.
4- Write a mechanism which stores all deleted record to Student_BACKUP table whenever
a record is deleted from Student table.
5- Write a trigger which must make sure primary key is note violated in course table
whenever a record is inserted in course table.
LAB # 11
BIIT software house wants to maintain a database of its employees, projects assigned to
employees and accounts. Database schema is given below.
1- EMPLOYEE( eid, eName, eAge, eCity, eRank, eDep)
2- PROJECT ( pid, pName, pBonusAmout)
3- Project_Allocation ( eid, pid)
4- ACCOUNTS ( eid, Year, Month, Basic_Salary, Project_Bonus)
5- ACCOUNTS_BACKUP( eid, Year, Month, Basic_Salary, Project_Bonus)
6- LOG( srNo, table_name , Date, Time, event, no_of_rows_effected)
LAB #12
Objectives:
- Learning about cursors in SQL
Cursor is a database object to retrieve data from a result set one row at a time, instead of the T-
SQL commands that operate on all the rows in the result set at one time. We use cursor when we
need to update records in a database table in singleton fashion means row by row.
Example:
Given is Table of Emp:
DECLARE@Idint
DECLARE@namevarchar(50)
DECLAREcur_empCURSOR
STATICFOR
SELECTeid,ENAMEfromEmp
OPENcur_emp
IF@@CURSOR_ROWS>0
BEGIN
FETCHNEXTFROMcur_empINTO@Id,@name
WHILE@@Fetch_status=0
BEGIN
PRINT'ID : '+convert(varchar(20),@Id)+', Name : '+@name
FETCHNEXTFROMcur_empINTO@Id,@name
END
END
CLOSEcur_emp
DEALLOCATEcur_emp
OUTPUT:
TASK 12.1
Consider the following schema and write SQL query for given statements.
Student( regNo, sName, sCity, sCGPA, sAge)
Course( cCode, cName, credit_hours)
Enrollment (regNo, cCode, semester,quality_points,Grade)
2- Display all records of Enrollment table which are placed at even rows.
LAB # 13
- PRESENTATIONS
LAB # 14
- LAB PROJECT
LAB # 15
- LAB PROJECT