You are on page 1of 53

www.bookspar.

com | Website for students | VTU NOTES

INDEX

SERIAL CONTENTS PAGE MARKS


NO. NO.

1. INSURANCE DATABASE 2

2. ORDER PROCESSING DATABASE 12

3. STUDENT DATABASE 23

4. BOOK DATABASE 34

5. BANKING DATABASE 44

1 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

PROBLEM 1

PROBLEM STATEMENT:

Consider the Insurance Database given below. The primary keys are
underlined and the datatypes are specified.

PERSON (driver-id: string, name: string, address: string)


CAR (regno: string, model: string, year: int)
ACCIDENT (report-number: int, accd-date: date, location: string)
OWNS (driver-id: string, regno: string)
PARTICIPATED (driver-id: string, regno: string, report-number: int,
damage amount: int)

i) Create the above tables by properly specifying the primary keys and the
foreign keys.

ii) Enter at least five tuples for each relation.

iii) Demonstrate how you


a. Update the damage amount for the car with a specific regno in the
accident with report number 12 to 25000.
b. Add a new accident to the database.

iv) Find the total number of people who owned cars that were involved in
accidents in 2008.

v) Find the number of accidents in which cars belonging to a specific model


were involved.

vi) Generate suitable reports.

vii) Create a suitable front end for querying and displaying the results.

2 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

SCHEMA DESCRIPTION:

PERSON CAR
DRIVER_ID NAME ADDRESS REG_NO MODEL YEAR

PARTICIPATED

DRIVER_ID REG_NO REPORTNO DAMAGEAMT


----------------- ------------- -----------------

ACCIDENT
REPORTNO DATE LOCATION

OWNS
DRIVER_ID REG_NO
-----------------
------------

3 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

ER DIAGRAM:

MODEL

REGNO YEAR

CAR

OWNS

NAME DRIVER_ID

PERSON

ADDRESS
DAMAGEAMT

PARTICIPATED

ACCIDENT

REPORT_NO LOCATION
DATE

4 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

TABLE CREATION

SQL> create table person


(
driver_id varchar(10) primary key,
name varchar(10),
address varchar(10)
);

Table created.

TABLE DESCRIPTION

SQL> describe person;


Name Null? Type
---------------------------------------------------------------------------------------
DRIVER_ID NOT NULL VARCHAR(10)
NAME VARCHAR(10)
ADDRESS VARCHAR(10)

INSERTING TUPLES

SQL> insert into person values('&driver_id','&name','&address');


Enter value for driver_id: 1
Enter value for name: aaa
Enter value for address: jbnagar
old 1: into person values ('&driver_id','&name','&address')
new 1: into person values ('1','aaa','jbnagar')

1 row created.

SQL> insert into person values(2,bbb,jaynagar);


SQL> insert into person values(3,ccc,basvangudi);
SQL> insert into person values(4,ddd,jpnagar);
SQL> insert into person values(5,eee,coxtown);

SQL> select * from person;

DRIVER_ID NAME ADDRESS


-----------------------------------------------
1 aaa jbnagar
2 bbb jaynagar
3 ccc basvangudi
4 ddd jpnagar
5 eee coxtown

5 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

TABLE CREATION

SQL> create table car


(
regno varchar(10) primary key,
model varchar(10),
year number(4)
);

Table created.

TABLE DESCRIPTION

SQL> describe car;


Name Null? Type
--------------------------------------------------------------------------------------
REGNO NOT NULL VARCHAR2(10)
MODEL VARCHAR2(10)
YEAR NUMBER(4)

INSERTING TUPLES

SQL> insert into car values ('&regno','&model','&year');


Enter value for regno: 1000
Enter value for model: zen
Enter value for year: 2002
old 1: insert into car values ('&regno','&model','&year')
new 1: insert into car values ('1000','zen','2002')

1 row created.
SQL> insert into car values(2000,innova,2005);
SQL> insert into car values(3000,omni,1999);
SQL> insert into car values(4000,zen,2004);
SQL> insert into car values(5000,scorpio,2008);

SQL> select * from car;

REGNO MODEL YEAR


---------------------------------------------
1000 zen 2002
2000 innova 2005
3000 omni 1999
4000 zen 2004
5000 scorpio 2008

6 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

TABLE CREATION

SQL> create table accident


(
repno number(4) primary key,
ddate date,
location varchar(10)
);

Table created.

TABLE DESCRIPTION

SQL> describe accident;


Name Null? Type
---------------------------------------------------------------------------------------
REPNO NOT NULL NUMBER(4)
DDATE DATE
LOCATION VARCHAR2(10)

INSERTING TUPLES

SQL> insert into accident values('&repno','&ddate','&location');


Enter value for repno: 10
Enter value for ddate: 06-jul-2008
Enter value for location: rjngr
old 1: ('&repno','&ddate','&location')
new 1: ('10','06-jul-2008','rjngr')

1 row created.

SQL> insert into accident values(20,26-mar-2006,aaa);


SQL> insert into accident values(30,24-apr-2008,bbb);
SQL> insert into accident values(40,7-jan-2008,ccc);
SQL> insert into accident values(50,17-feb-2009,ddd);

SQL> select * from accident;

REPNO DDATE LOCATION


-----------------------------------------------------
10 06-JUL-08 rjngr
20 26-MAR-06 aaa
30 24-APR-08 bbb
40 07-JAN-08 ccc
50 17-FEB-09 ddd

7 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

TABLE CREATION

SQL> create table owns


(
driver_id varchar(10) references person(driver_id),
regno varchar(10) references car(regno)
);

Table created.

TABLE DESCRIPTION

SQL> describe owns;


Name Null? Type
----------------------------------------------------------------------------------------
DRIVER_ID VARCHAR2(10)
REGNO VARCHAR2(10)

INSERTING TUPLES

SQL> insert into owns values('&driver_id','&regno');


Enter value for driver_id: 1
Enter value for regno: 1000
old 1: insert into owns values ('&driver_id','&regno')
new 1: insert into owns values ('1','1000')

1 row created.

SQL> insert into owns values(2,2000);


SQL> insert into owns values(3,3000);
SQL> insert into owns values(4,4000);
SQL> insert into owns values(5,5000);

SQL> select * from owns;

DRIVER_ID REGNO
-----------------------------
1 1000
2 2000
3 3000
4 4000
5 5000

8 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

TABLE CREATION

SQL> create table participated


(
driver_id varchar(10) references person(driver_id),
regno varchar(10) references car(regno),
repno number(4) references accident(repno),
damage number(6)
);

Table created.

TABLE DESCRIPTION

SQL> describe participated;


