SQL- LIBRARY MANAGEMENT SYSTEM

>>>>>>>>>>>>>>>>>>>>CREATE TABLE<<<<<<<<<<<<<<<<<<<<

create table book_rec(book_name char(15) primary key,author char(15),total_copies number(5),available_copies number(5));

create table membership_rec(mem_id number(5) primary key,mem_name char(15),no_of_books_taken number(2));

create table book_details(book_id number(5) primary key,book_name char(15) references book_rec(book_name),mem_id number(5));

create table circulation_rec(book_id number(5) references book_details(book_id),mem_id number(5) references membership_rec(mem_id),issue_date date,return_date date);

 

>>>>>>>>>>>>>>>>>>>>ADD A NEW BOOK<<<<<<<<<<<<<<<<<<<<

declare
    bknam char(15);
    auth char(15);
    tot number(5);
    id number(5);
    no number(5);
    i number(3);
begin

    bknam:='&bknam';
    auth:='&auth';
    tot:=&tot;
    insert into book_rec values(bknam,auth,tot,tot);
    for i in 1..tot
    loop
        select MAX(book_id) into no from book_details;
        if no is not null then
            id:=no+1;
        else
            id:=1;
        end if;
        insert into book_details values(id,bknam,null);
    end loop;
end;

/

Enter value for bknam: DCD

old   9: bknam:='&bknam';

new   9: bknam:='DCD';

Enter value for auth: Mano

old  10: auth:='&auth';

new  10: auth:='Mano';

Enter value for tot: 3

old  11: tot:=&tot;

new  11: tot:=3;


PL/SQL procedure successfully completed.


SQL> /

Enter value for bknam: OS

old   9: bknam:='&bknam';

new   9: bknam:='OS';

Enter value for auth: Silber

old  10: auth:='&auth';

new  10: auth:='Silber';

Enter value for tot: 2

old  11: tot:=&tot;

new  11: tot:=2;


PL/SQL procedure successfully completed.


SQL> select * from book_rec;


BOOK_NAME                        AUTHOR                  TOTAL_COPIES         AVAILABLE_COPIES
--------------------------------------------------------------------------------------------------------------
DCD                              Mano                    3                    3
OS                               Silber                  2                    2


SQL> select * from book_details;

BOOK_ID        BOOK_NAME                        MEM_ID

--------------------------------------------------------------
1               DCD
2               DCD
3               DCD
4               OS
5               OS

 

>>>>>>>>>>>>>>>>>>>>CREATE A NEW MEMBER<<<<<<<<<<<<<<<<<<<<

declare
    nam char(15);
    id number(5);
    no number(5);
    i number(3);
begin
    nam:='&nam';
    select MAX(mem_id) into no from membership_rec;
    if no is not null then
        id:=no+1;
    else
        id:=1;
    end if;

    insert into membership_rec values(id,nam,null);
    dbms_output.put_line('Mr/Mrs/Miss. '||nam||', your membership id is '||id);
end;

/

Enter value for nam: Tintumon

old   7: nam:='&nam';

new   7: nam:='Tintumon';

Mr/Mrs/Miss. Tintumon       , your membership id is 1


PL/SQL procedure successfully completed.


SQL> /

Enter value for nam: Kuttoos

old   7: nam:='&nam';

new   7: nam:='Kuttoos';

Mr/Mrs/Miss. Kuttoos        , your membership id is 2


PL/SQL procedure successfully completed.


SQL> select * from membership_rec;

MEM_ID        MEM_NAME              NO_OF_BOOKS_TAKEN

--------------------------------------------------------------------------------------
1             Tintumon
2             Kuttoos

 

>>>>>>>>>>>>>>>>>>>>ISSUE A BOOK<<<<<<<<<<<<<<<<<<<<


declare
    bknam char(15);
    mid number(5);
    bid number(5);
    dat date;
    nam char(15);
    n number(5);
