Database Systems: Lab Manual
Database Systems: Lab Manual
Database Systems: Lab Manual
LAB MANUAL
2008 – 2009
DEPARTMENT OF IT
VASAVI COLLEGE OF
ENGINEERING
IBRAHIMBAGH, HYDERABD-500 031.
www.vce.ac.in
0
Overview of SQL DDL, DML and DCL Commands.
1
Basic SQL DDL Commands.
To practice basic SQL DDL Commands such as CREATE, DROP, etc.
Example:
INPUT:
SQL> CREATE TABLE Emp ( EmpNo short CONSTRAINT PKey PRIMARY KEY,
SQL>Create table prog20 (pname varchar2(20) not null), doj date not null,dob date not null,
sex varchar(1) not null, prof1 varchar(20),prof2 varchar(20),salary number(7,2) not null);
RESULT:
Table created.
SQL>desc prog20;
PROF1 VARCHAR2(20)
PROF2 VARCHAR2(20)
2
2. SQL - ALTER TABLE
INPUT:
INPUT:
Single-row insert
3
Other Examples:
INPUT:
INPUT:
INPUT:
RESULT:
1 row created.
2. SQL - UPDATE
Syntax: UPDATE tablename SET column_name =value [ WHERE condition]
Examples:
1 row updated.
4
3. SQL - DELETE FROM
Syntax: DELETE FROM tablename WHERE condition
Examples:
DELETE FROM SP WHERE PNO= ‘P1’
DELETE FROM SP
INPUT:
1. COMMIT
Save changes (transactional).
Syntax:
INPUT:
SQL>commit;
5
2. ROLLBACK
Undo work done (transactional).
Syntax:
ROLLBACK [WORK] [TO [SAVEPOINT]'savepoint_text_identifier'];
INPUT:
SQL>rollback;
RESULT:Rollback complete.
3. SAVEPOINT
Save changes to a point (transactional).
Syntax:
SAVEPOINT text_identifier
Example:
UPDATE employees
SET salary = 95000
WHERE last_name = 'Smith';
SAVEPOINT justsmith;
UPDATE employees
SET salary = 1000000;
SAVEPOINT everyone;
COMMIT;
6
Writing and Practice of Simple Queries.
To write simple queries and practice them.
SQL>desc emp;
RESULT:
Name Null? Type
-------------------------------- ----------------------- -------------------------
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(3)
AGE NUMBER(3)
ESAL NUMBER(10)
SQL>desc dept;
RESULT:
Name Null? Type
--------------------------------- --------------------- ---------------------------
DEPTNO NOT NULL NUMBER(2)
DNAME VARCHAR2(14)
LOC VARCHAR2(13)
RESULT:
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO AGE ESAL
-------- ---------- --------- ---------- --------- ---------- ---------- ---------- ---------- -----------------
7369 SMITH CLERK 7902 17-DEC-80 800 0 20 25 0
7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30 25 0
7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30 25 0
7566 JONES MANAGER 7839 02-APR-81 2975 500 20 25 0
7698 BLAKE MANAGER 7839 01-MAY-81 2850 1400 30 25 0
7
4.List all employee names and their salaries, whose salary lies between
1500/- and 3500/- both inclusive.
INPUT
SQL>select ename from emp where sal between 1500 and 3500;
RESULT
ENAME
----------
ALLEN
JONES
BLAKE
CLARK
SCOTT
TURNER
FORD
russel
greg
9 rows selected.
5. List all employee names and their and their manager whose manager is
7902 or 7566 0r 7789.
INPUT SQL>select ename from emp where mgr in(7602,7566,7789);
RESULT
ENAME
-------
SCOTT
FORD
RESULT:
ENAME
---------
JONES
TURNER
JAMES
8
7. List all employee names and jobs, whose job title includes M or P.
INPUT SQL>select ename,job from emp where job like ‘M%’ or job like ‘P%’;
RESULT:
ENAME JOB
---------- ---------
JONES MANAGER
BLAKE MANAGER
CLARK MANAGER
KING PRESIDENT
RESULT:
JOB
---------
ANALYST
CLERK
MANAGER
PRESIDENT
SALESMAN
assistant
clerk
7 rows selected.
RESULT:
ENAME
----------
SMITH
JONES
CLARK
SCOTT
KING
ADAMS
FORD
MILLER
8 rows selected.
9
10. List all employee names , salary and 15% rise in salary.
INPUT SQL>select ename , sal , sal+0.15* sal from emp;
RESULT:
ENAME SAL SAL+0.15*SAL
---------- ---------- ------------
SMITH 800 920
ALLEN 1600 1840
WARD 1250 1437.5
JONES 2975 3421.25
MARTIN 1250 1437.5
BLAKE 2850 3277.5
CLARK 2450 2817.5
7 rows selected.
RESULT:
12. Find how many job titles are available in employee table.
INPUT SQL>select count (distinct job) from emp;
RESULT:
COUNT(DISTINCTJOB)
------------------
7
RESULT:
MAX(SAL)-MIN(SAL)
-----------------
4997
10
14. Display all employee names and salary whose salary is greater than
minimum salary of the company and job title starts with ‘M’.
INPUT SQL>select ename,sal from emp where job like ‘M%’ and sal > (select min (sal)
from emp);
RESULT
ENAME SAL
---------- ----------
JONES 2975
BLAKE 2850
CLARK 2450
15. Find how much amount the company is spending towards salaries.
INPUT SQL>select sum (sal) from emp;
RESULT
SUM(SAL)
---------
32928
16. Display name of the dept. with deptno 20.
INPUT SQL>select ename from emp where deptno = 20;
RESULT
ENAME
----------
SMITH
JONES
SCOTT
ADAMS
17. List ename whose commission is NULL.
INPUT SQL>select ename from emp where comm is null;
ENAME
RESULT ----------
CLARK
SCOTT
KING
ADAMS
JAMES
FORD
6 rows selected.
11
18. Find no.of dept in employee table.
INPUT SQL>select count (distinct ename) from emp;
RESULT
COUNT(DISTINCTENAME
--------------------
17
19. List ename whose manager is not NULL.
INPUT SQL>select ename from emp where mgr is not null;
RESULT
ENAME
----------
SMITH
ALLEN
WARD
JONES
MARTIN
5 rows selected.
Writing Queries using GROUP BY and other clauses.
To write queries using clauses such as GROUP BY, ORDER BY, etc. and retrieving
information by joining tables.
12
SALESMAN 5600
assistant 2200
clerk 2003
7 rows selected.
RESULT
PNAME SUM(SCOST)
-------------------- ----------
john 12000
kamala 12000
raju 12333
3 rows selected.
13
5. Display the number of packages sold by each programmer.
INPUT SQL>select pname, count(title) from software group by pname;
RESULT
PNAME COUNT(TITLE)
-------------------- ------------
john 1
kamala 1
raju 1
ramana 1
rani 1
5 rows selected.
6. Display the number of packages in each language for which the
development cost is less than thousand.
INPUT SQL>select devin, count(title) from software where dcost < 1000 group by devin;
RESULT
DEVIN COUNT(TITLE)
---------- ------------
cobol 1
14
9. Which is the costliest package developed in Pascal.
INPUT SQL>select title from software where devin = ‘PASCAL’ and dcost = (select
max(dcost)from software where devin = ‘PASCAL’);
RESULT
no rows selected
11.Who are the male programmers earning below the average salary of
female programmers?
INPUT SQL>select pname from programmer where sal < (select avg(sal) from programmer
where sex = ‘F’) and sex = ‘M’;
RESULT
PNAME
--------------------
vijay
no rows selected
15
14. Which language has been stated by the most of the programmers as
proficiency one?
INPUT SQL>select prof1, count(*) from programmer group by prof1 having count (*) =
(select max (count (*) ) from programmer group by prof1);
Set Operations:
UNION - OR
INTERSECT - AND
EXCEPT - - NOT
NESTED QUERY:- A nested query makes use of another sub-query to compute or retrieve
the information.
1. Find the name of the institute in which the person studied and
developed the costliest package.
INPUT SQL>select splace, pname from study where pname = (select pname from software
where scost = (select max (scost) from software);
RESULT
SPLACE PNAME
------------ -------------
SAHBHARI MARY
2. Find the salary and institute of a person who developed the highest
selling package.
INPUT SQL> select study.pname, sal, splace from study, programmer where study.pname =
programmer.pname and study.pname = (select pname from software where scost = (select
max (scost) from software));
RESULT
16
3. How many packages were developed by the person who developed the
cheapest package.
INPUT SQL>select pname, count (title) from software where dcost = (select min(dcost)
from software) group by pname;
RESULT
PNAME COUNT(TITLE)
------------- ----------------------
VIJAY 1
5. Display the title, scost, dcost, difference of scost and dcost in the
descending order of difference.
INPUT SQL> select title, scost, dcost, (scost - dcost) from software descending order by
(scost-dcost);
INPUT SQL>select pname,sal from programmer t where pname<>t.pname and sal= t.sal;
AIM: To write queries using single row functions and group functions.
1. Display the names and dob of all programmers who were born in
january.
INPUT SQL>select pname , dob from programmer where to_char (dob,’MON’)=’JAN’;
17
3. List out the programmer names who will celebrate their birthdays
during current month.
INPUT SQL>select pname from programmer where to_char(dob,’MON’) like to_char
(sysdate, ‘MON’);
18
Writing Queries on views.
1. Create a view from single table containing all columns from the base
table.
SQL>create view view1 as (select * from programmer);
RESULT
1 row created;
INPUT SQL>update view1 set salary =50000 where pname like ‘raju’;
Note: update command does not works for all queries on views.
19
6. Drop views which you generated.
INPUT SQL>drop view view1;
To write a PL/SQL block for inserting rows into EMPDET table with the following
Calculations:
HRA=50% OF BASIC
DA=20% OF BASIC
PF=7% OF BASIC
NETPAY=BASIC+DA+HRA-PF
INPUT
DECLARE
ENO1 empdet.eno%type;
ENAME1 empdet.name%type;
DEPTNO1 empdet.deptno%type;
BASIC1 empdet.basic%type;
HRA1 empdet.HRA%type;
DA1 empdet.DA%type;
PF1 empdet.pf%type;
NETPAY1 empdet.netpay%type;
BEGIN
ENO1:=&ENO1;
ENAME1:='&ENAME1';
DEPTNO1:=&DEPTNO1;
BASIC1:=&BASIC1;
HRA1:=(BASIC1*50)/100;
DA1:=(BASIC1*20)/100;
PF1:=(BASIC1*7)/100;
NETPAY1:=BASIC1+HRA1+DA1-PF1;
20
RESULT:
SQL> @BASIC
Enter value for eno1: 104
old 11: ENO1:=&ENO1;
new 11: ENO1:=104;
Enter value for ename1: SRINIVAS REDDY
old 12: ENAME1:='&ENAME1';
new 12: ENAME1:='SRINIVAS REDDY';
Enter value for deptno1: 10
old 13: DEPTNO1:=&DEPTNO1;
new 13: DEPTNO1:=10;
Enter value for basic1: 6000
old 14: BASIC1:=&BASIC1;
new 14: BASIC1:=6000;
SQL>/
Enter value for eno1: 105
old 11: ENO1:=&ENO1;
new 11: ENO1:=105;
Enter value for ename1: CIRAJ
old 12: ENAME1:='&ENAME1';
new 12: ENAME1:='CIRAJ';
Enter value for deptno1: 10
old 13: DEPTNO1:=&DEPTNO1;
new 13: DEPTNO1:=10;
Enter value for basic1: 6000
old 14: BASIC1:=&BASIC1;
new 14: BASIC1:=6000;
21
Writing PL/SQL block for checking armstrong number
To write a PL/SQL block to check whether given number is Armstrong or not.
INPUT
DECLARE
num number(5);
rem number(5);
s number(5):=0;
num1 number(5);
BEGIN
num:=#
num1:=num;
while(num>0)
loop
rem:=mod(num,10);
s:=s+power(rem,3);
num:=trunc(num/10);
End loop;
if (s=num1)then
dbms_RESULT.put_line(num1||' IS ARMSTRONG NUMBER ');
else
dbms_RESULT.put_line(num1||' IS NOT ARMSTRONG NUMBER ');
End if;
END;
/
RESULT:
SQL>@arm
Enter value for num: 153
old 7: num:=#
new 7: num:=153;
153 IS ARMSTRONG NUMBER
SQL> /
Enter value for num: 123
old 7: num:=#
new 7: num:=123;
123 IS NOT ARMSTRONG NUMBER
22
Writing a PL/SQL block for checking a number even or odd.
AIM: To write a PL/SQL block to check whether a given number is Even or Odd.
INPUT
DECLARE
num number(5);
rem number;
BEGIN
num:=#
rem:=mod(num,2);
if rem=0
then
dbms_RESULT.put_line(' Number '||num||' is Even');
else
dbms_RESULT.put_line(' Number '||num||' is Odd');
end if;
END;
RESULT:
SQL>start even
Enter value for num: 6
old 5: num:=#
new 5: num:=6;
Number 6 is Even
SQL> /
Enter value for num: 3
old 5: num:=#
new 5: num:=3;
Number 3 is Odd
PL/SQL procedure successfully completed.
23
To write a PL/SQL block to find Sum of Digits of a given Number.
INPUT
DECLARE
num number(5);
rem number(5);
sm number(5):=0;
num1 number(5);
BEGIN
num:=#
num1:=num;
while(num>0) loop
rem:=mod(num,10);
sm:=sm+rem;
num:=trunc(num/10);
end loop;
dbms_RESULT.put_line('SUM OF DIGITS OF '||num1||' IS: '||sm);
end;
/
RESULT:
SQL> @sum
INPUT truncated to 2 characters
Enter value for num: 123
old 7: num:=#
new 7: num:=123;
SUM OF DIGITS OF 123 IS: 6
PL/SQL procedure successfully completed.
SQL> @sum
INPUT truncated to 2 characters
Enter value for num: 456
old 7: num:=#
new 7: num:=456;
SUM OF DIGITS OF 456 IS: 15
PL/SQL procedure successfully completed.
24
Writing PL/SQL block for generating Fibonacci series.
To write a PL/SQL block to Generate Fibonacci Series
INPUT
DECLARE
num number(5);
f1 number(5):=0;
f2 number(5):=1;
f3 number(5);
i number(5):=3;
BEGIN
num:=#
dbms_RESULT.put_line('THE FIBONACCI SERIES IS:');
dbms_RESULT.put_line(f1);
dbms_RESULT.put_line(f2);
while(i<=num) loop
f3:=f1+f2;
dbms_RESULT.put_line(f3);
f1:=f2;
f2:=f3;
i:=i+1;
end loop;
END;
/
RESULT:
SQL> start fib
Enter value for num: 10
old 8: num:=#
new 8: num:=10;
THE FIBONACCI SERIES IS:
0
1
1
2
3
5
8
13
21
34
PL/SQL procedure successfully completed.
25
Writing PL/SQL block for checking palendrome.
INPUT
DECLARE
name1 varchar2(20);
name2 varchar2(20);
l number(5);
BEGIN
name1:='&name1';
l:=length(name1);
while l>0 loop
name2:=name2||substr(name1,l,1);
l:=l-1;
end loop;
dbms_RESULT.put_line('REVERSE OF STRING IS:'||NAME2);
if(name1=name2) then
dbms_RESULT.put_line(name1||' IS PALINDROME ');
else
dbms_RESULT.put_line(name1||' IS NOT PALINDROME ');
end if;
END;
/
RESULT
Enter value for name1: LIRIL
old 6: name1:='&name1';
new 6: name1:='LIRIL';
REVERSE OF STRING IS:LIRIL
LIRIL IS PALINDROME
SQL> /
Enter value for name1: MADAM
old 6: name1:='&name1';
new 6: name1:='MADAM';
REVERSE OF STRING IS:MADAM
MADAM IS PALINDROME
26
Writing PL/SQL block to demonstrate Cursors.
To write a Cursor to display the list of Employees and Total Salary Department wise.
INPUT
DECLARE
cursor c1 is select * from dept;
cursor c2 is select * from emp;
s emp.sal%type;
BEGIN
for i in c1 loop
s:=0;
dbms_RESULT.put_line('----------------------------------------------');
dbms_RESULT.put_line('Department is :' || i.deptno ||' Department name is:' ||
i.dname);
dbms_RESULT.put_line('-------------------------------------------');
for j in c2 loop
if ( i.deptno=j.deptno) then
s:=s+j.sal;
dbms_RESULT.put_line(j.empno|| ' '|| j.ename || ' '|| j.sal );
end if;
end loop;
dbms_RESULT.put_line('----------------------------------------------');
dbms_RESULT.put_line('Total salary is: '|| s);
dbms_RESULT.put_line('----------------------------------------------');
end loop;
END;
RESULT:
SQL> @abc
------------------------------------------------------------------------------
Department is :10 Department name is : ACCOUNTING
------------------------------------------------------------------------------
7782 CLARK 2450
7839 KING 5000
7934 MILLER 1300
-----------------------------------------------------------------------------
Total salary is: 8750
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
27
Department is :20 Department name is:RESEARCH
------------------------------------------------------------------------------
7369 SMITH 800
7566 JONES 2975
7788 SCOTT 3000
7876 ADAMS 1100
7902 FORD 3000
-----------------------------------------------------------------------------
Total salary is: 10875
------------------------------------------------------------------------------
------------------------------------------------------------------------------
Department is :30 Department name is:SALES
------------------------------------------------------------------------------
7499 ALLEN 1600
7521 WARD 1250
7654 MARTIN 1250
7698 BLAKE 2850
7844 TURNER 1500
7900 JAMES 950
------------------------------------------------------------------------------
Total salary is: 9400
------------------------------------------------------------------------------
------------------------------------------------------------------------------
Department is :40 Department name is:OPERATIONS
------------------------------------------------------------------------------
------------------------------------------------------------------------------
Total salary is: 0
------------------------------------------------------------------------------
PL/SQL procedure successfully completed.
28
Writing PL/SQL CURSOR
To write a Cursor to display the list of employees who are Working as a Managers or
Analyst.
INPUT
DECLARE
cursor c(jb varchar2) is select ename from emp where job=jb;
em emp.job%type;
BEGIN
open c('MANAGER');
dbms_RESULT.put_line(' EMPLOYEES WORKING AS MANAGERS ARE:');
loop
fetch c into em;
exit when c%notfound;
dbms_RESULT.put_line(em);
end loop;
close c;
open c('ANALYST');
dbms_RESULT.put_line(' EMPLOYEES WORKING AS ANALYST ARE:');
loop
fetch c into em;
exit when c%notfound;
dbms_RESULT.put_line(em);
end loop;
close c;
END;
RESULT:
29
Writing PL/SQL CURSOR
To write a Cursor to display List of Employees from Emp Table in PL/SQL block
INPUT
DECLARE
cursor c is select empno, ename, deptno, sal from emp ;
i emp.empno%type;
j emp.ename%type;
k emp.deptno%type;
l emp.sal%type;
BEGIN
open c;
dbms_RESULT.put_line('Empno, name, deptno, salary of employees are:= ');
loop
fetch c into i, j, k, l;
exit when c%notfound;
dbms_RESULT.put_line(i||' '||j||' '||k||' '||l);
end loop;
close c;
END;
RESULT:
SQL> @EMP
Empno,name,deptno,salary of employees are:=
7369 SMITH 20 800
7499 ALLEN 30 1600
7521 WARD 30 1250
7566 JONES 20 2975
7654 MARTIN 30 1250
7698 BLAKE 30 2850
7782 CLARK 10 2450
7788 SCOTT 20 3000
7839 KING 10 5000
7844 TURNER 30 1500
7876 ADAMS 20 1100
7900 JAMES 30 950
7902 FORD 20 3000
7934 MILLER 10 1300
PL/SQL procedure successfully completed.
30
Writing PL/SQL CURSOR
To write a Cursor to find employee with given job and deptno.
INPUT
DECLARE
cursor c1(j varchar2, dn number) is select empno, ename from emp where job=j and
deptno=dn;
row1 emp%rowtype;
jb emp.job%type;
d emp.deptno%type;
BEGIN
jb:='&jb';
d:=&d;
open c1(jb,d);
fetch c1 into row1.empno,row1.ename;
if c1%notfound then
dbms_RESULT.put_line('Employee does not exist');
else
dbms_RESULT.put_line('empno is:'||row1.empno||' ' ||'employee name is:'||
row1.ename);
end if;
END;
RESULT:
SQL> @CUR
Enter value for jb: MANAGER
old 7: jb:='&jb';
new 7: jb:='MANAGER';
Enter value for d: 20
old 8: d:=&d;
new 8: d:=20;
empno is:7566 employee name is:JONES
PL/SQL procedure successfully completed.
SQL> /
Enter value for jb: CLERK
old 7: jb:='&jb';
new 7: jb:='CLERK';
Enter value for d: 40
old 8: d:=&d;
new 8: d:=40;
Employee does not exist
PL/SQL procedure successfully completed.
31
Writing PL/SQL BLOCK using string functions.
To write a PL/SQL block to apply String Functions on a given input String.
INPUT
DECLARE
a varchar2(20);
l number(5);
BEGIN
a:='&a';
l:=length(a);
dbms_RESULT.put_line('Using Lower Function:' || lower(a));
dbms_RESULT.put_line('Using UPPER Function:' || upper(a));
dbms_RESULT.put_line('Using Initcap Function:' || initcap(a));
dbms_RESULT.put_line('Using Substring Function:' || substr(a,l,1));
dbms_RESULT.put_line('Using Substring Function:' || substr(a,1,3));
dbms_RESULT.put_line('Using Ltrim function for xxxabcxxxx:' ||
ltrim('xxxabcxxxx','x'));
dbms_RESULT.put_line('Using Rtrim function for xxxabcxxxx:'||
rtrim('xxxabcxxxx','x'));
dbms_RESULT.put_line('Using Lpad function :'|| lpad(a,l+4,'*'));
dbms_RESULT.put_line('Using Rpad function :'|| rpad(a,l+4,'*'));
END;
RESULT:
SQL>@STR
Enter value for a: santosh reddy
old 5: a:='&a';
new 5: a:='santosh reddy';
Using Lower Function:santosh reddy
Using UPPER Function:SANTOSH REDDY
Using Initcap Function:Santosh Reddy
Using Substring Function:y
Using Substring Function:san
Using Ltrim function for xxxabcxxxx:abcxxxx
Using Rtrim function for xxxabcxxxx:xxxabc
Using Lpad function :****santosh reddy
Using Rpad function :santosh reddy****
32
Using UPPER Function:UMA SHANKAR
Using Initcap Function:Uma Shankar
Using Substring Function:R
Using Substring Function:UMA
Using Ltrim function for xxxabcxxxx:abcxxxx
Using Rtrim function for xxxabcxxxx:xxxabc
Using Lpad function :****UMA SHANKAR
Using Rpad function :UMA SHANKAR****
33
Writing PL/SQL triggers
To write a TRIGGER to ensure that DEPT TABLE does not contain duplicate of
null values in DEPTNO column.
INPUT
CREATE OR RELPLACE TRIGGER trig1 before insert on dept for each row
DECLARE
a number;
BEGIN
if(:new.deptno is Null) then
raise_application_error(-20001,'error::deptno cannot be null');
else
select count(*) into a from dept where deptno=:new.deptno;
if(a=1) then
raise_application_error(-20002,'error:: cannot have duplicate deptno');
end if;
end if;
END;
RESULT:
SQL> @trigger
Trigger created.
34
ORA-04088: error during execution of trigger 'SCOTT.TRIG1'
SQL> /
Enter value for deptnp: 10
Enter value for dname: manager
Enter value for loc: hyd
old 1: insert into dept values(&deptnp,'&dname','&loc')
new 1: insert into dept values(10,'manager','hyd')
insert into dept values(10,'manager','hyd')
*
ERROR at line 1:
ORA-20002: error:: cannot have duplicate deptno
ORA-06512: at "SCOTT.TRIG1", line 9
ORA-04088: error during execution of trigger 'SCOTT.TRIG1'
SQL> /
Enter value for deptnp: 50
Enter value for dname: MARKETING
Enter value for loc: HYDERABAD
old 1: insert into dept values(&deptnp,'&dname','&loc')
new 1: insert into dept values(50,'MARKETING','HYDERABAD')
1 row created.
SQL> select * from dept;
35
Locking Table.
AIM: To learn commands related to Table Locking
Options:
PARTITION (partition)
SUBPARTITION (subpartition)
@dblink
lockmodes:
EXCLUSIVE
SHARE
ROW EXCLUSIVE
SHARE ROW EXCLUSIVE
ROW SHARE* | SHARE UPDATE*
Several tables can be locked with a single command - separate with commas
Even when a row is locked you can always perform a SELECT (because SELECT does not
lock any rows) in addition to this, each type of lock will allow additional locks to be granted
as follows.
ROW SHARE = Allow ROW EXCLUSIVE or ROW SHARE or SHARE locks to be granted
to the locked rows.
36
SHARE ROW EXCLUSIVE = Allow ROW SHARE locks to be granted to the locked rows.
SHARE = Allow ROW SHARE or SHARE locks to be granted to the locked rows.
Although it is valid to place more than one lock on a row, UPDATES and DELETE's may
still cause a wait if a conflicting row lock is held by another transaction.
Introduction
Use Form Builder to simplify for the creation of data-entry screens, also known as Forms.
Forms are the applications that connect to a database, retrieve information requested by the
user, present it in a layout specified by Form designer, and allow the user to modify or add
information. Form Builder allows you to build forms quickly and easily.
In this Hands-On, you learn how to: Create a Data block for the “Customer” table, Create a
layout, Use “content” canvas, Use “execute query”, Navigate a table, Use next, previous
record, Enter query, Manipulate table’s record, Insert, Update, Delete and Save record.
Form Builder Tool
Welcome window
You will get the ‘Welcome to the Form Builder’ window. If you don’t want to get this
window anymore uncheck the ‘Display at startup’ box. You can start your work with any of
the following options:
Use the data Block Wizard
Build a new form manually
Open an existing form
Build a form based on a template
The default is ‘Use the data Block Wizard.’ If you want to build a new form manually, click
on "Cancel” or check ‘Build a new form manually’ and click ‘OK.’
Connect to database
In the ‘Object Navigator’ window, highlight "Database Objects." Go to the Main menu and
choose "File," then "Connect."
In the ‘Connect’ window, login in as “scott” password “tiger,” then click “CONNECT.”
37
Notice that the box next to ‘Database Objects’ is not empty anymore and it has a ‘+’ sign in
it. That will indicate that this item is expandable and you are able to see its entire objects.
Click on the ‘+’ sign next to the ‘Database Objects’ to expand all database schemas.
Create a Module
In the ‘Object Navigator’ window, highlight module1. This is a default name. Go to the Main
menu and choose “File,” select “Save as” to store the new object in the “iself” folder and
save it as customer data entry. "c:_de." In this example the ‘DE’ abbreviation stands for Data
Entry.
Create a Data Block
In the ‘Object Navigator’ window, highlight "Data Blocks,” and click on the "create” icon.
The ‘Create’ icon is in the vertical tool bar in the ‘Object Navigator’ window. It is a green
‘+’ sign. If you drag your cursor on the icon a tooltip will show ‘Create.’
New Data Block
In the ‘New Data Block’ window, choose the default option “Data Block Wizard” and click
"OK."
Welcome Data Block
In the ‘Welcome Data Block Wizard’ window click on the “NEXT” icon.
Select the type of data block you would like to create by clicking on a radio button. Select the
default option ‘Table or View’ and then click “NEXT” again.
Selecting Tables
Click on “browse.” In the ‘Tables’ window, highlight the "cust11” table; then click "OK."
Selecting columns for the Data Block Wizard
To choose all columns, click on the two arrow signs in the ‘Data Block Wizard’ window. To
choose selected columns, click on the one arrow sign. And then select all columns, and click
“next.”
Layout Wizard
38
End of the Data Block Wizard and beginning of the Layout Wizard
In the ‘Congratulations’ screen, use the default checkmark radio button (Create the data
block, then call the Layout Wizard), and click "Finish." You can also use the Data Block
Wizard to modify your existing data block. Simply select the data block in the Object
Navigator and click the Data Block Wizard toolbar button, or choose ‘Data Block wizard’
from the ‘Tools’ menu.
Welcome screen
Selecting canvas
In the ‘Layout Wizard’ window, select the "new canvas" option. Canvas is a place that you
will have your objects such as columns, titles, pictures, etc. If you have already had your
canvas, select the canvas and then click on the next. The following are different types of
canvases: Content, Stacked, Vertical Toolbar, Horizontal Toolbar, and Tab.
Think of the ‘Content’ canvas as one flat place to have all your objects. In the stacked
canvas, you can have multiple layers of objects and it is the same as the tab canvas. You use
the vertical or horizontal toolbar canvases for your push buttons. Check the different types of
canvases by clicking on the ‘down arrow’ box next to the ‘Type’ field. Select "content," then
click “Next.”
Selecting Columns for the Layout Wizard
In the ‘Layout Wizard’ window, select all the columns. These are the columns that you want
to be displayed on the canvas. Then click “Next.”
Change your objects appearances
Change size or prompt if needed. In this window, you can enter a prompt, width, and height
for each item on the canvas. You can change the measurement units. As a default the default
units for item width and height are points. You can change it to inch or centimeter. When you
change size, click “Next.”
Selecting a layout style
Select a layout style for your frame by clicking a radio button. Select "Form," if you want
one record at a time to be displayed. Select “Tabular,” if you want more than one record at a
time to be displayed. Select "Forms," and then click “next.”
Record layout
39
Type the "Frame Title" and click "next." Checkmark the ‘Display Scrollbar’ box when you
use multiple records or the ‘Tabular’ option.
Congratulation Screen
Execute Query
Click on the "Execute Query" icon below the main menu. If you drag the cursor on the
toolbar in the ‘Forms Runtime’ window, a tooltip will be displayed and you see ‘Execute
Query.’
So to know all your option, drag your cursor to view all the icon descriptions.
Next Record
Previous Record
Enter Query
Insert Record
Click "Insert Record" to add new customer. All items on the forms will be blanked. You can
either type all the customer information or duplicate it from pervious record.
Duplicate Record
To duplicate the previous record, go to the main menu and select the ‘Record’ sub-menu. A
drop down menu will be displayed. Select the ‘Duplicate’ option in the sub-menu.
Apply the changes. Remember in this stage, your record was inserted but not committed yet.
Next and Previous Record
40
Click "next record" and "previous record" to navigate through the records and the one was
added.
Save transactions
Delete Record
Exit the FORM Runtime. If you have not committed any transaction, you will be prompted to
save changes. Click “YES” to save changes.
Click “OK” for acknowledgement.
Don’t forget to save the Form.
RABAD
41
Selecting the type of form to create
42
Object wizard
43
Selecting the canvas on which data block can be displayed
44
Form showing the Employee details
45
EXPT#28. Generating REPORTS using Oracle Developer 2000
AIM: To design reports using Oracle Developer 2000
Introduction
Tabular report shows data in a table format. It is similar in concept to the idea of an Oracle
table. Oracle, by default, returns output from your select statement in tabular format.
Hands-on
In this Hands-On, your client is a stock broker that keeps track of its customer stock
transactions. You have been assigned to write the reports based on their reports layout
requirements.
Your client wants you to create a simple listing report to show list of the stock trades by
using stocks table for their brokerage company
Your tasks are:
1- Write a tabular report.
2- Apply user layout Format mask.
3- Run the report.
4- Test the repot.
You will learn how to: use report wizard, object navigator, report builder, “date model”,
property palette, work on query and group box, see report style, use tabular style, navigating
through report’s record, change the format mask for dollar, numeric and date items.
46
(SQL Query Statement)
SELECT * FROM stocks
ORDER BY symbol
Click “OK.”
Change SQL box’s name
In the Data Model window, in the “SQL” box, right click on the ‘Q_1’ and open its property
palette.
In its property palette, change the name to Q_STOCKS. Then close the window.
Change GROUP box’s name
In the Data Model, right click on the group box (G_SYMBOL) and open its property palette.
In the Group property palette, change the name to ‘G_STOCKS,’ and close the window.
Open Report Wizard
In the Data Model, click on the ‘Report Wizard’ icon on the horizontal tool bar.
In the Style tab, on the Report Wizard window, type ‘Stock History’ in the Title box and
choose the report style as ‘Tabular.’
Notice that when you change the report style a layout of that report will be displayed on the
screen.
Choose a different style to display its layout of its report style.
Data, Fields, Totals, Labels and Template tabs
Click “NEXT” to go to the Data tab. In the ‘SQL Query Statement’ verify your query.
Click “NEXT” to navigate to the Fields tab, select the fields that you would like to be display
in your report. Select all the columns to be display.
Click “NEXT” to navigate to Totals tab, select the fields for which you would like to
calculate totals. We have none in this hands-on exercise.
Click “NEXT” to open the Labels tab, modify the labels and widths for your fields and totals
as desired.
Click “NEXT” again to go to the Template tab, and choose a template for your report. Your
report will inherit the template’s colors, fonts, line widths, and structure.
Use the default template and click “finish.”
Running a report
Now, you should have your output report on the screen.
Resize an object
Maximize the output report and format the report layout. To resize an object , select it and
drag its handler to the preferred size.
Move an object
To move an object, select and drag it while the cursor is on the object.
This is a simple report.
47
Navigate through the output
To navigate through the output report in the Report Editor - Live Pre-viewer, click on the
"next page" or "previous page" icon on the horizontal toolbar.
Do the same with the "first page" or "last page" icon.
Use the “zoom in” and “zoom out” icon to preview the report.
48
Selecting type of report
49
Creating reports
50
Selecting the Table in database
51
Selecting the columns in the report
52
Modify the labels in a table
53
Choose a template to represent the report
54
To specify the completion of report generation
55
56
EXPT#29. Providing Security using GRANT and REVOKE.
AIM: To learn GRANT and REVOKE commands to restrict privileges.
Syntax:
grantee:
user
role
57
PUBLIC
system_privs:
CREATE SESSION - Allows user to connect to the database
UNLIMITED TABLESPACE - Use an unlimited amount of any
tablespace.
SELECT ANY TABLE - Query tables, views, or mviews in any
schema
UPDATE ANY TABLE - Update rows in tables and views in any
schema
INSERT ANY TABLE - Insert rows into tables and views in any
schema
Also System Admin rights to CREATE, ALTER or DROP:
cluster, context, database, link, dimension, directory,
index,
materialized view, operator, outline, procedure, profile,
role,
rollback segment, sequence, session, synonym, table,
tablespace,
trigger, type, user, view. (full list of system privs)
object_privs:
SELECT, UPDATE, INSERT, DELETE, ALTER, DEBUG, EXECUTE, INDEX, REFERENCES
roles:
SYSDBA, SYSOPER, OSDBA, OSOPER, EXP_FULL_DATABASE, IMP_FULL_DATABASE
SELECT_CATALOG_ROLE, EXECUTE_CATALOG_ROLE, DELETE_CATALOG_ROLE
AQ_USER_ROLE, AQ_ADMINISTRATOR_ROLE - advanced queuing
SNMPAGENT - Enterprise Manager/Intelligent Agent.
RECOVERY_CATALOG_OWNER - rman
HS_ADMIN_ROLE - heterogeneous services
Notes:
WITH HIERARCHY OPTION will grant the object privilege on all subobjects, including
any created after the GRANT statement is issued.
WITH GRANT OPTION will enable the grantee to grant those object privileges to other
users and roles.
58
(ii) REVOKE Statement
Revoke privileges from users or roles.
Syntax:
Roles:
REVOKE role FROM {user, | role, |PUBLIC}
System Privs:
REVOKE system_priv(s) FROM {user, | role, |PUBLIC}
Object Privs:
REVOKE object_priv [(column1, column2..)] ON
[schema.]object
FROM {user, | role, |PUBLIC} [CASCADE CONSTRAINTS]
[FORCE]
key:
object_privs
ALTER, DELETE, EXECUTE, INDEX, INSERT,
REFERENCES, SELECT, UPDATE, ALL PRIVILEGES
system_privs
ALTER ANY INDEX, BECOME USER, CREATE TABLE, DROP ANY VIEW
RESTRICTED SESSION, UNLIMITED TABLESPACE, UPDATE ANY TABLE
59
plus too many others to list here
roles
Standard Oracle roles -
SYSDBA, SYSOPER, OSDBA, OSOPER, EXP_FULL_DATABASE,
IMP_FULL_DATABASE
plus any user defined roles you have available
FORCE, will revoke all privileges from a user-defined-type and mark it's dependent objects
INVALID.
The roles CONNECT, RESOURCE and DBA are now deprecated (supported only for
backwards compatibility) unless you are still running Oracle 6.0
Error ORA-01927 "cannot REVOKE privileges you did not grant" - This usually means you
tried revoking permission from the table owner, e.g.
Oracle will not allow REVOKE select on USER1.Table1 from USER1 Owners of objects
ALWAYS have full permissions on those objects. This is one reason it makes sense to place
tables in one schema and the packaged prodecures used to access those tables in a separate
schema.
REFERENCES:
1. Oracle 9i Release 2 (9.2) SQL Reference,
www.cs.ncl.ac.uk/teaching/facilities/swdoc/oracle9i/server.920/a96540/toc.htm.
4. Database Systems Instructor: Prof. Samuel Madden Source: MIT Open Courseware
(http://ocw.mit.edu).
60
VIVA VOICE QUESTIONS AND ANSWERS
1. What is database?
A database is a logically coherent collection of data with some inherent meaning,
representing some aspect of real world and which is designed, built and populated with data
for a specific purpose.
2. What is DBMS?
It is a collection of programs that enables user to create and maintain a database. In other
words it is general-purpose software that provides the users with the processes of defining,
constructing and manipulating the database for various applications.
4. Advantages of DBMS?
Ø Redundancy is controlled.
Ø Unauthorised access is restricted.
Ø Providing multiple user interfaces.
Ø Enforcing integrity constraints.
Ø Providing backup and recovery.
61
9. What is System R? What are its two major subsystems?
System R was designed and developed over a period of 1974-79 at IBM San Jose Research
Center. It is a prototype and its purpose was to demonstrate that it is possible to build a
Relational System that can be used in a real life environment to solve real life problems, with
performance at least comparable to that of existing system.
Its two subsystems are
Ø Research Storage
Ø System Relational Data System.
10. How is the data structure of System R different from the relational structure?
Unlike Relational systems in System R
Ø Domains are not supported
Ø Enforcement of candidate key uniqueness is optional
Ø Enforcement of entity integrity is optional
Ø Referential integrity is not enforced
62
These bodies of code are called methods. Objects that contain same types of values and the
same methods are grouped together into classes.
63
DDL.
64
40. How does Tuple-oriented relational calculus differ from domain-oriented relational
calculus
The tuple-oriented calculus uses a tuple variables i.e., variable whose only permitted values
are tuples of that relation. E.g. QUEL
The domain-oriented calculus has domain variables i.e., variables that range over the
underlying domains instead of over relation. E.g. ILL, DEDUCE.
65
functional dependency if removal of any attribute A from X means that the dependency does
not hold any more.
54. What are partial, alternate,, artificial, compound and natural key?
Partial Key:
It is a set of attributes that can uniquely identify weak entities and that are related to same
owner entity. It is sometime called as Discriminator.
Alternate Key:
All Candidate Keys excluding the Primary Key are known as Alternate Keys.
Artificial Key:
If no obvious key, either stand alone or compound is available, then the last resort is to
simply create a key, by assigning a unique number to each record or occurrence. Then this is
known as developing an artificial key.
Compound Key:
66
If no single data element uniquely identifies occurrences within a construct, then combining
multiple elements to create a unique identifier for the construct is known as creating a
compound key.
Natural Key:
When one of the data elements stored within a construct is utilized as the primary key, then it
is called the natural key.
55. What is indexing and what are the different kinds of indexing?
Indexing is a technique for determining how quickly specific data can be found.
Types:
Ø Binary search style indexing
Ø B-Tree indexing
Ø Inverted list indexing
Ø Memory resident table
Ø Table indexing
56. What is system catalog or catalog relation? How is better known as?
A RDBMS maintains a description of all the data that it contains, information about every
relation and index that it contains. This information is stored in a collection of relations
maintained by the system called metadata. It is also called data dictionary.
57. What is meant by query optimization?
The phase that identifies an efficient execution plan for evaluating a query that has the least
estimated cost is referred to as query optimization.
67
61. What is a Phantom Deadlock?
In distributed deadlock detection, the delay in propagating local information might cause the
deadlock detection algorithms to identify deadlocks that do not really exist. Such situations
are called phantom deadlocks and they lead to unnecessary aborts.
69. What are the primitive operations common to all record management systems?
Addition, deletion and modification.
68
70. Name the buffer in which all the commands that are typed in are stored
‘Edit’ Buffer
72. Are the resulting relations of PRODUCT and JOIN operation the same?
No.
PRODUCT: Concatenation of every row in one relation with every row in another.
JOIN: Concatenation of rows from one relation and related rows from another.
75. Which part of the RDBMS takes care of the data dictionary? How
Data dictionary is a set of tables and database objects that is stored in a special area of the
database and maintained exclusively by the kernel.
78. Define SQL and state the differences between SQL and other conventional
programming Languages
SQL is a nonprocedural language that is designed specifically for data access operations on
normalized relational database structures. The primary difference between SQL and other
conventional programming languages is that SQL statements specify what data operations
should be performed rather than how to perform them.
69
79. Name the three major set of files on disk that compose a database in Oracle
There are three major sets of files on disk that compose a database. All the files are binary.
These are
Ø Database files
Ø Control files
Ø Redo logs
The most important of these are the database files where the actual data resides. The control
files and the redo logs support the functioning of the architecture itself.
All three sets of files must be present, open, and available to Oracle for any data on the
database to be useable. Without these files, you cannot access the database, and the database
administrator might have to recover some or all of the database using a backup, if there is
one.
81. What are the four Oracle system processes that must always be up and running for
the database to be useable
The four Oracle system processes that must always be up and running for the database to be
useable include DBWR (Database Writer), LGWR (Log Writer), SMON (System Monitor),
and PMON (Process Monitor).
82. What are database files, control files and log files. How many of these files should a
database have at least? Why?
Database Files
The database files hold the actual data and are typically the largest in size. Depending on
their sizes, the tables (and other objects) for all the user accounts can go in one database file
—but that's not an ideal situation because it does not make the database structure very
flexible for controlling access to storage for different users, putting the database on different
disk drives, or backing up and restoring just part of the database.
You must have at least one database file but usually, more than one files are used. In terms of
accessing and using the data in the tables and other objects, the number (or location) of the
files is immaterial.
The database files are fixed in size and never grow bigger than the size at which they were
created Control Files
The control files and redo logs support the rest of the architecture. Any database must have at
least one control file, although you typically have more than one to guard against loss. The
control file records the name of the database, the date and time it was created, the location of
the database and redo logs, and the synchronization information to ensure that all three sets
70
of files are always in step. Every time you add a new database or redo log file to the
database, the information is recorded in the control files.
Redo Logs
Any database must have at least two redo logs. These are the journals for the database; the
redo logs record all changes to the user objects or system objects. If any type of failure
occurs, the changes recorded in the redo logs can be used to bring the database to a consistent
state without losing any committed transactions. In the case of non-data loss failure, Oracle
can apply the information in the redo logs automatically without intervention from the DBA.
The redo log files are fixed in size and never grow dynamically from the size at which they
were created.
71
86. Name two utilities that Oracle provides, which are use for backup and recovery.
Along with the RDBMS software, Oracle provides two utilities that you can use to back up
and restore the database. These utilities are Export and Import.
The Export utility dumps the definitions and data for the specified part of the database to an
operating system binary file. The Import utility reads the file produced by an export,
recreates the definitions of objects, and inserts the data
If Export and Import are used as a means of backing up and recovering the database, all the
changes made to the database cannot be recovered since the export was performed. The best
you can do is recover the database to the time when the export was last performed.
87. What are stored-procedures? And what are the advantages of using them.
Stored procedures are database objects that perform a user defined operation. A stored
procedure can have a set of compound SQL statements. A stored procedure executes the SQL
commands and returns the result to the client. Stored procedures are used to reduce network
traffic.
88. How are exceptions handled in PL/SQL? Give some of the internal exceptions' name
PL/SQL exception handling is a mechanism for dealing with run-time errors encountered
during procedure execution. Use of this mechanism enables execution to continue if the error
is not severe enough to cause procedure termination.
The exception handler must be defined within a subprogram specification. Errors cause the
program to raise an exception with a transfer of control to the exception-handler block. After
the exception handler executes, control returns to the block in which the handler was defined.
If there are no more executable statements in the block, control returns to the caller.
User-Defined Exceptions
PL/SQL enables the user to define exception handlers in the declarations area of subprogram
specifications. User accomplishes this by naming an exception as in the following example:
ot_failure EXCEPTION;
In this case, the exception name is ot_failure. Code associated with this handler is written in
the EXCEPTION specification area as follows:
EXCEPTION
when OT_FAILURE then
out_status_code := g_out_status_code;
out_msg := g_out_msg;
The following is an example of a subprogram exception:
EXCEPTION
when NO_DATA_FOUND then
g_out_status_code := 'FAIL';
RAISE ot_failure;
Within this exception is the RAISE statement that transfers control back to the ot_failure
exception handler. This technique of raising the exception is used to invoke all user-defined
exceptions.
System-Defined Exceptions
Exceptions internal to PL/SQL are raised automatically upon error. NO_DATA_FOUND is a
system-defined exception. Table below gives a complete list of internal exceptions.
72
PL/SQL internal exceptions.
PL/SQL internal exceptions.
In addition to this list of exceptions, there is a catch-all exception named OTHERS that traps
all errors for which specific error handling has not been established.
73
a) i & ii b) ii & iii
c) i & iii d) ii & iii
(a) i & iii because theta joins are joins made on keys that are not primary keys.
(d) Error - the ORDER BY clause. Since ORDER BY clause cannot be used in UNIONS
74
It is a program module that provides the interface between the low-level data stored in
database, application programs and queries submitted to the system.
103. What is cold backup and hot backup (in case of Oracle)?
Ø Cold Backup:
It is copying the three sets of files (database files, redo logs, and control file) when the
instance is shut down. This is a straight file copy, usually from the disk directly to tape. You
must shut down the instance to guarantee a consistent copy.
If a cold backup is performed, the only option available in the event of data file loss is
restoring all the files from the latest backup. All work performed on the database since the
last backup is lost.
Ø Hot Backup:
Some sites (such as worldwide airline reservations systems) cannot shut down the database
while making a backup copy of the files. The cold backup is not an available option.
So different means of backing up database must be used — the hot backup. Issue a SQL
command to indicate to Oracle, on a tablespace-by-tablespace basis, that the files of the
tablespace are to backed up. The users can continue to make full use of the files, including
75
making changes to the data. Once the user has indicated that he/she wants to back up the
tablespace files, he/she can use the operating system to copy those files to the desired backup
destination.
The database must be running in ARCHIVELOG mode for the hot backup option.
If a data loss failure does occur, the lost database files can be restored using the hot backup
and the online and offline redo logs created since the backup was done. The database is
restored to the most consistent state without any loss of committed transactions.
104. What are Armstrong rules? How do we say that they are complete and/or sound
The well-known inference rules for FDs
Ø Reflexive rule :
If Y is subset or equal to X then X Y.
Ø Augmentation rule:
If X Y then XZ YZ.
Ø Transitive rule:
If {X Y, Y Z} then X Z.
Ø Decomposition rule :
If X YZ then X Y.
Ø Union or Additive rule:
If {X Y, X Z} then X YZ.
Ø Pseudo Transitive rule :
If {X Y, WY Z} then WX Z.
Of these the first three are known as Amstrong Rules. They are sound because it is enough if
a set of FDs satisfy these three. They are called complete because using these three rules we
can generate the rest all inference rules.
105. How can you find the minimal key of relational schema?
Minimal key is one which can identify each tuple of the given relation schema uniquely. For
finding the minimal key it is required to find the closure that is the set of all attributes that are
dependent on any given set of attributes under the given set of functional dependency.
Algo. I Determining X+, closure for X, given set of FDs F
1. Set X+ = X
2. Set Old X+ = X+
3. For each FD Y Z in F and if Y belongs to X+ then add Z to X+
4. Repeat steps 2 and 3 until Old X+ = X+
76
if decomposition is not dependency preserving, then some dependency is lost in the
decomposition.
107. What is meant by Proactive, Retroactive and Simultaneous Update.
Proactive Update:
The updates that are applied to database before it becomes effective in real world .
Retroactive Update:
The updates that are applied to database after it becomes effective in real world .
Simulatneous Update:
The updates that are applied to database at the same time when it becomes effective in real
world .
77