Name Null? Type
--------------------------------------------------------------------------------------------
DRIVER_ID VARCHAR2(10)
REGNO VARCHAR2(10)
REPNO NUMBER(4)
DAMAGE NUMBER(6)

INSERTING TUPLES

SQL> insert into participated values('&driver_id','&regno','&repno','&damage');


Enter value for driver_id: 1
Enter value for regno: 1000
Enter value for repno: 10
Enter value for damage: 2000
old 1: insert into participated values ('&driver_id','&regno','&repno','&damage')
new 1: insert into participated values ('1','1000','10','2000')

1 row created.

SQL> insert into participated values(2,2000,20,3000);


SQL> insert into participated values(3,3000,30,4000);
SQL> insert into participated values(4,4000,40,5000);
SQL> insert into participated values(5,5000,50,6000);

SQL> select * from participated;

DRIVER_ID REGNO REPNO DAMAGE


---------------------------------------------------------------------------
1 1000 10 2000
2 2000 20 3000
3 3000 30 4000
4 4000 40 5000
5 5000 50 6000

9 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

QUERIES

1. Demonstrate how you


a. Update the damage amount for the car with a specific Regno in the accident with
report number 12 to 25000.
SQL> update participated set damage=7777 where regno=3000 and repno between 12
and 25000;

1 row updated.

RESULT

SQL> select * from participated;

DRIVER_ID REGNO REPNO DAMAGE


---------------------------------------------------------------------------
1 1000 10 2000
2 2000 20 3000
3 3000 30 7777
4 4000 40 5000
5 5000 50 6000

EXPLANATION

The SQL command Update is used to change the value of attribute damage in table participated.
The where clause provides the condition which selects the tuples in where regno= 3000 and repno
lies between 12 and 25000.

b. Add a new accident to the database.

SQL> insert into accident values(77,'12-oct-2009','sevangr');

1 row created.

RESULT

SQL> select * from accident;

REPNO DDATE LOCATION


-----------------------------------------------------
10 06-JUL-08 rjngr
20 26-MAR-06 aaa
30 24-APR-08 bbb
40 07-JAN-08 ccc
50 17-FEB-09 ddd
77 12-OCT-09 sevangr

10 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

EXPLANATION

The insert command is used here to insert the tuples into the accident tables. The attributes are
specified in the braces.

2. Find the total number of people who owned cars that were involved in accidents
in 2008

SQL> select count(p.driver_id)


from person p,participated pa,accident a
where p.driver_id=pa.driver_id and pa.repno=a.repno and ddate like %08;

RESULT

COUNT(P.DRIVER_ID)
----------------------------------
3

EXPLANATION

The condition pa.repno and a.repno selects appropriate tuples with date ending in 08.The count
function counts the number of such tuples.

3. Find the number of accidents in which cars belonging to a specific model were
involved

SQL> select count(a.repno)


from accident a,participated p,car c
where a.repno=p.repno and p.regno=c.regno and c.model='zen';

RESULT

COUNT(A.REPNO)
--------------------------
2

EXPLANATION

The three relations are joined at their attributes correspondingly and the tuples with model name
zen are selected and count function counts the number of such tuples .

11 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

PROBLEM-2

PROGRAM STATEMENT:

Consider the following relations for an order processing database


application in a company.

CUSTOMER (cust #: int, cname: string, city: string)


ORDER (order #: int, odate: date, cust #: int, ord-Amt: int)
ORDER-ITEM (order #: int, item #: int, qty: int)
ITEM (item #: int, unit Price: int)
SHIPMENT (order #: int, warehouse #: int, ship-Date: date)
WAREHOUSE (warehouse #: int, city: string)

i) Create the above tables by properly specifying the primary keys and the
foreign keys.

ii) Enter at least five tuples for each relation.

iii) Produce a listing: CUSTNAME, NO_OF_ORDERS,


AVG_ORDER_AMT, where the middle column is the total number of
orders by the customer and the last column is the average order amount for
that customer.

iv) List the order# for the orders that were shipped from all the warehouses
that the company has in a specific city.

v) Demonstrate how you delete an item from the ITEM table and make that
field null in the ORDER-ITEM table.

vi) Generate suitable reports.

vii) Create a suitable front end for querying and displaying the results.

12 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

SCHEMA DESCRIPTION:

CUSTOMER
CUST_NO CNAME CITY

ORDER WAREHOUSE
ORDER_NO ODATE CUST_NO ORD_AMT WARE_NO CITY
--------------

ORDER_ITEM

ORDER_NO ITEM_NO QUANTITY


----------------- --------------

ITEM
ITEM_NO UNIT_PRICE

SHIPMENT
ORDER_NO WARE_NO SHIP_DATE
------------------ ---------------

13 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

ER DIAGRAM:

CNAME
CUST_ID C_CITY

CUSTOMER

PLACE
ORD_AMT ORDER_N
S O

ORDER O_DATE

QTY

SHIPMEN
T
ORDER_ITE
M ORD_AM
T
WAREHOUSE

ITEM

WARE_NO CITY

UNIT_PRICE

ITEM_NO

14 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

TABLE CREATION

SQL> create table customer


(
custno number(4) primary key,
cname varchar(10) not null,
city varchar(10) not null
);

Table created.

TABLE DESCRIPTION

SQL> describe customer;


Name Null? Type
-----------------------------------------------------------------------------
CUSTNO NOT NULL NUMBER(4)
CNAME NOT NULL VARCHAR2(10)
CITY NOT NULL VARCHAR2(10)

INSERTING TUPLES

SQL> insert into customer values('&custno','&cname','&city');


Enter value for custno: 1
Enter value for cname: ddd
Enter value for city: chennai
old 1:insert into customer values('&custno','&cname','&city')
new 1:insert into customer values('1','ddd','chennai')

1 row created.

SQL> insert into customer values('2','aaa','bangalore');


SQL> insert into customer values(3,bbb,delhi);
SQL> insert into customer values(4,eee,kolkata);
SQL> insert into customer values(5,fff,mumbai);

SQL> select * from customer;


CUSTNO CNAME CITY
-------------------------------------------------------------------------
1 ddd chennai
2 aaa banglore
3 bbb delhi
4 eee kolkata
5 fff mumbai

15 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

TABLE CREATION

SQL> create table orders


(
ordno number(4) primary key,
odate date not null,
custno number(4) not null references customer(custno) on delete cascade,
amount number(4) not null
);

Table created.

TABLE DESCRIPTION

SQL> describe orders;


Name Null? Type
-----------------------------------------------------------------------------
ORDNO NOT NULL NUMBER(4)
ODATE NOT NULL DATE
CUSTNO NOT NULL NUMBER(4)
AMOUNT NOT NULL NUMBER(4)

INSERTING TUPLES

