DBMSUNIT-3
DBMSUNIT-3
UNIT-III
Queries, Constraints, Triggers: The Form of Basic SQL Query, Union, Intersect, and Except,
Nested Queries, Aggregate Operators, Null Values, Complex Integrity Constraints in SQL,
Triggers and Active Database.
Set Operations:
Union,
Except(minus)
Intersect
sname Account sname loan
Aijay A1
Vishal L1
Vijay A2
Ram L2
Ram A3
student1 student2
Union (U):- it is the binary operation between the two relations r and s. denoted by r U s. It is
the union of set of tuples of the two relations. Duplicate tuples are automatically removed from
the result. A tuple will appear in r U s if it exists in r or in s or both for U to be possible, r and s
must be compatible.
DATA BASE MANAGEMENT SYSTEMS
a) r and s must be of same degree i.e. they must have same no of attributes
b) For all i, the domain of ith attribute of r must be same as the domain of the ith
attribute of s.
Query:-. Get the names of those students who have either account or loan or both at the bank
SQL: select sname from student1 union select sname from student2;
Result:
Sname
Aijay
Vijay
Ram
Vishal
Except (-): The set difference operation (r -s) between two relations r and s produced a relation
with tuples which are in r but not there in s. To possible r-s, r and s must be compatible
Cardinality of r-s = cardinality (r) – cardinality (r ∩ s)
Query:. Get the names of those students who have account in the bank but do not have loan
SQL: select sname from student1 minus select sname from student2;
Result:
Sname
Ajay
Vijay
Intersect (∩): his operation r ∩ s between the relations r and s produced a relation with tuples
which are there in r as well as s. For is to be possible, relations r and s must be compatible
Query: get the names of those students who have account as well as loan
SQL: select sname from student1 intersect select sname from student2;
Result:
Sname
Aijay
Vijay
DATA BASE MANAGEMENT SYSTEMS
Data types:-
Each value in oracle is maintained by a data type.
The value of one data type is different from other data type.
The data type defines the domain of values that each column can contain
Character data types:-
This data type is used to store character data. Different character data types are
1.char
2.varchar2
1. Char data type: - it specifies fixed length character string. Size should be specified. If the
data is less then original specific size, blank spaces are applied. The default length is 1byte
and maximum length is 200 bytes.
Ex: - char (10);
2. Varchar2 data types: - it specifies the variable length character string. It occupies only
that space for which the data is supplied. The maximum size is 1byte and the maximum
size is 400 bytes.
Ex: - varchar2 (10);
c) Long data types: - these are used to store very large text strings. A single table can
have only one long column.
4. Date and time data type:-
• Date: - it is used to store date information. The default date format in oracle is DD-
MM-YYY Ex:- 29-07-2019
• Time: this is used to store time information. It has atleast 8 positions embedded in
single quotes. „HH:MM:SS‟
Ex: - 11:07:05
• Time stamp: - it includes both time and date along with minimum 6digits
representing decimal fraction of seconds. The format is „DD-MM-YYYY
HH:MM: SS‟
Ex: - ‟31-05-1950 01:02:05 123456‟
DATA BASE MANAGEMENT SYSTEMS
5. Large object data types: - these can store large and unstructural data like text, image,
video and special data. the max size is up to 4 GB
The types are
• BLOB(binary large object)
• CLOB(character large object) Maximum size is 4 GB
6. Raw and long raw data types: - these are used to store binary data or byte strings.
These are variable length data types. They are mostly used to store graphics, sound
documents etc.
SQL:
Structured Query Language is used to perform operations on the records stored in the database
such as updating records, deleting records, creating and modifying tables, views, etc.
SQL is just a query language; it is not a database. To perform SQL queries, you need to install
any database, for example, Oracle, MySQL, MongoDB, PostGre SQL, SQL Server, DB2, etc.
1. Insert
2. Update
3. Delete
Syntaxes and examples:-
1. Insert:- used to insert rows into a table
Syntax:- insert into <table-name>(col1,col2,---,coln)values(val1,val2,----,valn);
Ex:- insert into dept(deptno, dname,loc)values(50,‟xyz‟,‟hyd‟);
3. Data query language (DQL):- It is used to extract data from database tables.
4. Data control languages: - These commands control the user access to the database.
5. Data administrative language(DAL):- These commands are used for audit, the
commands are
1. Start audit;
2. Sleep audit;
6. Transaction control language(TCL):-These commands are used to control the transactions
1. Commit
2. Rollback
3. Savepoint
Syntaxes:-
1. commit;
2. rollback;
3. rollback to<save point name>;
Relational set operators:-
1. union:- merges the output of two or more queries into a single set of rows and
columns.
Ex:-select job from emp where deptno=10 union select job from emp where
deptno=30;
2. union all:- union suppresses the duplicates where as union all will also display
duplicates.
Ex:- select empno, ename from emp where deptno=10 union all select empno, ename
from emp where deptno=30;
DATA BASE MANAGEMENT SYSTEMS
3. intersect:- this operator returns the common rows that are common between two
queries.
Ex:- select job from emp where deptno=20 intersect select job from emp where
deptno=30;
1) Single row subquery: - These returns only one row from inner select statement.
It uses only single row operator. (>,=,<,<=,>=)
Ex: - select ename, sal, job from emp where sal>(select sal from emp where
empno=7566);
2) Multiple row subquery: - The subqueries return more than one row are called
multiple row sub queries. In this case multiple row operators are used.
.
I. <any less than the max value
II. >any greater than min value
4) Inline subquery:-in this the subquery may be applied in select list and inform clause.
Ex:- Select ename, sal, deptno from (select ename, sal, deptno, mgr, hiredate from
emp);
Aggregate functions: -
These are used to display the aggregated data from group of values.
1. max():- used to get max value from the list of values
ex:- select max(sal) from emp;
output:- MAX(sal)
------------
10000
2. min():- used to get min value from the group of values.
Ex: select min(sal) from emp;
Output:- MIN(sal)
------------
800
3. sum():- used to get the total sum of values.
ex:- select sum(sal)from emp;
output:- SUM(sal)
------------
37525
4. avg ():- used to get the average value of the given values.
Ex:- select avg(sal) from emp;
DATA BASE MANAGEMENT SYSTEMS
Output:- AVG(sal)
---------------
2680.35714
5. count():- used to count the list of values
ex:- selsct count(sal)from emp;
output:- COUNT(sal)
----------------
14
6. Order by clause:- it is used sort the values of column in ascending or descending
oreder.
Ex:- select ename from emp order by ename;
Output:-
ENAME
------------
Adems Allen Blake Clerk Ford James Jhons King Martin Miller Scort Smith Turner
Ward
8 rows are selected
Ex:- select sal from emp order by sal desc;
Output:-
SAL
-------
10000
5000 By default order by clause sort the values in ascending order
3000
3000
2975
2850
2450
7 rows selected
Group by clause:-this is used to display the group wise data i.e. department, job wise
Select deptno, count(*) from emp group by deptno;
DATA BASE MANAGEMENT SYSTEMS
Output:-
DEPTNO COUNT (*)
------------- ---------------
30 6
20 5
10 3
Having clause:
It is used to define conditions on a grouping column. Where clause defines conditions
on the selected columns where has the having clause places conditions on groups
created by the group by clause.
Ex: - select deptno, min(sal) from emp group by deptno having min(sal)>800;
DEPTNO MIN (sal)
------------- --------------
30 950
10 1300
Ex:- select job, min(sal)from emp group by job having min(sal)>800;
Output:-
JOB MIN (SAL)
--------- ----------------
Salesman 1250
President 5000
Manager 2450
analyst 3000
ex:- select job, sum(sal), avg(sal), min(sal), max(sal) from emp where deptno=20 group by
job having avg(sal)>1000 order by job;
JOB SUM (SAL) AVG (SAL) MIN(SAL) MAX(SAL)
----------------------------------------------------------------------------------------------------------------------------
Analyst 6000 3000 3000 3000
Manager 2976 2975 2975 2975
DATA BASE MANAGEMENT SYSTEMS
1. nvl()
2. nvl2()
3. coalesce()
nvl(expr/column, default value):-
This function returns first argument value if the first argument is not null, if it is null then it return
the 2nd argument value.
Ex: - select nvl(column,0) from emp;
In the output of above query if column is null then the default value (2nd argument) i.e. 0 will be
displayed, if column is not null then that value is displayed as it is.
output:-
nvl2(comm, sal+com, sal)
---------------------------------
DATA BASE MANAGEMENT SYSTEMS
800
1900
1750
2975
2650
2850
2450
7 rows selected.
Output:-
20 first not null value.
Select coalesce (null, null, 30) from dual;
Output:-
30 first not null value in the argument list.
Joins: - joins is a query that combines rows from two or more tables or views
if some column name appears more than one table, the name must be prefixed with
table name.
To join n tables together, we need a minimum of n-1 conditions.
Join types:-
1. Simple join/equi join/inner join
2. Non equi join
3. Self join
4. Cartesian product
5. Natural join
6. Outer join
2. Non equi join:- in this no column of one table will not corresponds to any column of
other table means the domain of no column in a table is not same as the domain of
other table.
in this type no equal operator based on common columns in the join condition.
Ex: - select E.ename, E.sal, S.grade from emp E, salgrade S where E.sal between
S.losal and S.hisal;
3. self join:- it is a join of table itself.
Ex:- select E1.ename “employee name”, E2.anme “managers name”,
From emp E1, emp E2 where E1.mgr=E2.empno;
4. Cartesian product:- the Cartesian product is a join without a join condition consider the
following relations
student1
sname account
Ajay A1
Vijay ram A2 A3
Student2
Sname loan
Vishal L1
ram L2
Student1 * stuednt2
Student1.sname account Student2.sname loan
Ajay A1 Vishal L1
Ajay A1 Ram L2
Vijay A2 Vishal L1
Vijay A2 Ram L2
Ram A3 Vishal L1
ram A3 ram L2
6. Outer join:- outer join extends the result of natural join. natural join will give the tuples
only based on the common attributes of the two relations. The information of the other
tuples will not be given by the natural join. it is possible to get such tuples information
by using outer join.
There are three types of outer joins:-
1. Left outer join(L.O.J)
2. Right outer join(R.O.J)
3. Full outer join(F.O.J)
L.O.J:- it gives the full information of left side table (1st table)along with the natural join.
R.O.J:- it gives the full information about right side table (2nd) along with the natural join.
sname account sname loan
Ram A3 Ram L2
vishal Null vishal L1
R.O.J:- it will give the full information about lest and right side tables along with natural
join.
sname account sname loan
Ram A3 Ram L2
Ajay A1 Ajay Null
Vijay A2 Vijay Null
vishal null vishal L1
SQL Queries:-
Select * from student1 left outer join students on
stydent1.sname = student2.sname;
stydent1.sname=student2.sname;
stydent1.sname=student2.sname;
DATA BASE MANAGEMENT SYSTEMS
PL/SQL
Basic Syntax of PL/SQL which is a block-structured language, this means that the PL/SQL
programs are divided and written in logical blocks of code. Each block consists of three sub-
parts
S.No Sections & Description
Declarations
1
This section starts with the keyword DECLARE. It is an optional section and
defines all variables, cursors, subprograms, and other elements to be used in the
program.
Executable Commands
This section is enclosed between the keywords BEGIN and END and it is a
2
mandatory section. It consists of the executable PL/SQL statements of the program.
It should have at least one executable line of code, which may be just a NULL
command to indicate that nothing should be executed.
Exception Handling
3
This section starts with the keyword EXCEPTION. This optional section contains
exception(s) that handle errors in the program.
Every PL/SQL statement ends with a semicolon (;). PL/SQL blocks can be nested within
other PL/SQL blocks using BEGIN and END. Following is the basic structure of a PL/SQL
DECLARE
<declarations section>
BEGIN
<executable command(s)> EXCEPTION
<exception handling> END;
Hello World
DATA BASE MANAGEMENT SYSTEMS
DECLARE
message varchar2(20):= 'Hello, World!';
BEGIN
dbms_output.put_line(message);
END;
/
Delimiter Description
% Attribute indicator
' Character string delimiter
. Component selector
(,) Expression or list delimiter
: Host variable indicator
, Item separator
" Quoted identifier delimiter
= Relational operator
; Statement terminator
:= Assignment operator
=> Association operator
DATA BASE MANAGEMENT SYSTEMS
|| Concatenation operator
** Exponentiation operator
<<, >> Label delimiter (begin and end)
.. Range operator
DECLARE
-- variable declaration
message varchar2(20):= 'Hello, World!';
BEGIN
/*
* PL/SQL executable statement(s)
*/ dbms_output.put_line(message);
END;
/
The PL/SQL supports single-line and multi-line comments. All characters available inside
any comment are ignored by the PL/SQL compiler. The PL/SQL single-line comments start
with the delimiter -- (double hyphen) and multi-line comments are enclosed by /* and */.
When the above code is executed at the SQL prompt, it produces the following result −
Hello World
PL/SQL procedure successfully completed.
PL/SQL block
Function
Package
Package body
Procedure
Trigger
Type
Type body
Triggers:
Trigger is invoked by Oracle engine automatically whenever a specified event occurs.
Trigger is stored into database and invoked repeatedly, when specific condition match. Triggers
are stored programs, which are automatically executed or fired when some event occurs.
Syntax:
CREATE [OR REPLACE ] TRIGGER trigger_name {BEFORE | AFTER | INSTEAD OF }
{INSERT | UPDATE | DELETE} [OF col_name] ON table_name
[REFERENCING OLD AS o NEW AS n] [FOR EACH ROW] WHEN (condition)
DECLARE
Declaration-statements
BEGIN
Executable-statements
EXCEPTION
Exception-handling-statements
END;
In a row level trigger, the trigger fires for each related row. And sometimes it is required to know
the value before and after the DML statement.
Oracle has provided two clauses in the RECORD-level trigger to hold these values. We can use
these clauses to refer to the old and new values inside the trigger body.
:NEW – It holds a new value for the columns of the base table/view during the trigger
execution
:OLD – It holds old value of the columns of the base table/view during the trigger
execution
INSERT UPDATE DELETE
: NEW VALID VALID
: OLD INVALID
audit_client
SQL> create table audit_client(clientno number,name varchar2(10),bal_due
number(10,2),operation varchar2(10),userid varchar2(10),odate date);
Active Database:
A database that has the ability to spontaneously react to events occurring inside as
well as outside the system is called active database. The ability to respond to external events
is called active behaviour. The active behaviour is based on the rules that integrate a
event with the desired effect. This behaviour is commonly defined in terms of ECA rules
allowing system to react to specific events.
Active Rules:
• The active behavior is achieved through theθ production rules/ active rules.
• The active rules are stored programs called triggers that are fired when an event
occurs.
• Triggers are written to respond to DML(select,θ insert etc), DDL( create, alter etc)
and Database Operations( Log-On, Log-Off )
• These triggers can be defined on table/view orθ the database to which event is
associated.