begin
    bknam:='&bknam';
    select MIN(book_id) into bid from book_details where book_name=bknam and mem_id is null;
    mid:=&mid;
    select mem_name into nam from membership_rec where mem_id=mid;
    update book_details set mem_id=mid where book_id=bid;
    select no_of_books_taken into n from membership_rec where mem_id=mid;

    if n is null then
        n:=0;
    end if;

    update membership_rec set no_of_books_taken=n+1 where mem_id=mid;
    update book_rec set available_copies=available_copies-1 where book_name=bknam;
    select ADD_months(sysdate,1) into dat from dual;
    insert into circulation_rec values(bid,mid,sysdate,dat);
end;

/

Enter value for bknam: DCD

old   8: bknam:='&bknam';

new   8: bknam:='DCD';

Enter value for mid: 2

old  10: mid:=&mid;

new  10: mid:=2;


PL/SQL procedure successfully completed.


SQL> /

Enter value for bknam: OS

old   8: bknam:='&bknam';

new   8: bknam:='OS';

Enter value for mid: 1

old  10: mid:=&mid;

new  10: mid:=1;


PL/SQL procedure successfully completed.


SQL>/

Enter value for bknam: DCD

old   9: bknam:='&bknam';

new   9: bknam:='DCD';

Enter value for mid: 1

old  11: mid:=&mid;

new  11: mid:=1;


PL/SQL procedure successfully completed.


SQL> select * from book_details;

BOOK_ID       BOOK_NAME          MEM_ID
------------------------------------------------------------
1             DCD                2
2             DCD                1
3             DCD
4             OS                 1
5             OS


SQL> select * from book_rec;

BOOK_NAME                        AUTHOR                 TOTAL_COPIES         AVAILABLE_COPIES
-------------------------------------------------------------------------------------------------------------
DCD                              Mano                   3                    1
OS                               Silber                 2                    1


SQL> select * from membership_rec;

MEM_ID        MEM_NAME                          NO_OF_BOOKS_TAKEN
------------------------------------------------------------------------------------
1             Tintumon                          2
2             Kuttoos                           1


SQL> select * from circulation_rec;

BOOK_ID        MEM_ID           ISSUE_DAT       RETURN_DA
------------------------------------------------------------------------------
1              2                08-JAN-10       08-FEB-10
4              1                08-JAN-10       08-FEB-10
2              1                08-JAN-10       08-FEB-10

 

>>>>>>>>>>>>>>>>>>>>RETURN A BOOK<<<<<<<<<<<<<<<<<<<<

declare
    bknam char(15);
    id number(5);
    bid number(5);
    tim number(7,2);
    dat date;
begin
    bknam:='&bknam';
    id:=&id;
    select book_id into bid from book_details where book_name=bknam and mem_id=id;
    update book_details set mem_id=null where book_id=bid;
    update membership_rec set no_of_books_taken=no_of_books_taken-1 where mem_id=id;
    update book_rec set available_copies=available_copies+1 where book_name=bknam;
    select return_date into dat from circulation_rec where book_id=bid and mem_id=id;
    select months_between(sysdate,dat) into tim from dual;

    if tim>0 then
        dbms_output.put_line('You have to pay fine');
    end if;
end;

/


Enter value for bknam: DCD

old   8: bknam:='&bknam';

new   8: bknam:='DCD';

Enter value for id: 1

old   9: id:=&id;

new   9: id:=1;


PL/SQL procedure successfully completed.


SQL> select * from book_rec;


BOOK_NAME                        AUTHOR               TOTAL_COPIES         AVAILABLE_COPIES
-------------------------------------------------------------------------------------------------------------
DCD                              Mano                 3                    2
OS                               Silber               2                    1


SQL> select * from membership_rec;

MEM_ID        MEM_NAME              NO_OF_BOOKS_TAKEN
-----------------------------------------------------------------------------------
1             Tintumon              1
2             Kuttoos               1


SQL> select * from book_details;

BOOK_ID       BOOK_NAME                        MEM_ID
--------------------------------------------------------------
1             DCD                              2
2             DCD
3             DCD
4             OS                               1
5             OS


SQL> select * from circulation_rec;

BOOK_ID     MEM_ID         ISSUE_DAT       RETURN_DA
------------------------------------------------------------------------------
1           2              08-JAN-10       08-FEB-10
4           1              08-JAN-10       08-FEB-10
2           1              08-JAN-10       08-FEB-10