SQL> insert into orders values ('&ordno','&odate','&custno','&amount');


Enter value for ordno: 11
Enter value for odate: 11-sep-2009
Enter value for custno: 1
Enter value for amount: 100
old 1: insert into orders values ('&ordno','&odate','&custno','&amount')
new 1: insert into orders values ('11','11-sep-2009','1','100')

SQL>insert into orders values (12,12-JAN-2004,2,200);


SQL>insert into orders values (13,20-FEB-2005,1,300);
SQL>insert into orders values (14,15-AUG-99,4,400);
SQL>insert into orders values (15,12-DEC-2000,2,500);

SQL> select * from orders;

ORDNO ODATE CUSTNO AMOUNT


--------------------------------------------------------------------------------------------
11 11-SEP-09 1 100
12 12-JAN-04 2 200
13 20-FEB-05 1 300
14 15-AUG-99 4 400
15 12-DEC-00 2 500

16 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

TABLE CREATION

SQL> create table items


(
itemno number(4) primary key ,
price number(4) not null
);
Table created.

TABLE DESCRIPTION

SQL> describe items;


Name Null? Type
-----------------------------------------------------------------------------
ITEMNO NOT NULL NUMBER(4)
PRICE NOT NULL NUMBER(4)

INSERTING TUPLES

SQL> insert into items values('&itemno','&price');


Enter value for itemno: 1
Enter value for price: 2000
old 1: ('&itemno','&price')
new 1: ('1','2000')

1 row created.
SQL> insert into items values(2,2000);
SQL> insert into items values(3,1320);
SQL> insert into items values(4,2300);
SQL> insert into items values(5,1200);

SQL> select * from items;

ITEMNO PRICE
--------------------------------
1 2000
2 2000
3 1320
4 2300
5 1200

17 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

TABLE CREATION

SQL> create table order_item


(
ordno number(4) references orders(ordno) on delete cascade,
itemno number(4) references items(itemno) on delete set null,
qty number(4),
primary key(ordno)
);

Table created.

TABLE DESCRIPTION

SQL> describe order_item;


Name Null? Type
-----------------------------------------------------------------------------
ORDNO NOT NULL NUMBER(4)
ITEMNO NUMBER(4)
QTY NUMBER(4)

INSERTING TUPLES

SQL> insert into order_item values ('&ordno','&itemno','&qty');


Enter value for ordno: 11
Enter value for itemno: 1
Enter value for qty: 8
old 1: insert into order_item values ('&ordno','&itemno','&qty')
new 1: insert into order_item values ('11','1','8')

1 row created.

SQL> insert into order_item values(12,2,1);


SQL> insert into order_item values(13,3,2);
SQL> insert into order_item values(14,4,5);
SQL> insert into order_item values(15,3,9);

SQL> select * from order_item;

ORDNO ITEMNO QTY


----------------------------------------------
11 1 8
12 2 1
13 3 2
14 4 5
15 3 9

18 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

TABLE CREATION

SQL> create table warehouse


(
wareno number(4) primary key,
city varchar(10)
);

Table created.

TABLE DESCRIPTION

SQL> describe warehouse;


Name Null? Type
-----------------------------------------------------------------------------
WARENO NOT NULL NUMBER(4)
CITY VARCHAR2(10)

INSERTING TUPLES

SQL> insert into warehouse values('&wareno','&city');


Enter value for wareno: 1
Enter value for city: delhi
old 1: insert into warehouse values('&wareno','&city')
new 1: insert into warehouse values ('1','delhi')

1 row created.

SQL> insert into warehouse values(2,poona);


SQL> insert into warehouse values(3,delhi);
SQL> insert into warehouse values(4,madras);
SQL> insert into warehouse values(5,hyd);

SQL> select * from warehouse;

WARENO CITY
---------------------------------
1 delhi
2 poona
3 delhi
4 madras
5 hyd

19 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

TABLE CREATION

SQL> create table shipment


(
ordno number(4) references orders(ordno),
wareno number(4) references warehouse(wareno),
shipdate date,
primary key(ordno,wareno)
);

Table created.

TABLE DESCRIPTION

SQL> describe shipment;


Name Null? Type
-----------------------------------------------------------------------------
ORDNO NOT NULL NUMBER(4)
WARENO NOT NULL NUMBER(4)
SHIPDATE DATE

INSERTING TUPLES

SQL> insert into shipment values('&ordno','&wareno','&sdate');


Enter value for ordno: 11
Enter value for wareno: 1
Enter value for sdate: 16-jul-1998
old 1: insert into shipment values ('&ordno','&wareno','&sdate')
new 1: insert into shipment values ('11','1','16-jul-1998')
1 row created.

SQL> insert into shipment values(12,2,22-NOV-03);


SQL> insert into shipment values(13,3,16-FEB-95);
SQL> insert into shipment values(14,4,31-JAN-08);
SQL> insert into shipment values(15,5,16-AUG-00);

SQL> select * from shipment;

ORDNO WARENO SHIPDATE


-------------------------------------------------------------------
11 1 16-JUL-98
12 2 22-NOV-03
13 3 16-FEB-95
14 4 31-JAN-08
15 5 16-AUG-00

20 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

QUERIES

1.Produce a listing: CUSTNAME, NO_OF_ORDERS, AVG_ORDER_AMT, where


the middle column is the total numbers of orders by the customer and the last
column is the average order amount for that customer.

SQL> select c.cname as custname,count(*) as no_of_orders,avg(oi.qty*i.price) as avg_order_amt


from customer c,orders o,order_item oi,items i
where c.custno=o.custno and o.ordno=oi.ordno and i.itemno=oi.itemno
group by(c.cname);

RESULT

CUSTNAME NO_OF_ORDERS AVG_ORDER_AMT


-----------------------------------------------------------------------------
aaa 2 6940
eee 1 11500
ddd 2 9320

EXPLANATION

This query produces the list of customers with no of orders. The three relations are joined at
corresponding attributes. The count function is used to display the names. The average is the
product of quantity and price.

2. List the order# for orders that were shipped from all the warehouses that the
company has in a specific city.

SQL> select s.ordno


from shipment s,warehouse w
where w.wareno=s.wareno and w.city='delhi';

RESULT

ORDNO
----------
11
13

EXPLANATION

The two tables warehouse and shipment are joined and the tuples with given city name are
selected and orderno is selected.

21 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

3. Demonstrate how you delete item# from the ITEM table and make that field null
in the ORDER_ITEM table

SQL> delete
from items
where itemno=1;

1 row deleted.

RESULT

SQL> select * from item;

ITEMNO PRICE
--------------------------------
2 2000
3 1320
4 2300
5 1200

SQL> select *from order_item;

