DBMS Lab Manual
DBMS Lab Manual
DBMS Lab Manual
LAB MANUAL
VISION AND MISSION OF THE INSTITUTION
Vision
To achieve the autonomous & university status and spread universal education by
inculcating discipline, character and knowledge into the young minds and mould them
into enlightened citizens.
Mission
Vision
Serving the high quality educational needs of local and rural students within the core
areas of Computer Science and Engineering and Information Technology through a
rigorous curriculum of theory, research and collaboration with other disciplines that is
distinguished by its impact on academia, industry and society.
Mission
Program Outcomes
PO1 Engineering knowledge: Apply the knowledge of mathematics, science, engineering
fundamentals, and an engineering specialization to the solution of complex
PO2 Problem analysis: Identify, formulate, review research literature, and analyze complex
engineering problems reaching substantiated conclusions using first principles of mathematics,
natural sciences, and engineering sciences.
PO3 Design/development of solutions: Design solutions for complex engineering problems and
design system components or processes that meet the specified needs with appropriate
consideration for the public health and safety, and the cultural, societal, and environmental
considerations.
PO4 Conduct investigations of complex problems: Use research-based knowledge and research
methods including design of experiments, analysis and interpretation of data, and synthesis of
the information to provide valid conclusions.
PO5 Modern tool usage: Create, select, and apply appropriate techniques, resources, and modern
engineering and IT tools including prediction and modeling to complex engineering activities
with an understanding of the limitations.
PO6 The engineer and society: Apply reasoning informed by the contextual knowledge to assess
societal, health, safety, legal and cultural issues and the consequent responsibilities relevant to
the professional engineeringpractice.
PO7 Environment and sustainability: Understand the impact of the professional engineering
solutions in societal and environmental contexts, and demonstrate the knowledge of, and need
for sustainable development.
PO8 Ethics: Apply ethical principles and commit to professional ethics and responsibilities and norms
of the engineering practice.
PO9 Individual and team work: Function effectively as an individual, and as a member or leader in
diverse teams, and in multidisciplinary settings.
PO10 Communication: Communicate effectively on complex engineering activities with the
engineering community and with society at large, such as, being able to comprehend and write
effective reports and design documentation, make effective presentations, and give and receive
clear instructions.
PO11 Project management and finance: Demonstrate knowledge and understanding of the
engineering and management principles and apply these to one’s own work, as a member and
leader in a team, to manage projects and in multidisciplinary environments.
PO12 Life-long learning: Recognize the need for, and have the preparation and ability to engage in
independent and life-long learning in the broadest context of technological change.
PSO2 Foundation of Computer System: The ability to interpret the fundamental concepts and
methodology of computer systems. Students can understand the functionality of hardware and
software aspects of computer systems.
PSO3 Foundations of Software development: The ability to grasp the software development lifecycle
and methodologies of software systems. Possess competent skills and knowledge of software
design process. Familiarity and practical proficiency with a broad area of programming concepts
and provide new ideas and innovations towards research.
COURSEOUTCOMES:
On successful completion of this course, students should be able to:
Knowledge Level
Course CO. No.
Course Outcomes (CO)
(Blooms Level)
CO1
MANAGEMENT
Ability to design database schema for a given application and L6- Create
DATABASE
apply normalization
SYSTEMS
CO-PO-PSOS MATRIX:
Program Specific
Course Outcomes
PO PO PO
PO1 PO2 PO3 PO4 PO5 PO6 PO7 PO8 PO9 PSO1 PSO2 PSO3
10 11 12
CO1
2 2 3 - - - - - - - - 3 2 2 2
CO2
2 2 3 - - - - - - - - 3 2 2 2
CO3
2 2 3
AVG
2 2 3 - - - - - - - - 3 2 2 2
INDEX
S.NO. NAME OF THE EXPERIMENT PAGE NO.
1 INTRODUCTION TO DBMS 1-4
2 Experiment No: 1 5-6
Analyze the problem and come with the entities in it. Identify what
Data has to be persisted in the databases.
3 Experiment No 2 7
Concept design with E-R Model.
4 Experiment No: 3 8-10
Relational Model (Represent all entities in a tabular fashion.
Represent all relationships in a tabular fashion).
5 Experiment No: 4 11-12
Normalization (and Applying Constraints on Road Way Travels
Tables).
6 Experiment No: 5 13-14
Installation of Mysql in Ubuntu.
7 EXPERIMENT-6 15-19
Practicing DDL Commands on Road Way Travels Tables..
8 Experiment No: 7 20-25
Applying DML commands on Road Way Travels Tables.
9 Experiment No: 8 26-28
Practice Queries using ANY, ALL, IN, EXISTS, UNION,
INTERSECT CONSTRAINTS ETC.
10 Experiment No: 9 29-30
Practice Queries using Aggregate functions, Group By, Having
Clause and Order Clause.
11 Experiment No: 10 31-33
Triggers
12 Experiment No. 11 34-41
Implementing Procedures.
13 Experiment No. 12 42-47
Implementing and usage of Cursors
14 Experiment No. 13 48
***Write SQL queries to create views. ***
15 Experiment No. 14 49
***CASE STUDY E-R MODEL: GENERAL HOSPITAL.***
Course Outcomes:
Design database schema for a given application and apply normalization
Acquire skills in using SQL commands for data definition and data manipulation.
Develop solutions for database applications using procedures, cursors and triggers.
INTRODUCTION TO DBMS
Database Management System:
This model is like a hierarchical tree structure, used to construct a hierarchy of records in the
form of nodes and branches. The data elements present in the structure have Parent-Child relationship.
Closely related information in the parent-child structure is stored together as a logical unit. A parent
unit may have many child units, but a child is restricted to have only one parent.
Network Model:
It supports the One-To-One and One-To-Many types only. The basic objects in this model are
Data Items, Data Aggregates, Records and Sets.
It is an improvement on the Hierarchical Model. Here multiple parent-child relationships are used.
Rapid and easy access to data is possible in this model due to multiple access paths to the data
elements.
Relational Model:
Does not maintain physical connection between relations
Data is organized in terms of rows and columns in a table
The position of a row and/or column in a table is of no importance
The intersection of a row and column must give a single value
Features of an RDBMS:
The ability to create multiple relations and enter data into them
An attractive query language
Retrieval of information stored in more than one table
An RDBMS product has to satisfy at least seven of the 12 rules of Codd to be accepted as a
full- fledged RDBMS.
1
Degree of Relationship:
One to One (1:1)
One to Many or Many to One (1:M / M: 1)
Many to Many (M: M)
The Degree of Relationship indicates the link between two entities for a specified occurrence of each.
E. F. Codd Rules:
1. The Information Rule: All information must be store in table as data values.
2. The Rule of Guaranteed Access: Every item in a table must be logically addressable with
the help of a table name.
3. The Systematic Treatment of Null Values: The RDBMS must be taken care of null
values to represent missing or inapplicable information.
4. The Database Description Rule: A description of database is maintained using the same
logical structures with which data was defined by the RDBMS.
5. Comprehensive Data Sub Language: According to the rule the system must support data
definition, view definition, data manipulation, integrity constraints, and authorization and
transaction management operations.
6. The View Updating Rule: All views that are theoretically updateable are also updateable
by the system.
7. The Insert and Update Rule: This rule indicates that all the data manipulation commands
must be operational on sets of rows having a relation rather than on a single row.
8. The Physical Independence Rule: Application programs must remain unimpaired when
any changes are made in storage representation or access methods.
9. The Logical Data Independence Rule: The changes that are made should not affect the
user’s ability to work with the data. The change can be splitting table into many more
tables.
10. The Integrity Independence Rule: The integrity constraints should store in the system
catalog or in the database.
2
11. The Distribution Rule: The system must be access or manipulate the data that is
distributed in other systems.
12. The Non-subversion Rule: If a RDBMS supports a lower level language then it should
not bypass any integrity constraints defined in the higher level.
Oracle8 and later versions are supported object-oriented concepts. A structure once created can be
reused is the fundamental of the OOP’s concept. So we can say Oracle8 is supported Object
Relational model, Object – oriented model both. Oracle products are based on a concept known as a
client-server technology. This concept involves segregating the processing of an application between
two systems.
Introduction to ORACLE:
ORACLE is a powerful RDBMS product that provides efficient and effective solutions for major
database features. This includes:
Large databases and space management control
Many concurrent database users
High transaction processing performance
High availability
Controlled availability
Industry accepted standards
Manageable security
Database enforced integrity
Client/Server environment
Distributed database systems
Portability
Compatibility
Connectivity
An ORACLE database system can easily take advantage of distributed processing by using its Client/
Server architecture. In this architecture, the database system is divided into two parts:
3
ROADWAY TRAVELS
“Roadway Travels” is in business since 1977 with several buses connecting different places in India.
Its main office is located in Hyderabad.
The company wants to computerize its operations in the following areas:
Reservations
Ticketing
Cancellations
Reservations:
Reservations are directly handled by booking office. Reservations can be made 60 days in
advance in either cash or credit. In case the ticket is not available, a wait listed ticket is issued to the
customer. This ticket is confirmed against the cancellation.
4
Experiment No: 1
AIM: Analyze the problem and come with the entities in it. Identify what Data has to be persisted
in the databases.
Bus (Entity):
Reservation (Entity):
5
Ticket (Entity):
Dep- Time
Source
Age
Sex
Journey date
Destination
Ticket No
Bus No
Ticket
Passenger (Entity):
Cancellation (Entity):
6
Experiment No 2
AIM: Concept design with E-R Model
7
Experiment No: 3
AIM: Relational Model (Represent all entities in a tabular fashion. Represent all relationships in
a tabular fashion).
Char (Size): Stores fixed-length character data to store alphanumeric values, with a maximum
size of 2000 bytes. Default and minimum size is 1 byte.
Varchar2 (Size): Stores variable-length character data to store alphanumeric values, with
maximum size of 4000 bytes.
Char (Size): Stores fixed-length character data of length size characters or bytes, depending on
the choice of national character set. Maximum size if determined by the number of bytes required
storing each character with an upper limit of 2000 bytes. Default and minimum size is 1 character or 1
byte, depending on the character set.
Nvarchar2 (Size): Stores variable-length character string having maximum length size
characters or bytes, depending on the choice of national character set. Maximum size is determined
by the number of bytes required to store each character, with an upper limit of 4000 bytes.
Long: Stores variable-length character data up to 2GB (Gigabytes). Its length would be
restricted based on memory space available in the computer.
Number [p,s]: Number having precision p and scale s. The precision p indicates total number of
digit varies from 1 to 38. The scale s indicates number of digit in fraction part varies from –84 to 127.
Date Stores dates from January 1, 4712 B.C. to December 31, 4712 A.D. Oracle Predefine format
of Date data type is DD-MON-YYYY.
8
The following are tabular representation of the above entities and relationships:
BUS:
Source varchar2(20)
Destination varchar2(20)
RESERVATION:
No-of-seats integer(8)
Address varchar2(50)
9
TICKET:
PASSENGER:
Name varchar2(15)
Age integer(4)
Sex char(10) (Male/Female)
Contact no Number(9) Should be equal to 10 numbers
and not allow other than
numeric
CANCELLATION:
Journey-date Date
Seat no Integer(9)
Contact No Number(9) Should be equal to 10 numbers
and not allow other than
numeric
10
Experiment No: 4
Unique Constraint:
The purpose of unique key is to ensure that information in the column(s) is unique i.e. the value
entered in column(s) defined in the unique constraint must not be repeated across the column. A table
may have many unique keys. If unique constraint is defined in more than one column (combination of
columns), it is said to be composite unique key. Maximum combination of columns that a composite
unique key can contain is 16.
11
Primary Key Constraint:
A primary key is one or on more columns(s) in a table to uniquely identify each row in the table. A
primary key column in a table has a special attribute. It defines the column, as a mandatory column i.e.
the column cannot be left blank and should have a unique value. Here by default not null constraint is
attached with the column. A multicolumn primary key is called a Composite primary key. The only
function of a primary key in a table is to uniquely identify a row. A table can have only one primary
key.
In this category there is only one constraint and it is Foreign Key & References to establish a Parent-
child_ or a Master-detail_ relationship between two tables having a common column, we make use of
referential integrity constraint. Foreign key represent relationships between tables. A foreign key is a
column whose values are derived from the primary key or unique key. The table in which the foreign
key is defined is called a foreign table or Detail table. The table that defines the primary or unique keys
and is referenced by the foreign key is called the Primary table or Master table. The master table can be
referenced in the foreign key definition by using references keyword. If the column name is not
specified, by default, Oracle references the primary key in the master table.
The existence of a foreign key implies that the table with the foreign key is related to the master table
from which the foreign key is derived. A foreign key must have a corresponding primary key or a
unique key value in a master table.
Rejects an insert or update of a value in a particular column, if a corresponding value does not exist in
the master table.
Deletion of rows from the Master table is not possible if detail table having corresponding values.
Primary key or unique key must in Master table.
Requires that the foreign key column(s) and reference column(s) have same data type
References constraint defined at column level
Example:
SQL> create table Passenger(PNR_NO Numeric(9) references reservation , Ticket NO
Numeric(9) references ticket, Name varchar(20), Age Number(4), Sex char(10), PPNO
varchar(15));
Table created.
SQL> alter table reservation add constraint fk_icode foreign key (busno) references bus
(bus_no);
Table altered.
12
Experiment No: 5
AIM: Installation of Mysql in Ubuntu.
1.1 OBJECTIVE:
MySQL is a fast, easy to use relational database. It is currently the most popular open-
source database. It is very commonly used in conjunction with PHP scripts to create
powerful and dynamic server-side applications.
MySQL is used for many small and big businesses. It is developed, marketed and
supported by MySQL AB, a Swedish company. It is written in C and C++.
Relational Database Management System (RDBMS): MySQL is a relational
database management system.
Easy to use: MySQL is easy to use. You have to get only the basic knowledge of
SQL. You can build and interact with MySQL with only a few simple SQL
statements.
It is secure: MySQL consist of a solid data security layer that protects sensitive
data from intruders. Passwords are encrypted in MySQL.
Client/ Server Architecture: MySQL follows a client /server architecture. There is a
database server (MySQL) and arbitrarily many clients (application programs),
which communicate with the server; that is, they query data, save changes, etc.
Free to download: MySQL is free to use and you can download it from MySQL
official website.
It is scalable: MySQL can handle almost any amount of data, up to as much as 50
million rows or more. The default file size limit is about 4 GB. However, you can
increase this number to a theoretical limit of 8 TB of data.
Installation of Mysql. In this week you will learn creating databases. How to create table,
altering the database, dropping table and databases if not required. You will also try
truncate, rename commands etc…
13
1.2 RESOURCE:
Ubuntu (Linux) / My Sql database
1.3 PROCEDURE:
Installation of MySql:
Follow these steps on to install MySql in Ubuntu:
1. Open Terminal and run below command.
sudo apt-get install mysql-server
2. Give the root password.
3. Wait for the installation to finish.
4. The installer itself start the MySql server. To check whether MySql server is running or not, run
below command.
sudo netstat-tap | grep mysql
5. To make sure. Your MySql installation works fine with Apache and PHP, run below command.
It will install necessary modules to connect to a MySql database through PHP using Apache.
sudo apt-get install libapache2-mod-auth-mysql php5-mysql
6. Installation is completed.
SQL
SQL stands for Structured Query Language. It is used for storing and managing data in
relational database management system (RDMS).
It is a standard language for Relational Database System. It enables a user to create,
read, update and delete relational databases and tables.
All the RDBMS like MySQL, Informix, Oracle, MS Access and SQL Server use SQL
as their standard database language.
SQL allows users to query the database in a number of ways, using English-like
statements.
14
EXPERIMENT-6
The data definition language is used to create an object, alter the structure of an object and also drop
already created object. The Data Definition Languages used for table definition can be classified into
following:
Table is a primary object of database, used to store data in form of rows and columns. It is created
using following command:
Create Table < table_name> ( column1 datatype (size), column2 datatype (size), ・_, column (n)
datatype (size));
Where, table_name is a name of the table and coulumn1, column2 _ column n is a name of the column
available in table_name table. R Each column is separated by comma. Pointes to be remember while
creating a table. Table Name must be start with an alphabet. Table name and column name should be
of maximum 30 characters long. Column name should not be repeated in same table.
Underscores, numerals and letters are allowed but not blank space or single quotes.
Example:
SQL> create table Bus (Bus_No varchar (5), source varchar (20), destination varchar (20),
CouchType varchar2 (10), fair number);
Table Created.
Above definition will create simple table. Still there are more additional option related with create
table for the object-relation feature we will discuss it afterwards.
Desc command:
Describe command is external command of Oracle. The describe command is used to view the
structure of a table as follows.
Desc <table name>
SQL> desc bus;
SQL> create table Reservation (PNR_NO Numeric (9), No_of_seats Number (8), Address varchar
(50), Contact_No Numeric (9), Status char (3));
Table created.
Cancellation Table:
SQL> create table Cancellation (PNR_NO Numeric (9), No_of_seats Number (8), Address
varchar (50), Contact_No Numeric (9), Status char (3));
Table created.
Ticket Table:
SQL> create table Ticket(Ticket_No Numeric(9) primary key, age number(4), sex char(4) Not
null, source varchar(2), destination varchar(20), dep_time varchar(4));
Table created.
16
SQL> desc Ticket
Alteration of Table:
Once Simple Table is created, if there is a need to change the structure of a table at that time alter
command is used. It is used when a user want to add a new column or change the width of data type or
data type itself or to add or drop integrity constraints or column.
I.e. table can be altered in one of three ways: by adding column, by changing column definition or by
dropping column.
Addition of Column(s)
Addition of column in table is done using:
Alter table <table_name> add (column1 datatype, column2 datatype ・_);
Add option is used with alter table_ when you want to add a new column in existing table. If you
want to Add more than one column then just write column name, data type and size in brackets. As
usual Comma sign separates each column. For Example, suppose you want to add column comm in
emp_master, then you have to perform the following command.
SQL> ALTER TABLE Passenger ADD FOREIGN KEY (PNR_NO) REFERENCES Reservation
(PNR_NO);
Table altered.
Table altered.
Table altered.
Deletion of Column:
Till Oracle8 it is not possible to remove columns from a table but in Oracle8i, drop option is used
withAlter table_ when you want to drop any existing column.
Alter table <table_name> drop column <column name>;
Using above command you cannot drop more than one column at a time.
17
For Example, suppose you want to delete just before created column comm from the emp_master, then
you have to apply following command.
SQL>Alter Table Emp_master drop column comm;
Table altered.
ropping column is more complicated than adding or modifying a column, because of the additional
work that Oracle has to do. Just removing the column from the list of columns in the table actually
recovers the space that was actually taken up by the column values that is more complex, and
potentially very time- consuming for the database. For this reason, you can drop a
Column can be immediately remove column by drop clause, the action may impact on performance or
one make marked column as unused using unused clause, there will be no impact on performance.
When unused caluse is used the column can actually be dropped at a later time when the database is
less heavily used. One can marked column as a unused using:
For Example:
Table altered.
Making a column as Unused_ does not release the spcace previously used by the Column, until you
drop the unused columns. It can be possible using:
Alter table <table_name> drop unused columns;
Once you have marked column as unused_ you cannot access that column
You can drop multiple columns at a time using single command as per follows
Modification in Column:
Modify option is used with Alter table_ when you want to modify any existing column. If you want to
modify data type or size of more than one column then just write column name, data type and size in
brackets and each column is separated by comma sign as per follows:
For Example, if you want to change size of salary column of emp_master the following command is
performed.
18
SQL> Alter table emp_master modify salary number (9, 2);
Table altered.
Truncate Table:
If there is no further use of records stored in a table and the structure is required then only data can be
deleted using truncate command. Truncate command will delete all the records permanently of
specified table as follows.
Example:
Following command will delete all the records permanently from the table.
SQL>Truncate Table Emp_master;
Or
SQL>Truncate Table Emp_master Reuse Storage;
Table truncated.
19
Experiment No: 7
AIM: Applying DML commands on Road Way Travels Tables.
Data Manipulation commands are most widely used SQL commands and they are
Insert
Update
Delete
Select
a) Insert command:
After creation of table, it is necessary it should have data in it. The insert command is used to add data
in form of one or more rows to a table as per follows:
Insert into <table name> values (a list of data values);
In a list of data values you have to specify values for each and every column in the same order as
they are defined. A value of each column is separated by comma in the list.
The value of char, nchar, and varchar2, nvarchar2, raw, long and date data types are enclosed in single
quotes.
Using insert command one can insert values in specific columns as follows:
SQL> insert into emp_master (empno, ename, salary) values (1122, ‘Smith’, 8000);
1 row created.
Above command insert one row but values are inserted in only three columns. Remaining four
columns have null values. If you have defined not null constraint in any of remaining columns it wants
allow you to insert data in a table.
Till now we have seen static method to insert data. One can add data in a table using variable method
with & (ampersand) sign. It will prompt user to enter data of mention field. Generally It is used to add
more than one row in a table without typing whole command repetitively using / sign.
20
SQL> insert into Passenger values (&PNR_NO,&TICKET_NO, '&Name', &Age, '&Sex',
'&PPNO');
Enter value for pnr_no: 1
Enter value for ticket_no: 1
Enter value for name: SACHIN
Enter value for age: 12
Enter value for sex: m
Enter value for ppno: sd1234
Old 1: insert into Passenger values (&PNR_NO, &TICKET_NO, '&Name', &Age, '&Sex',
'&PPNO')
SQL> /
Enter value for pnr_no: 2
Enter value for ticket_no: 2
Enter value for name: rahul
Enter value for age: 34
Enter value for sex: m
Enter value for ppno: sd3456
Old 1: insert into Passenger values (&PNR_NO, &TICKET_NO, '&Name', &Age, '&Sex',
'&PPNO')
21
old 1: insert into Passenger values(&PNR_NO,&TICKET_NO, '&Name', &Age, '&Sex',
'&PPNO')
new 1: insert into Passenger values(4,4,'ravi',56,'m','sdqazx')
1 row created.
SQL> /
Enter value for pnr_no: 4
Enter value for ticket_no: 5
Enter value for name: asif
Enter value for age: 33
Enter value for sex: m
Enter value for ppno: iuyhjk
SQL> /
Enter value for bus_no: 5
Enter value for source: hyd
Enter value for destination: kol
22
old 1: insert into Bus values('&Bus_No','&source','&destination')
new 1: insert into Bus values('5','hyd','kol')
1 row created.
SQL> /
Enter value for bus_no: 5
Enter value for source: sec
Enter value for destination: ban
old 1: insert into Bus values('&Bus_No','&source','&destination')
new 1: insert into Bus values('5','sec','ban')
insert into Bus values('5','sec','ban')
*
ERROR at line 1:
ORA-00001: unique constraint (SYSTEM.SYS_C004025) violated
SQL> insert into Reservation values(&PNR_NO, &No_of_seats, '&Address', &Contact_No ,
'&Status');
Enter value for pnr_no: 1
Enter value for no_of_seats: 2
Enter value for address: masabtank
Enter value for contact_no: 9009897812
Enter value for status: s
old 1: insert into Reservation values(&PNR_NO, &No_of_seats, '&Address', &Contact_No,'
&Status')
new 1: insert into Reservation values(1,2,'masabtank',9009897812,'s')
1 row created.
ERROR at line 1:
ORA-02291: integrity constraint (SYSTEM.SYS_C004024) violated - parent key not found.
23
EMPNO ENAME JOB HIREDATE SALAR DEPTNO COMM
1122 Allen Manager 1-JAN-00 10000 10 1000
1122 Smith 1-JAN-00 8000
1123 King Clerk 30-JUN-00 3400 20 300
1124 Martin Manager 30-AUG-00 7000 20 1000
1125 Tanmay 16-SEP-00 10
5 rows selected.
1 1 SACHIN 12 m sd1234
2 2 rahul 34 m sd3456
3 3 swetha 24 f sdqw34
4 4 ravi 56 m sdqazx
Select Command:
Previously we have seen simple use of select statement to retrieve the data from the table. Now we
have look further use of Select statement.
Distinct Clause
To prevent the selection of distinct rows, we can include distinct clause with select command.The
following command will exclude duplicate empno.
SQL> select distinct deptno from emp_master;
DEPTNO
10
20
2 rows selected.
24
UPDATE Table:
1 1 SACHIN 12 m sd1234
2 2 rahul 43 m sd3456
3 3 swetha 24 f sdqw34
4 4 ravi 56 m sdqazx
DELETE:
DROP Table:
SQL> drop table Cancellation;
Table dropped.
25
Experiment No: 8
AIM: Practice Queries using ANY, ALL, IN, EXISTS, UNION, INTERSECT
CONSTRAINTS ETC.
Set Operators:
Set operators combine the results of two queries into a single one. The following set operators are
available in SQL.
Union
Union All
Intersect
Minus
Union: The union operator returns all distinct rows selected by two or more queries.
Union All: The union all operators returns all rows selected by either query including duplicates..
Example:
SQL> select order_no from order_master union all select order_no from
order_detail
ORDER_NO
26
O001
O002
O003
O004
O003
O004
O005
O006
O007
Intersect: The intersect operator outputs only rows produced by both the queries intersected i.e. the
output in an intersect clause will include only those rows that are retrieved by both the queries.
Example:
SQL> select order_no from order_master intersect select order_no from
order_detail;
ORDER_NO
O003
O004
Minus: The Minus operator outputs the rows produced by the first query, after filtering the rows
retrieved by the second query.
Example:
SQL> select order_no from order_master minus select order_no from order_detail;
ORDER_NO
O001
O002
EXAMPLE QUERIES:
Display Unique PNR_NO of all Passengers
SQL> select PNR_NO from Passenger;
PNR_NO
----------
1
2
3
3 rows selected.
27
Display Ticket numbers and names of all Passengers
2 rows selected.
Display the source and destination having journey time more than 10 hours.
SQL> select source, destination from Ticket where Journey_Dur>10;
SOURCE DESTINATION
---------- --------------------
HYD BAN
SEC BAN
HYD MUM
Find the ticket number of passenger whose name starts with ‘S’ and ends with ‘H’
SQL> select Ticket_NO from Passenger where Name like'S%'and name like'%N';
TICKET_NO
----------
1
NAME
--------------------
swetha
rafi
riyaz
neha
NAME
--------------------
rahul
rafi
riyaz
28
Experiment No: 9
AIM: Practice Queries using Aggregate functions, Group By, Having Clause and
Order Clause.
Group Functions:
A group functions returns a result based on a group of rows. Some of these are just purely
mathematical functions. The group functions supported by Oracle are summarized below:
1) Avg (Average): This function will return the average of values of the column specified in the
argument of the column.
Example:
SQL> select avg(comm) from emp_master;
AVG(COMM)
————-
766.66667
2) Min (Minimum): The function will give the least of all values of the column present in the
argument.
Example:
SQL>Select min(salary) from emp_master;
MIN(SALARY)
—————-
3400
3) Max (Maximum): To perform an operation, which gives the maximum of a set of values the max,
function can be made use of.
Example:
SQL>select max(salary) from emp_master;
This query will return the maximum value of the column specified as the argument.
MAX(SALARY)
—————-
10000
4) Sum: The sum function can be used to obtain the sum of a range of values of a record set.
Example:
SQL>Select sum(comm) from emp_master;
SUM(COMM)
————-
Group By Clause:
Group by clause is used with group functions only. Normally group functions returns only one
row. But group by clause will group on that column.
Example:
SQL>select deptno,count(*) from emp_master group by deptno;
DEPTNO COUNT(*)
10 2
29
Having Clause:
The having clause is used to satisfy certain conditions on rows, retrieved by using group by
clause.Having clause should be preceding by a group by clause. Having clause further filters the rows
return by group by clause.
Example
SQL> select deptno,count(*) from emp_master group by deptno having Deptno is not null;
DEPTNO COUNT(*)
10 2
20 2
Order By Clause:
Order by clause is used to arrange rows in either ascending or descending order. The order by clause
can also be used to arrange multiple columns. The order by clause should be the last clause in select
statement.It is used as per follows :
select <column(s)> from <TableName> where [condition(s)] [order by <column name>
[asc/]desc];
Example
If you want to view salary in ascending order the following command can performed:
SQL> select empno,ename,salary from emp_master order by salary;
EMPNO ENAME SALARY
1123 King 3400
1124 Martin 7000
1122 Allen 10000
1125 Tanmay 10000
4 rows selected.
If you have not specify any order by default it will consider ascending order and salary will be
displayed in ascending order. To retrieve data in descending order the desc keyword is used after order
by clause.
SQL> select empno,ename,salary from emp_master order by salary desc;
And the output will opposite from above.
30
Experiment No: 10
Aim: Triggers
Database Triggers:
Trigger defines an action the database should take when some database-related event occurs.
Trig- gers may be used to supplement declarative referential integrity, to enforce complex business
rules, or to audit changes to data. The code within a trigger, called a trigger body, is made up of
PL/SQL blocks. It’s like a stored procedure that is fired when an insert, update or delete command is
issued against associated table.
A trigger ’s type is defined by the type of triggering transaction and by the level at which the trigger
is executed. In the following sections, you will see descriptions of these classifications, along with
relevant restrictions.
Row-Level Triggers:
Row-level triggers execute once for each row in a transaction. Row-level triggers are the most common
type of trigger; they are often used in data auditing applications.
Statement-Level Triggers:
Statement-level triggers execute once for each transaction. For example, if a single transaction inserted
500 rows into a table, then a statement-level trigger on that table would only be executed once.
INSTEAD OF Triggers:
You can use INSTEAD OF triggers to tell Oracle what to do instead of performing the actions that
invoked the trigger. For example, you could use an INSTEAD OF trigger on a view to redirect inserts
into table or to update multiple tables that are part of a view. You can use INSTEAD OF triggers on
either object views or relational views.
Uses of Triggers:
The possible uses for database triggers are varied and are limited only by your imagination. Some
common uses are listed below:
• Enforcing business rules
• Maintaining referential integrity
• Enforcing security
• Maintaining a historical log of changes
Syntax:
31
Create [ or replace ] trigger [user.]trigger_name{ before | after | instead of }
{ delete | insert | update [ of column [, column] ・ }
on [user.]{ Table | View }
for each { row | statement }
[ when (condition) ]
PL/SQL Block
.
Example
Create or replace trigger emp_salary_update_row
before update on emp
for each row
when (:New.Amount / :Old.Amount > 1.1)
usr varchar2(20);
Begin
Select user into usr from dual;
Insert into EMP_AUDIT values (:Old.salary, :New.salary, :Old.eno,
usr, to_char(sysdate,’HH:MI’),sysdate);
Commit;
End;
/
Trigger created.
The PL/SQL code shown in the following listing is the trigger body. The commands shown here are to
be executed for every update of the emp table that passes the when condition. For this to suc- ceed, the
EMP_AUDIT table must exist, and the owner must have been granted privileges on that table. This
example inserts the old values from the emp record into EMP_AUDIT table before the employee
record is updated in emp table. Structure of EMP_AUDIT table is as per follows.
EMP_AUDIT
eno number(5)
old_salary number(9,2)
new_salary number(9,2)
user varchar2(20)
tr_time varchar2(10)
tr_date date
Begin
Select user into usr from dual;
Insert into EMP_AUDIT values (:Old.eno, :Old.salary,
:New.salary, usr, to_char(sysdate,’HH:MI’),sysdate);
commit;
End;
/
32
Triggering Statement:
INSERT:
: Old Undefined – all fields are NULL
: New Values that will be inserted when the statement is complete
UPDATE:
: Old Original values for the row before the update
: New New values that will be updated when the statement is complete
DELETE:
: Old Original values before the row is deleted
: New Undefined – all fields are NULL
Example
Create or replace trigger upperdname before insert or update on
dept for each row
Begin
:new.dname := upper(:new.dname);
End;
/
Trigger created.
33
Experiment No. 11
PL/SQL Block
PL/SQL code is grouped into structures called blocks. A Block contains three sections, as de- scribed
below.
declare
<declaration of variables, constants, function, procedure,
cursor etc.>;
begin
<executable statement(s)>;
exception
<exception handling>;
end;
/
Within a PL/SQL block, the first section is the Declaration section. Using Declaration section, you can
define variables and cursors that the block will use. In PL/SQL Block only the executable section is
required, the declarative and exception handling sections are optional.
A Simple Block
Example
Begin
Insert into emp(empno,ename) values(100,’Shruti’);
Insert into emp(empno,ename) values(101,’Yesha’);
End;
/
/ Forward slash executes the PL/SQL block.
When the PL/SQL block is executed it will inserted two rows in emp table.
dbms_output.put_line()
dbms_output.put_line() is used to displays the value of variable or any message on the next line of the
console. You might wonder, that, though the block is successfully completed
withdbms_output.put_line() it is not showing any output. SQL>Set Serveroutput On
It is not necessary to write the above statement for the execution of each and every block. This
statement is written only once per session You can omit line word from dbms_output.put_line().
dbms_output.put()is used to displays the value of variable or any message on the same line
on the console. Example
Begin
dbms_output.put_line(‘Starting of PL/SQL’);
dbms_output.put_line(‘Welcome to’)
dbms_output.put(‘AZURE’);
End;
/
When the above PL/SQL block is executed, you will receive the following response from Oracle.
SQL> PL/SQL Procedure successfully completed.
Starting of PL/SQL
Welcome to AZURE
34
Datatypes:
PL/SQL datatypes can be classified into two types.
• Scalar datatypes
• Composite datatypes
All SQL data types like number, char, varchar2, raw, long raw, lob, date and ANSI Standard data type
such as boolean, binary_integer and number are categorized as a scalar datatype.
Boolean:
Boolean data types can be used to store the values TRUE, FALSE or NULL.
Binary_Integer:
Binary_integer is used to store signed integers. The range of binary_integer value is ア231 i.e. the
range of binary_integer is –2147483647 to 21474483647
Number:
It is same as SQL number data types. In addition to this it includes ANSI standard types which
includes following datatypes
Dec / Decimal
Int / Integer
Real
Example
Begin /* declaration section and exception
section is also neglected*/
Insert into emp(ename, empno) values(‘Tanmay’,1234);
End;
/
One can utilize multiline comments in Single line.
Example
To get the name and salary of specified employee.
Declare
nm varchar2(20);
sal number(9,2);
Begin
/* Get employee name and Salary */
Select ename,salary into nm, sal from emp where empno=2;
/* Display Employee name and Salry */
dbms_output.put_line(‘Name : ’ || nm);
dbms_output.put_line(‘Salary : ’ || sal);
End;
/
35
PL/SQL Control Structures:
Control structure is the most important in PL/SQL to change the logical flow of statements within
PL/SQL Block. PL/SQL has a variety of control structures that allow you to control the behavior of the
block as it runs. These structures include conditional statements and iterative controls i.e. PL/SQL
supports basic programming control structures.
• Sequence
• Selection / Condition
• Iteration
These structures combined with variables, gives PL/SQL its power and flexibility.
Rdbms_standard package provides a language facility to interact with Oracle.
Selection Control:
Within PL/SQL block, Selection control is used when the execution of a particular set of statement is
based on a specific condition. Sequence of statements can be executed based on some condition using
the if statement. There are various form of if statement.
If-then form:
The simple form of the if statement is the if-then statement as follows.
IF <boolean_expression> THEN
statements;
END IF;
Where boolean_expression is any expression that evaluates to a Boolean value.
Example
Accept Number from a User and display Hello message if the entered number is Positive.
Declare
num number;
Begin
num := #
if num > 0 then
dbms_output.put_line(‘Hello’);
end if;
end;
/
PL/SQL provides a facility for executing statements repeatedly, via loops. In PL/SQL we have three
loops as follows to execute statements repetitively.
• Simple loop
• While loop
• For loop
Simple loop:
The most basic kind of loops, simple loop have this Syntax:
36
LOOP
Sequence_of_statements;
END LOOP;
Sequence_of_statements will be executed infinitely, since this loop has no stopping condition. We can
exit this loop via EXIT statement. General form of exit statement is as follows.
EXIT [WHEN condition];
Example
Declare
I number(2):=0;
Begin
Loop
dbms_output.put_line(I);
I:=I+1;
Exit when (I>10);
End loop;
End;
/
WHILE Loop:
WHILE <condition>
LOOP
Sequence_of_statements;
END LOOP;
Before each iteration of the loop, condition is evaluated. If it evaluates to TRUE,
sequence_of_statements is executed. If condition evaluates to FALSE or NULL, the loop is fin- ished
and control resumes after the END LOOP statement.
The only difference between simple loop and while loop is simple execute first and then it will check
condition, so simple loop execute at least once and in while loop first it will check condition and then
execute.
Example
Declare
I number(2):=0;
Begin
While I > 50
loop
dbms_output.put_line(i);
I:=I+5;
End Loop;
End;
/
FOR Loop:
The number of iterations for simple loops and while loops is not known in advance; it depends on the
condition. FOR loops, on the other hand, have a defined number of iterations.
37
FOR loop_counter IN [REVERSE] LowerBound..UpperBound
LOOP
Sequence_of_statements;
End LOOP;
Where loop_counter is the implicitly declared index variable, lowerbound and upperbound specify the
number of iterations, and sequence_of_Statements is the contents of the loop.
Example
Declare
no number := 5;
Begin
For I in 1..10 loop
dbms_output.put_line(no||‘ * ‘||I||‘ = ‘||no*I);
End loop;
End;
/
Reverse keyword:
If the REVERSE keyword is present in the FOR loop, then the loop index will iterate from the high
value to the low value. Notice that the syntax is the same; the low value is still referenced first.
Example
Begin
For I in REVERSE 1..5 LOOP
dbms_output.put_line(I);
End LOOP;
End;
/
Goto Statement:
The goto statement allows us to branch to a label unconditionally. The label, which is enclosed within
double angular brackets, must precede an executable SQL or a PL/SQL block. When ex- ecuted, the
goto statement transfers control to the labeled statement or a block.
Example
Declare
no number:=1;
Begin
While no<=10 loop
dbms_output.put_line(no);
no := no+1;
If no = 5 then
goto lbl;
End if;
End loop;
<<lbl>>
dbms_output.put_line(‘Number Printing from lable ‘||no);
End;
/
In above example, when no is equal to 5 control transfer to label lbl and execute whatever mentioned
after label and stop execution of for loop.
38
Procedures:
A procedure is a one kind of subprogram, which is designed and created to perform a specific operation
on data in your database. A procedure takes zero or more input parameters and returns 125 zero or
more output parameters.
The syntax of a creation of procedure is as follows:
Syntax:
CREATE OR REPLACE PROCEDURE procedure_name
[(argument1 [IN/OUT/IN OUT] datatype,
argument2 [IN/OUT/IN OUT] datatype,_)] IS
[<local variable declarations>]
BEGIN
Executable Statements
[EXCEPTION
Optional Exception Handler(s)
]
END;
The procedure is made up of two parts: the declaration and the body of the procedure. The declara- tion
begins with the keyword PROCEDURE and ends with the last parameter declaration. The body begins
with the keyword IS and ends with the keyword END. The procedure body is further divided into three
parts : declarative, executable and exception part same as PL/SQL blcok. The declaration section is
used to assign name and define parameter list, which variables are passed to the procedure and which
values are returned from the procedure back to the calling program.
Parameters can be define in following format
Argument [parameter mode] datatype
There are three types of parameters mode: IN, OUT and IN OUT
IN Mode:
• Default parameter mode.
• Used to pass values to the procedure.
• Formal parameter can be a constant, literal, initialized variable or expression.
• Used for reading purpose
OUT Mode:
• Used to return values to the caller.
• Formal parameter cannot be used in an expression, but should be assigned a value.
• Used for writing purpose
IN OUT Mode:
• Used to pass values to the procedure as well as return values to the caller
• Formal parameter acts like an initialized variable and should be assigned a value.
• Used for both reading and writing purpose
Execution of procedure:
Procedure is executed from a SQL prompt as per follows and One can execute procedure from caller
program also.
39
SQL > execute/exec procedure_name(parameter list)
For example above created procedure is executed as follows
SQL> Exec example1(7)
7 is odd number
Example
Create a procedure, which receives department number and get total Salary of that Department.
Create or replace procedure dept_total(dno in numbe, total out number)
Is
Begin
Select sum(salary) into total from emp where deptno= dno;
dbms_output.put_line(‘Total salary of Department ‘|| dno ||
‘ is ‘ || total);
End;
/
Procedure created.
Block To execute procedure
Declare
dn number(5) := &no;
tot number;
Begin
dept_total(dn,tot);
End;
/
Output
Enter value for dn: 10
old 2: dn number(5) := &dn;
new 2: dn number(5) := 10;
Total salary of Department 10 is 235300
Example
Write procedure to accept Department number and display Name, Designation and Age of each
employee belonging to such Department.
Create or replace procedure dept_list(dno number)
Is
cursor c1 is select * from emp where deptno = dno;
erec emp%rowtype;
Begin
For erec in c1
loop
dbms_output.put_line(‘Emp. Name : ‘ || erec.ename);
dbms_output.put_line(‘Designation : ‘|| erec.desg);
dbms_output.put_line(‘Age : ‘|| round((sysdate-erec.bdate)/
365,0);
dbms_output.put_line(‘=============================’);
End loop;
End;
/
40
Procedure created.
Output
SQL>exec dept_list(20);
Emp. Name : AANSHI
Designation : ANALYST
Age : 21
=========================
Emp. Name : TEJAS
Designation : MANAGER
Age : 27
=========================
Emp. Name : DAXESH
Designation : MANAGER
Age : 24
=========================
41
Experiment No. 12
Cursors:
In SQL when you submit a query, it returns number of rows depends on query. It may be zero or may
be hundreds. While in PL/SQL if your select statement returns multiple rows then oracle must return
Too_many_rows error message (Exception). In Such circumstances it is necessary to manipulate
multiple rows through PL/SQL Block without raising Exception. The resource that Oracle provides to
accomplish this job is the Cursor
Two kinds of cursor are used by Oracle: Implicit and Explicit. PL/SQL implicitly declares a
cursor for every SQL statement. Implicit cursors are declared by Oracle for each UPDATE, DELETE,
and INSERT SQL command. Explicit cursors are declared and used by the user to process multiple
rows returned by a SELECT statement. Explicitly defined cursors are constructs that enable the user to
name an area of memory to hold a specific statement for access at a later time.
Explicit Cursor:
User define cursor are known as Explicit cursor. Explicit cursor is one in which the cursor explicitly
assigned to the select statement. Processing of explicit cursor involves four steps.
1) Declare the cursor
2) Open the cursor
3) Fetch data from cursor
4) Close the cursor
Open <cursor_name>;
In this syntax, cursor_name is the name of the cursor that you have previously defined.
42
Fetching Data from the Cursor:
Getting data form the Activ Set is accomplished with FETCH command. The FETCH command
retrieves the rows from the active set one row at a time. The FETCH command is usually used in
conjunction with some type of iterative process. The first FETCH statement sorts the active set as
necessary. In the iterative process, the cursor advances to the next row in the active set each time the
FETCH command is executed. The FETCH command is the only means to navigate through the active
set. Syntax for Fetching Data from the Cursor is :
Fetch <cursor_name> into <record_list>;
Example
Declare
cursor c1 is select * from emp;
Begin
open c1;
if c1%isopen then
dbms_output.put_line(‘cursor already open’);
else
43
open c1;
end if;
close c1;
End;
/
Example
Declare
cursor cur_emp is select * from emp where ename like ‘A%’;
emp_rec emp%rowtype;
Begin
open cur_emp;
loop
fetch cur_emp into emp_rec;
exit when cur_emp%notfound;
dbms_output.put_line(‘Name : ‘ || emp_rec.ename);
dbms_output.put_line(‘Age : ‘ || round((sysdate-
emp_rec.bdate)/30, 0);
end loop;
close cur_emp;
End;
/
Above PL/SQL block of cursor will store all the records of employee into active set whose name start
with A and display their name with the age.
The %found attribute equates to true if the last FETCH statement returns row. Therefore, the
%found attribute is a logical opposite of the %notfound attribute. The %found attribute equates to false
when no rows are fetched. Like the %notfound, this attribute also equates to null prior to the first fetch.
The following example illustrates practical use of %found attribute.
Example
Declare
cursor cur_emp is select ename,salary from emp;
nm emp.ename%type;
sal emp.salary%type;
Begin
44
open cur_emp;
loop
fetch cur_emp into nm,sal;
if cur_emp%found then
dbms_output.put_line(‘Name : ’|| nm);
dbms_output.put_line(‘Salary : ’|| sal);
else
exit;
end if;
end loop;
close cur_emp;
End;
/
The %rowCount attribute returns the number of rows fetched so far for the cursor. Prior to the first
fetch, %rowcount is zero. There are many practical applications of the %rowcount attribute. The
following example will perform a commit after the first 250 employees’ salaries are processed.
Example
Declare
cursor c1 is select * from emp where salary > 4000;
emp_rec emp%rowtype;
Begin
open c1;
loop
fetch c1 into emp_rec;
exit when c1%rowcount > 5;
dbms_output.put_line(emp_rec.ename);
end loop;
close c1;
End;
/
45
The Syntax for cursor for loop :
For <record_list> in <cursor_name>
Loop
Statements;
End loop;
CURSOR FOR loops are ideal when you want all the records returned by the cursor. With
CURSOR FOR loops, you should not declare the record that controls the loop.
Example
Declare
cursor emp_cursor is select * from emp where deptno in (10,30);
emp_rec emp%rowtype;
Begin
for emp_rec in emp_cursor
loop
update emp set salary = salary + (salary * 0.10) where
empno = emp_rec.empno;
end loop;
End;
Aim: To write a Cursor to display the list of Male and Female Passengers:
DECLARE
cursor c(jb varchar2) is select Name from Passenger where Sex=m;
pr Passenger.Sex%type;
BEGIN
open c('m');
dbms_RESULT.put_line(' Name of Male Passenger are:');
loop
fetch c into pr;
exit when c%notfound;
dbms_RESULT.put_line(pr);
end loop;
close c;
open c('f');
47
Experiment No. 13
Syntax:
CREATE VIEW view_name AS
SELECT column1,column2,....
FROM table_name
WHERE condition;
Query:
Q1. Write a SQL query to create a view of customer table created in PRACTICAL no 1.
Output:
48
Experiment No. 14
CASE STUDY: GENERAL HOSPITAL
AIM: A General Hospital consists of a number of specialized wards (such as Maternity, Paediatry,
Oncology, etc). Each ward hosts a number of patients, who were admitted on the recommendation of
their own GP and confirmed by a consultant employed by the Hospital. On admission, the personal
details of every patient are recorded. A separate register is to be held to store the information of the
tests undertaken and the results of a prescribed treatment. A number of tests may be conducted for each
patient. Each patient is assigned to one leading consultant but may be examined by another doctor, if
required. Doctors are specialists in some branch of medicine and may be leading consultants for a
number of patients, not necessarily from the same ward.
49