ORDNO ITEMNO QTY


----------------------------------------------
11 8
12 2 1
13 3 2
14 4 5
15 3 9

EXPLANATION

Since the attribute itemno is a primary key, we have eliminated that constraint and after that the
tuples with the indicated itemno are deleted. Also in the order_item table the tuple which
contained itemno 10 has been made null.

22 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

PROBLEM 3

PROBLEM STATEMENT:

Consider the following database of student enrollment in courses and books


adopted for each course .

STUDENT (regno: string, name: string, major: string, bdate: date)


COURSE (course#: int, cname: string, dept: string)
ENROLL ( regno: string, course#: int, sem: int, marks: int )
BOOK_ADOPTION (course#: int, sem: int, book-ISBN: int)
TEXT(book-ISBN: int, book-title: string, publisher: string, author: string)

i) Create the above tables by properly specifying the primary keys and the
foreign keys.

ii) Enter atleast five tuples for each relation.

iii) Demonstrate how you add a new text book to the database and make this
book be adopted by some department.

iv) Produce a list of text books (include Course #, Book-ISBN, Book-title)


in the alphabetical order for courses offered by the CS department that use
more than two books.

v) List any department that has all its adopted books published by a specific
publisher.

vi) Generate suitable reports.

vii) Create suitable front end for querying and displaying the results.

23 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

SCHEMA DESCRIPTION:

STUDENT COURSE
REG_NO NAME MAJOR BDATE COURSE_NO CNAME CITY

ENROLL
REG_NO COURSE_NO SEM MARKS
------------- ------------------

BOOK ADOPTION
COURSE_NO BOOK_ISBN SEM

TEXT
BOOK_ISBN BOOK_TITLE PUBLISHER AUTHOR

24 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

ER DIAGRAM:

NAME MAJOR

B_DATE

STUDENT

REG_N
O
ENROLL MARKS

SEM

CNAME
COURSE

COURS DEPT
E

BOOK_ADOPTIO
N
SEM

TEXT

ISBN
TITLE
AUTHOR

PUBLISHER

25 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

TABLE CREATION

SQL> create table student


(
regno varchar(10) primary key,
name varchar(15) not null,
major varchar(30) not null,
bdate date not null
);

Table created.

TABLE DESCRIPTION

SQL> describe student;


Name Null? Type
-----------------------------------------------------------------------------
REGNO NOT NULL VARCHAR2(10)
NAME NOT NULL VARCHAR2(15)
MAJOR NOT NULL VARCHAR2(30)
BDATE NOT NULL DATE

INSERTING TUPLES

SQL> insert into student values ('&regno','&name','&major','&bdate');


Enter value for regno: 101
Enter value for name: akash
Enter value for major: dbms
Enter value for bdate: 11-jan-1989
old 2: ('&regno','&name','&major','&bdate')
new 2: ('101','akash','dbms','11-jan-1989')

1 row created.

SQL> insert into student values('102','arvind','algorithms','22-feb-1988');


SQL> insert into student values('103','anveesh','unix','23-mar-1989');
SQL> insert into student values('104','virinchi','game theory','24-apr-90');
SQL> insert into student values('105','vageesh','game theory','25-may-90');

SQL> select * from student;

REGNO NAME MAJOR BDATE


----------------------------------------------------------------------------
101 akash dbms 11-JAN-89
102 arvind algorithms 22-FEB-88
103 anveesh unix 23-MAR-89
104 virinchi game theory 24-APR-90
105 vageesh game theory 25-MAY-90

26 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

TABLE CREATION

SQL> create table course


(
course integer primary key,
cname varchar(30) not null,
dept varchar(30) not null
);

Table created.

TABLE DESCRIPTION

SQL> describe course;


Name Null? Type
-----------------------------------------------------------------------------
COURSE NOT NULL NUMBER(38)
CNAME NOT NULL VARCHAR2(30)
DEPT NOT NULL VARCHAR2(30)

INSERTING TUPLES

SQL> insert into course values ('&course','&cname','&dept');


Enter value for course: 1
Enter value for cname: mtech
Enter value for dept: cse
old 2: ('&course','&cname','&dept')
new 2: ('001','mtech','cse')

1 row created.

SQL> insert into course values('2','me','cse');


SQL> insert into course values('3','mtech','ise');
SQL> insert into course values('4','bsc','cse');
SQL> insert into course values('5','mca','ise');

SQL> select * from course;

COURSE CNAME DEPT


----------------------------------------------------------------------
1 mtech cse
2 me cse
3 mtech ise
4 bsc cse
5 mca ise

27 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

TABLE CREATION

SQL> create table text


(
book_isbn integer primary key,
book_title varchar(30) not null,
publisher varchar(30) not null,
author varchar(30) not null
);

Table created.

TABLE DESCRIPTION

SQL> describe text;


Name Null? Type
-----------------------------------------------------------------------------
BOOK_ISBN NOT NULL NUMBER(38)
BOOK_TITLE NOT NULL VARCHAR2(30)
PUBLISHER NOT NULL VARCHAR2(30)
AUTHOR NOT NULL VARCHAR2(30)

INSERTING TUPLES

SQL>insert into text values ('&book_isbn','&book_title','&publisher','&author');


Enter value for book_isbn: 111
Enter value for book_title: linux
Enter value for publisher: pearson
Enter value for author: sumithaba das
old 2: ('&book_isbn','&book_title','&publisher','&author')
new 2: ('111','linux','pearson','sumithaba das')

1 row created.

SQL> insert into text values('222','compiler design','tmh','tenenbaum');


SQL> insert into text values('333','computer graphics','pearson','micheal folk');
SQL> insert into text values('444','data structures','venugopal','tmh');
SQL> insert into text values('555','file structures','godse','himalaya');

SQL> select * from text;

BOOK_ISBN BOOK_TITLE PUBLISHER


----------------------------------------------------------------------------------------
AUTHOR
------------------------------
111 linux pearson
sumithaba das

28 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

222 compiler design tmh


tenenbaum
333 computer graphics pearson
micheal folk

BOOK_ISBN BOOK_TITLE PUBLISHER


----------------------------------------------------------------------------------------
AUTHOR
------------------------------
444 data structures venugopal
tmh

555 file structures godse


himalaya

TABLE CREATION

SQL> create table enroll


(
regno varchar(10) not null,
course integer not null,
sem integer not null,
marks integer not null,
primary key(regno,course,sem),
foreign key (regno) references student (regno) on delete cascade,
foreign key (course) references course (course) on delete cascade
);

Table created.

TABLE DESCRIPTION

SQL> describe enroll;


Name Null? Type
--------------------------------------------------------------------------
REGNO NOT NULL VARCHAR2(10)
COURSE NOT NULL NUMBER(38)
SEM NOT NULL NUMBER(38)
MARKS NOT NULL NUMBER(38)

INSERTING TUPLES

SQL>insert into enroll values ('&regno','&course','&sem','&marks');


Enter value for regno: 103
Enter value for course: 3
Enter value for sem: 5
Enter value for marks: 590
old 2: ('&regno','&course','&sem','&marks')

29 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

new 2: ('103','003','5','590')

SQL> insert into enroll values('105','5','6','789');


SQL> insert into enroll values('102','1','4','678');
SQL> insert into enroll values('101','1','6','430');
SQL> insert into enroll values('104','4','4','556');

SQL> select * from enroll;

REGNO COURSE SEM MARKS


----------------------------------------------------
103 3 5 590
105 5 6 789
102 1 4 678
101 1 6 430
104 4 4 556

TABLE CREATION

SQL> create table book_adoption


(
course integer not null,
sem integer not null,
book_isbn integer not null,
primary key(course,sem,book_isbn),
foreign key (course) references course (course) on delete cascade,
foreign key (book_isbn) references text (book_isbn) on delete cascade
);

Table created.

TABLE DESCRIPTION

SQL> describe book_adoption;


Name Null? Type
---------------------------------------------------------------------
COURSE NOT NULL NUMBER(38)
SEM NOT NULL NUMBER(38)
BOOK_ISBN NOT NULL NUMBER(38)

INSERTING TUPLES

SQL>insert into book_adoption values


('&course','&sem','&book_isbn');
Enter value for course: 1
Enter value for sem: 5
Enter value for book_isbn: 111
old 2: ('&course','&sem','&book_isbn')
new 2: ('001','5','111')

30 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

1 row created.

SQL> insert into book_adoption values('1','6','222');


SQL> insert into book_adoption values('2','4','333');
SQL> insert into book_adoption values('3','6','444');
SQL> insert into book_adoption values('4','4','555');

SQL> select * from book_adoption;

COURSE SEM BOOK_ISBN


-----------------------------------------------------
1 5 111
1 6 222
1 4 333
3 6 444
4 4 555

QUERIES

1. Demonstrate how you add a new text book to the database and make this book be
adopted by some department

SQL> insert into text values


('666','computer networks','venugopal','ferouzon');

1 row created.

SQL> insert into book_adoption values


('5','6','666');

1 row created.

RESULT:

SQL> select * from text;

BOOK_ISBN BOOK_TITLE PUBLISHER


---------- ------------------------------ ------------------------------
AUTHOR
------------------------------
111 linux pearson
sumithaba das

222 compiler design tmh


tenenbaum

31 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

333 computer graphics pearson


micheal folk

BOOK_ISBN BOOK_TITLE PUBLISHER


---------- ------------------------------ ------------------------------
AUTHOR
------------------------------
444 data structures venugopal
tmh

555 file structures godse


himalaya

666 computer networks venugopal


ferouzon

6 rows selected.

SQL> select * from book_adoption;

COURSE SEM BOOK_ISBN


-------------------------------------------------
1 5 111
1 6 222
1 4 333
3 6 444
4 4 555
5 6 666

6 rows selected.

EXPLANATION

INSERT can be used to add a single tuple to a relation. Thus information about a new text book
can be added to the TEXT entity using INSERT command. The new text book can be made to be
adopted by some department using INSERT. The values which are added to the
BOOK_ADOPTION contain COURSE and SEM of the department and semester which uses the
textbook, along with the BOOK_ISBN of the textbook through which other information of the
textbook can be obtained.

2.Produce a list of textbooks in the alphabetic order for courses offered by the CSE
department that use more than two books

SQL> select c.course, t.book_isbn, t.book_title


from course c, book_adoption ba, text t
where c.course=ba.course and c.dept='cse' and ba.book_isbn=t.book_isbn
and exists (select count(course)
from book_adoption

32 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

where course=c.course
group by course
having count(course)>2)
order by book_title;

RESULT

COURSE BOOK_ISBN BOOK_TITLE


-------------------------------------------------------------
1 222 compiler design
1 333 computer graphics
1 111 linux

EXPLANATION

The first nested query selects the Departments which use more than two books. To select the
departments EXIST function is used to check whether there are any department which use more
than two books. In the outer query, we select the courseno, book_isbn and book_title of the
textbooks for courses offered by the CSE department. In the outer query, the join condition
C.COURSE= BA.COURSE relates the COURSE and BOOK_ADOPTION and the condition
DEPT= CSE is a selection condition. ORDER-BY clause is used to order the tuples in the result
of query according to the BOOK_TITLE

3. List any department that has all its adopted books published by a specific
publisher.

SQL> select distinct c.dept


from course c,text t,book_adoption ba
where c.course=ba.course and t.book_isbn=ba.book_isbn and t.publisher='venugopal'
and t.publisher=all(select t1.publisher
from course c1,book_adoption ba1,text t1
where ba1.book_isbn=t1.book_isbn and ba1.course=c1.course
and c.dept=c1.dept);

RESULT

DEPT
--------------------------
ise

EXPLANATION

The outer query selects the distinct departments for the specified publisher venugopal. The inner
query selects all the publishers for all the books adopted by the selected department. The keyword
all is used to check whether whether the department has all its adopted books publisher by
venugopal.

33 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

PROGRAM -4

PROGRAM STATEMENT:

The following tables are maintained by a book dealer.

AUTHOR (author-id: int, name: string, city: string, country: string)


PUBLISHER (publisher-id: int, name: string, city: string, country: string)
CATALOG (book-id: int, title: string, author-id: int, publisher-id: int,
category-id: int, year: int, price: int)
CATEGORY (category- id: int, description: string)
ORDER-DETAILS (order-no: int, book-id: int, quantity: int)

i) Create the above tables by properly specifying the primary keys and the
foreign keys.

ii) Enter at least five tuples for each relation.

iii) Give the details of the authors who have 2 or more books in the catalog
and the price of the books is greater than the average price of the books in
the catalog and the year of publication is after 2000.

iv) Find the author of the book which has maximum sales.

v) Demonstrate how you increase the price of books published by a specific


publisher by 10%.

vi) Generate suitable reports.

vii) Create a suitable front end for querying and displaying the results.

34 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

SCHEMA DESCRIPTION:

AUTHOR
AUTHOR_ID NAME CITY COUNTRY

PUBLISHER
PUBLISHER_ID NAME CITY COUNTRY

CATALOG
BOOK_ID TITLE AUTHOR_ID PUBLISHER_ID CATEGORY_ID YEAR PRICE
------------------ --------------------- --------------------

CATEGORY
` CATEGORY_ID DESCRIPTION

ORDER_DETAILS
ORDER_NO BOOK_ID QUANTITY

35 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

ER DIAGRAM:
PUBLISHER_ID
ANAME PNAM
E
TEXT
AUTHOR_ID ACITY
PCITY
AUTHOR
PCOUNTR
Y
PUBLISHES
ACOUNTRY

WRITE CATEGORY_ID
S

ORDER_N
O CATEGORY
QTY
DESC
ORDER_DETAILS

BELONGS_T
CONTAIN O
S

CATALOG

BOOK_ID PRICE

36
YEAR www.bookspar.com
TITLE
www.bookspar.com | Website for students | VTU NOTES

TABLE CREATION

SQL> create table author


(
authid number(4) primary key,
name varchar(10),
city varchar(10),
country varchar(10)
);

Table created.

TABLE DESCRIPTION

SQL> describe author;


Name Null? Type
-----------------------------------------------------------------------------------------
AUTHID NOT NULL NUMBER(4)
NAME VARCHAR2(10)
CITY VARCHAR2(10)
COUNTRY VARCHAR2(10)

INSERTING TUPLES

SQL> insert into author values ('&authid','&name','&city','&country');


Enter value for authid: 11
Enter value for name: aaa
Enter value for city: delhi
Enter value for country: india
old 2: ('&authid','&name','&city','&country')
new 2: ('11','aaa','delhi','india')

1 row created.

SQL> insert into author values ('12','bbb','banglore','india');


SQL> insert into author values ('13','ccc','luxar','africa');
SQL> insert into author values ('14','ddd','paris','france');
SQL> insert into author values ('15','eee','poland','germany');

SQL> select * from author;

AUTHID NAME CITY COUNTRY


----------------------------------------------------------------------------------
11 aaa delhi india

37 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

12 bbb banglore india


13 ccc luxar africa
14 ddd paris france
15 eee poland germany

TABLE CREATION

SQL> create table publisher


(
pubid number(4) primary key,
name varchar(10),
city varchar(10),
country varchar(10)
);

Table created.

TABLE DESCRIPTION

SQL> describe publisher;


Name Null? Type
-------------------------------------------------------------------------------------------
PUBID NOT NULL NUMBER(4)
NAME VARCHAR2(10)
CITY VARCHAR2(10)
COUNTRY VARCHAR2(10)

INSERTING TUPLES

SQL> insert into publisher values ('&pubid','&name','&city','&country');


Enter value for pubid: 21
Enter value for name: macgraw
Enter value for city: delhi
Enter value for country: india
old 2: ('&pubid','&name','&city','&country')
new 2: ('21','macgraw','delhi','india')

1 row created.

SQL> insert into publisher values ('22','subhash','paris','france');


SQL> insert into publisher values ('23','annai','banglore','india');
SQL> insert into publisher values ('24','DSC','delhi','india');
SQL> insert into publisher values ('25','KSC','poland',germany');

SQL> select * from publisher;

PUBID NAME CITY COUNTRY


---------------------------------------------------------------------------------------------------------

38 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

21 macgraw delhi india


22 subash paris france
23 annai banglore india
24 DSC delhi india
25 KSC poland germany

TABLE CREATION

SQL> create table category


(
catid number(4) primary key,
des varchar(20)
);

Table created.

TABLE DESCRIPTION

SQL> describe category;


Name Null? Type
----------------------------------------------------------------------------------------------------
CATID NOT NULL NUMBER(4)
DES VARCHAR2(20)

INSERTING TUPLES

SQL> insert into category values ('&catid','&des');


Enter value for catid: 31
Enter value for des: sys s/w
old 2: ('&catid','&des')
new 2: ('31','sys s/w')

1 row created.
SQL> insert into category values ('32','os')
SQL> insert into category values ('33','dbms')
SQL> insert into category values ('34','gt')
SQL> insert into category values ('35','oops')

SQL> select * from category;

CATID DES
-----------------------------------
31 sys s/w
32 os
33 dbms
34 gt
35 oops

39 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

TABLE CREATION

SQL> create table catalog


(
bookid number(4) primary key,
title varchar(20),
authid number(4) references author(authid),
pubid number(4) references publisher(pubid),
catid number(4) references category(catid),
year number(4),
price number(4)
);

Table created.

TABLE DESCRIPTION

SQL> describe catalog;


Name Null? Type
---------------------------------------- ------------------------------------
BOOKID NOT NULL NUMBER(4)
TITLE VARCHAR2(20)
AUTHID NUMBER(4)
PUBID NUMBER(4)
CATID NUMBER(4)
YEAR NUMBER(4)
PRICE NUMBER(4)

INSERTING TUPLES

SQL> insert into catalog values ('&bookid','&title','&authid','&pubid','&catid','&year','&price');


Enter value for bookid: 41
Enter value for title: logic design
Enter value for authid: 11
Enter value for pubid: 21
Enter value for catid: 31
Enter value for year: 2003
Enter value for price: 300
old 2: ('&bookid','&title','&authid','&pubid','&catid','&year','&price')
new 2: ('41','logic design','11','21','31','2003','300')

1 row created.

SQL> insert into catalog values ('42','graph theory','11','22','32','2002','480');


SQL> insert into catalog values ('43','c++ appl','13','23','33','1992','330');
SQL> insert into catalog values ('44','dbms mang','14','24','34','2008','225');
SQL> insert into catalog values ('45','c prog','14','25','35','2000','150');

SQL> select * from catalog;

40 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

BOOKID TITLE AUTHID PUBID CATID YEAR PRICE


-----------------------------------------------------------------------------------------------------------
41 logic design 11 21 31 2003 300
42 graph theory 11 22 32 2002 480
43 c++ appl 13 23 33 1992 330
44 dbms mang 14 24 34 2008 225
45 c prog 14 25 35 2000 150

TABLE CREATION

SQL> create table order_details


(
ordno number(4) primary key,
bookid number(4) references catalog(bookid),
quantity number(4)
);

Table created.

TABLE DESCRIPTION

SQL> describe order_details;


Name Null? Type
-----------------------------------------------------------------------------
ORDNO NOT NULL NUMBER(4)
BOOKID NUMBER(4)
QUANTITY NUMBER(4)

INSERTING TUPLES

SQL> insert into order_details values ('&ordno','&bookid','&quantity');


Enter value for ordno: 91
Enter value for bookid: 41
Enter value for quantity: 50
old 2: ('&ordno','&bookid','&quantity')
new 2: ('91','41','50')

1 row created.

SQL> insert into order_details values ('92','42','100')


SQL> insert into order_details values ('93','43','150')
SQL> insert into order_details values ('94','43','25')
SQL> insert into order_details values ('95','45','160')

SQL> select * from order_details;

ORDNO BOOKID QUANTITY


------------------------------------------------------------------
91 41 50
92 42 100

41 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

93 43 150
94 43 25
95 45 160

QUERIES

1. Give the details of the authors who have 2 or more books in the catalog and the
price of the books is greater than the average price of the books in the
catalog and the year of publication is after 2000.

SQL> select a.authid, a.name ,a.city, count(*) as count


from author a,catalog c
where a.authid=c.authid and c.year>2000
and c.price>=(select avg (price)
from catalog)
group by(a.authid, a.name, city)
having count(*)>=2;

RESULT

AI NAME CITY COUNT


---------------------------------------------------------------
11 aaa delhi 2

EXPLANATION

The nested query determines the average of all the book prices present in the catalog. Then the
two tables author and catalog are joined. The tuples with year greater than 2000 and the price
greater than the average are selected.

2. Find the author of the book which has maximum sales.

SQL> select distinct(a.name)


from author a,catalog c,order_details odm
where a.authid=c.authid and odm.bookid=c.bookid
and exists (select od.bookid,sum(od.quantity)
from order_details od
where od.bookid=odm.bookid
group by bookid
having sum(od.quantity)>=all(select sum(quantity)
from order_details
group by bookid));

42 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

RESULT

NAME
----------
ccc

EXPLANATION

The nested query selects the maximum value of quantity in the attribute quantity in table
order_details. Then the two tables catalog and order_details are joined. The tuple with the
maximum value of quantity is selected and the name of the author is displayed.

3. Demonstrate how you increase the price of books published by a specific


publisher by 10%.

SQL> update catalog


set price = 1.1 * price
where pubid in (select pubid
from publisher
where name=DSC);

RESULT

SQL> select * from catalog;

BOOKID TITLE AUTHID PUBID CATID YEAR PRICE


-----------------------------------------------------------------------------------------------------------
41 logic design 11 21 31 2003 300
42 graph theory 11 22 32 2002 480
43 c++ appl 13 23 33 1992 330
44 dbms mang 14 24 34 2008 248
45 c prog 14 25 35 2000 150

EXPLANATION

The nested query selects all the tuples with the publisher name as explicitly given by the
user.Then using the update command,the price is incremented by 10% in these tuples.

43 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

PROBLEM 5

PROBLEM STATEMENT:

Consider the following database for a banking enterprise

BRANCH (branch_name: string, branch_city: string, assets: real)


ACCOUNT (accno: int, branch_name: string, balance: real)
CUSTOMER (customer_name: string, customer_street: string,
customer_city: string)
DEPOSITOR (customer_name: string, accno: int)
LOAN (loan_number: int, branch_name: string, amount: real)
BORROWER (customer_name: string, loan_number: int)

i) Create the above tables by properly specifying the primary keys


and the foreign keys.

ii) Enter atleast five tuples for each relation.

iii) Find all the customers who have atleast two accounts at the Main branch.

iv) Find all the customers who have an account at all the branches located in
a specific city.

v) Demonstrate how you delete all account tuples at every branch located in
a specific city.

vi) Generate suitable reports.

vii) Create suitable front end for querying and displaying the results.

44 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

SCHEMA DESCRIPTION:

BRANCH
BRANCH_NAME BRANCH_CITY ASSETS
ACCOUNT
ACC_NO BRANCH_NAME BALANCE

DEPOSITOR
CUSTOMER_NAME ACCNO
--------------------------- -----------

CUSTOMER
CUSTOMER_NAME CUSTOMER_STREET CUSTOMER_CITY

LOAN

LOAN_NO BRANCH_NAME AMOUNT

BORROWER
CUSTOMER_NAME LOAN_NO
---------------------------- ---------------

45 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

ER DIAGRAM:

CITY LNO
BNAME GIVES
OUT LNAME

BRANCH LOAN

ASSETS

MANAGE BORROW
S S
CNAME
CSTREET
AACCN
O
ACCOUNT CUSTOMER

CCITY
BALANCE
DEPOSITS

NAME ACCNO

46 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

TABLE CREATION

SQL> create table branch


(
branch_name varchar(25) primary key,
branch_city varchar(20) not null,
assets decimal(10,2) not null
);

Table created.

TABLE DESCRIPTION

SQL> describe branch;


Name Null? Type
-----------------------------------------------------------------------------
BRANCH_NAME NOT NULL VARCHAR2(25)
BRANCH_CITY NOT NULL VARCHAR2(20)
ASSETS NOT NULL NUMBER(10,2)

INSERTING TUPLES

SQL> insert into branch values('jaynagar,'bangalore','15000000');


SQL>insert into branch values(basavanagudi,bangalore,25000000);
SQL>insert into branch values(noida,delhi,50000000);
SQL>insert into branch values(marine drive,mumbai,40000000);
SQL>insert into branch values(grren park,delhi,30000000);

BRANCH_NAME BRANCH_CITY ASSETS


------------------------------------------------------------------------------------
jaynagar bangalore 15000000
basavanagudi bangalore 25000000
noida delhi 50000000
marine drive mumbai 40000000
green park delhi 30000000

TABLE CREATION

SQL> create table account

47 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

(
accno int primary key,
branch_name varchar(25) not null,
balance decimal(10,2) not null,
foreign key(branch_name) references branch(branch_name)
);

Table created.
TABLE DESCRIPTION

SQL> describe account;


Name Null? Type
------------------------------------------------------------------------------------
ACCNO NOT NULL NUMBER(38)
BRANCH_NAME NOT NULL VARCHAR2(25)
BALANCE NOT NULL NUMBER(10,2)

INSERTING TUPLES

SQL>insert into account values(123,jaynagar,25000);


SQL>insert into account values(156,jaynagar,30000);
SQL>insert into account values(456,basavanagudi,15000);
SQL>insert into account values(789,noida,25000);
SQL>insert into account values(478,marine drive,48000);
SQL>insert into account values(778,green park,60000);
SQL>insert into account values(189,basavanagudi,48888);

SQL> select * from account;

ACCNO BRANCH_NAME BALANCE


---------- ------------------------- ------------------------------------
123 jaynagar 25000
156 jaynagar 30000
456 basavanagudi 15000
789 noida 25000
478 marine drive 48000
778 green park 60000
189 basavanagudi 48888

TABLE CREATION

SQL> create table customer


(
customer_name varchar(25) primary key,
customer_street varchar(25) not null,
customer_city varchar(25) not null
);

Table created.

48 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

TABLE DESCRIPTION

SQL> describe customer;


Name Null? Type
-----------------------------------------------------------------------------
CUSTOMER_NAME NOT NULL VARCHAR2(25)
CUSTOMER_STREET NOT NULL VARCHAR2(25)
CUSTOMER_CITY NOT NULL VARCHAR2(25)
INSERTING TUPLES

SQL> insert into customer values(ramu,jaynagar,bangalore);


SQL> insert into customer values(kumar,basavanagudi,bangalore);
SQL> insert into customer values(john,noida,delhi);
SQL> insert into customer values(mike,marine drive,mumbai);
SQL> insert into customer values(sachin,green park,delhi);

SQL> select * from customer;

CUSTOMER_NAME CUSTOMER_STREET CUSTOMER_CITY


-------------------------------------------------------------------------------------------------------
ramu jaynagar bangalore
kumar basavanagudi bangalore
john noida delhi
mike marine drive mumbai
sachin green park delhi

TABLE CREATION

SQL> create table depositor


(
customer_name varchar(25) not null,
accno int not null,
foreign key (customer_name) references customer (customer_name)
foreign key(accno) references account(accno) on delete cascade
);

Table created.

TABLE DESCRIPTION

SQL> describe depositor;


Name Null? Type
-----------------------------------------------------------------------------
CUSTOMER_NAME NOT NULL VARCHAR2(25)
ACCNO NOT NULL NUMBER(38)

INSERTING TUPLES

SQL> insert into depositor values(ramu,123);

49 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

SQL> insert into depositor values(ramu,156);


SQL> insert into depositor values(ramu,189);
SQL> insert into depositor values(kumar,456);
SQL> insert into depositor values(john,789);
SQL> insert into depositor values(mike,478);
SQL> insert into depositor values(sachin,778);

SQL> select *from depositor;

CUSTOMER_NAME ACCNO
--------------------------------------------------
ramu 123
ramu 156
ramu 189
kumar 456
john 789
mike 478
sachin 778

TABLE CREATION

SQL> create table loan


(
loan_number int primary key,
branch_name varchar(25) not null,
amount decimal(10,2) not null,
foreign key(branch_name) references branch (branch_name)
);

Table created.

TABLE DESCRIPTION

SQL> describe loan;


Name Null? Type
--------------------------------------------------------------------------
LOAN_NUMBER NOT NULL NUMBER(38)
BRANCH_NAME NOT NULL VARCHAR2(25)
AMOUNT NOT NULL NUMBER(10,2)

INSERTING TUPLES

SQL> insert into loan values(1111,jaynagar,250000);


SQL> insert into loan values(2222,basavanagudi,350000);
SQL> insert into loan values(3333,noida,150000);
SQL> insert into loan values(4444,marine drive,1500000);
SQL> insert into loan values(5555,green park,7500000);

SQL> select *from loan;

50 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

LOAN_NUMBER BRANCH_NAME AMOUNT


-----------------------------------------------------------------------------------
1111 jaynagar 250000
2222 basavanagudi 350000
3333 noida 150000
4444 marine drive 1500000
5555 green park 7500000
TABLE CREATION

SQL> create table borrower


(
customer_name varchar(25) not null,
loan_number int not null,
foreign key(customer_name) references customer (customer_name),
foreign key (loan_number) references loan (loan_number),
primary key(customer_name,loan_number)
);

Table created.

TABLE DESCRIPTION

SQL> describe borrower;


Name Null? Type
-----------------------------------------------------------------------------
CUSTOMER_NAME NOT NULL VARCHAR2(25)
LOAN_NUMBER NOT NULL NUMBER(38)

INSERTING TUPLES

SQL> insert into borrower values(ramu,1111);


SQL> insert into borrower values(kumar,2222);
SQL> insert into borrower values(john,3333);
SQL> insert into borrower values(mike,4444);
SQL> insert into borrower values(sachin,5555);

SQL> select *from borrower;

CUSTOMER_NAME LOAN_NUMBER
-------------------------------------------------------------
ramu 1111
kumar 2222
john 3333
mike 4444
sachin 5555

QUERIES

1. Find all the customers who have atleast two accounts at the Main branch.

51 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

SQL> select distinct(customer_name), count(*)


from account a, depositor d
where a.accno=d.accno
and d.accno in (select accno from account
where branch_name=jaynagar)
group by d.customer_name
having count(*)>=2;
RESULT

CUSTOMER_NAME COUNT(*)
------------------------------------------------------
ramu 2

EXPLANATION

The above query is similar to a SELECT-JOIN-PROJECT sequence of relational algebra


operations and such queries are called select-join queries. In the WHERE clause, branch_name =
jaynagar specifies the main branch and a.accno = d.accno is a join condition for the join
operation on the two relations account and depositor. Then the GROUP BY clause is used to sub-
group the tuples based on the grouping attributes branch_name and customer_name. The
HAVING clause provides a condition count (*) >= 2 on the groups of tuples. Only the groups that
satisfy the condition are retrieved in the result of the query.

2. Find all the customers who have an account at all the branches located in a
specific city.

SQL> select d.customer_name


from account a, depositor d, branch b
where b.branch_name=a.branch_name and a.accno=d.accno
and b.branch_city=bangalore
having count(distinct b.branch_name)=(select count(branch_name)
from branch
where branch_city=bangalore)
group by customer_name;

RESULT

CUSTOMER_NAME
-------------------------
ramu

EXPLANATION

The inner query counts the number of branches in bangalore which is used to compare with the
number of branches in Bangalore in which a customer has accounts. We join the account,
depositor and branch tables by specifying the appropriate join conditions and selecting only those
tuples having branches in Bangalore grouped by the customer name.

52 www.bookspar.com
www.bookspar.com | Website for students | VTU NOTES

3. Demonstrate how you delete all account tuples at every branch located in a
specific city.

SQL> delete from account


where branch_name in (select branch_name
from branch
where branch_city='delhi');
2 rows deleted.
RESULT

SQL> select *from account;

ACCNO BRANCH_NAME BALANCE


-----------------------------------------------------------------------
123 jaynagar 25000
156 jaynagar 30000
456 basavanagudi 15000
478 marine drive 48000
189 basavanagudi 48888

SQL> select *from depositor;

CUSTOMER_NAME ACCNO
------------------------------------------------
ramu 123
ramu 156
ramu 189
kumar 456
mike 478

EXPLANATION

The nested query selects the tuples that satisfy the selection condition branch_city = delhi from
the relation branch .The IN operator compares the subtuple of value branch_name for each tuple
in account relation with the tuples produced by the nested query. Finally, the selected tuples are
deleted from the account relation. Here the account tuples containing the branches in delhi, i.e, in
noida and green park are deleted. Also, since depositor references the accno from the account
relation, for the accno deleted from the account table, corresponding tuples containing the same
accno in depositor relation are deleted.

53 www.bookspar.com