diff --git a/DDL.sql b/DDL.sql new file mode 100644 index 0000000..12bdf5d --- /dev/null +++ b/DDL.sql @@ -0,0 +1,46 @@ + +drop table borrowings; +drop table bookRequests; +drop table books; +drop table members; + + + +CREATE TABLE Books ( + book_id INTEGER PRIMARY KEY, + title VARCHAR(30), + author VARCHAR(25), + publisher VARCHAR(25), + publish_year INTEGER, + total_quantity INTEGER, + available_quantity INTEGER +); + +CREATE TABLE Members ( + member_id INTEGER PRIMARY KEY, + first_name VARCHAR(15), + last_name VARCHAR(15), + email VARCHAR(35), + phone VARCHAR(20), + address VARCHAR(25) +); + +CREATE TABLE Borrowings ( + borrowing_id INTEGER PRIMARY KEY, + book_id INTEGER REFERENCES Books(book_id), + member_id INTEGER REFERENCES Members(member_id), + borrowing_date DATE, + due_date DATE, + return_date DATE +); + +CREATE TABLE BookRequests ( + request_id INTEGER PRIMARY KEY, + book_id INTEGER REFERENCES Books(book_id), + member_id INTEGER REFERENCES Members(member_id), + request_date DATE, + status VARCHAR(15) +); + + + diff --git a/DML.sql b/DML.sql new file mode 100644 index 0000000..4d44ca8 --- /dev/null +++ b/DML.sql @@ -0,0 +1,48 @@ +INSERT INTO Books VALUES (1, 'To Kill a Mockingbird', 'Harper Lee', 'J. B. Lippincott', 1960, 5, 2); + INSERT INTO Books VALUES (2, '1984', 'George Orwell', 'Secker and Warburg', 1949, 3, 0); + INSERT INTO Books VALUES (3, 'The Great Gatsby', 'F. Scott Fitzgerald', 'Charles Scribner''s Sons', 1925, 4, 4); + INSERT INTO Books VALUES (4, 'Animal Farm', 'George Orwell', 'Secker and Warburg', 1945, 2, 2); + INSERT INTO Books VALUES (5, 'Brave New World', 'Aldous Huxley', 'Chatto and Windus', 1932, 3, 3); + INSERT INTO Books VALUES (6, 'The Catcher in the Rye', 'J.D. Salinger', 'Little, Brown and Company', 1951, 6, 6); + INSERT INTO Books VALUES (7, 'The Lord of the Rings', 'J.R.R. Tolkien', 'George Allen and Unwin', 1954, 10, 8); + INSERT INTO Books VALUES (8, 'One Hundred Years of Solitude', 'Gabriel Garc�a M�rquez', 'Editorial Sudamericana', 1967, 8, 5); + INSERT INTO Books VALUES (9, 'Pride and Prejudice', 'Jane Austen', 'T. Egerton, Whitehall', 1813, 5, 2); + INSERT INTO Books VALUES (10, 'The Hobbit', 'J.R.R. Tolkien', 'George Allen ', 1937, 4, 3); + + + INSERT INTO Members VALUES(1, 'John', 'Doe', 'johndoe@example.com', '555-555-5555', '123 Main St.'); + INSERT INTO Members VALUES (2, 'Jane', 'Doe', 'janedoe@example.com', '555-555-5555', '456 Oak St.'); + INSERT INTO Members VALUES (3, 'Bob', 'Smith', 'bobsmith@example.com', '555-555-5555', '789 Maple Ave.'); + INSERT INTO Members VALUES (4, 'Alice', 'Johnson', 'alicejohnson@example.com', '555-555-5555', '321 Elm St.'); + INSERT INTO Members VALUES (5, 'Tom', 'Wilson', 'tomwilson@example.com', '555-555-5555', '654 Pine St.'); + INSERT INTO Members VALUES(6, 'Mary', 'Williams', 'marywilliams@example.com', '555-555-5555', '234 Elm St.'); +INSERT INTO Members VALUES (7, 'Michael', 'Brown', 'michaelbrown@example.com', '555-555-5555', '876 Maple Ave.'); +INSERT INTO Members VALUES (8, 'Sarah', 'Green', 'sarahgreen@example.com', '555-555-5555', '123 Oak St.'); +INSERT INTO Members VALUES (9, 'David', 'Jones', 'davidjones@example.com', '555-555-5555', '456 Main St.'); +INSERT INTO Members VALUES (10, 'Emily', 'Davis', 'emilydavis@example.com', '555-555-5555', '789 Pine St.'); + + + +INSERT INTO Borrowings VALUES(1, 1, 1, TO_DATE('2022-02-15', 'YYYY-MM-DD'), TO_DATE('2022-03-15', 'YYYY-MM-DD'), NULL); +INSERT INTO Borrowings VALUES(2, 6, 2, TO_DATE('2022-02-20', 'YYYY-MM-DD'), TO_DATE('2022-03-20', 'YYYY-MM-DD'), NULL); +INSERT INTO Borrowings VALUES(3, 3, 3, TO_DATE('2022-02-25', 'YYYY-MM-DD'), TO_DATE('2022-03-25', 'YYYY-MM-DD'), NULL); +INSERT INTO Borrowings VALUES(4, 7, 4, TO_DATE('2022-03-01', 'YYYY-MM-DD'), TO_DATE('2022-04-01', 'YYYY-MM-DD'), NULL); +INSERT INTO Borrowings VALUES(5, 8, 5, TO_DATE('2022-03-05', 'YYYY-MM-DD'), TO_DATE('2022-04-05', 'YYYY-MM-DD'), NULL); +INSERT INTO Borrowings VALUES(6, 9, 6, TO_DATE('2022-03-10', 'YYYY-MM-DD'), TO_DATE('2022-04-10', 'YYYY-MM-DD'), NULL); +INSERT INTO Borrowings VALUES(7, 10, 7, TO_DATE('2022-03-15', 'YYYY-MM-DD'), TO_DATE('2022-04-15', 'YYYY-MM-DD'), NULL); +INSERT INTO Borrowings VALUES(8, 1, 8, TO_DATE('2022-03-20', 'YYYY-MM-DD'), TO_DATE('2022-04-20', 'YYYY-MM-DD'), NULL); +INSERT INTO Borrowings VALUES(9, 6, 9, TO_DATE('2022-03-25', 'YYYY-MM-DD'), TO_DATE('2022-04-25', 'YYYY-MM-DD'), NULL); +INSERT INTO Borrowings VALUES(10, 3, 10, TO_DATE('2022-04-01', 'YYYY-MM-DD'), TO_DATE('2022-05-01', 'YYYY-MM-DD'), NULL); + + +INSERT INTO BookRequests VALUES (1, 2, 1, TO_DATE('2022-02-10', 'YYYY-MM-DD'), 'Approved'); +INSERT INTO BookRequests VALUES(2, 4, 2, TO_DATE('2022-02-15', 'YYYY-MM-DD'), 'Pending'); +INSERT INTO BookRequests VALUES(3, 5, 3, TO_DATE('2022-02-20', 'YYYY-MM-DD'), 'Rejected'); +INSERT INTO BookRequests VALUES(4, 6, 4, TO_DATE('2022-02-25', 'YYYY-MM-DD'), 'Approved'); +INSERT INTO BookRequests VALUES(5, 1, 5, TO_DATE('2022-03-01', 'YYYY-MM-DD'), 'Pending'); +INSERT INTO BookRequests VALUES(6, 7, 6, TO_DATE('2022-03-05', 'YYYY-MM-DD'), 'Approved'); +INSERT INTO BookRequests VALUES(7, 8, 7, TO_DATE('2022-03-10', 'YYYY-MM-DD'), 'Pending'); +INSERT INTO BookRequests VALUES(8, 9, 8, TO_DATE('2022-03-15', 'YYYY-MM-DD'), 'Rejected'); +INSERT INTO BookRequests VALUES(9, 10, 9, TO_DATE('2022-03-20', 'YYYY-MM-DD'), 'Approved'); +INSERT INTO BookRequests VALUES(10, 1, 10, TO_DATE('2022-03-25', 'YYYY-MM-DD'), 'Pending'); + diff --git a/plsql.sql b/plsql.sql new file mode 100644 index 0000000..516bb14 --- /dev/null +++ b/plsql.sql @@ -0,0 +1,145 @@ +-- variable declaration and print value +set serveroutput on +declare + +book_name books.title%type; + +begin + +select title into book_name from books where book_id = 3; + +dbms_output.put_line(book_name); + +end; +/ + +--Insert and set default value +set serveroutput on +declare +reqid NUMBER :=11; +bookid NUMBER :=9; +memberid NUMBER :=6; + +begin +INSERT INTO BookRequests VALUES(reqid, bookid, memberid, TO_DATE('2022-03-25', 'YYYY-MM-DD'), 'Pending'); +end; +/ + +--row type +set serveroutput on +declare +bookrow books%rowtype; +begin +select book_id,title,author into bookrow.book_id,bookrow.title,bookrow.author from books where book_id=7; +dbms_output.put_line(bookrow.book_id || bookrow.title||bookrow.author); +end; +/ + +--cursor and rowcount +set serveroutput on +declare +cursor book_cursor is select book_id, title, author , publish_year from books; +book_row books%rowtype; +begin +open book_cursor; +fetch book_cursor into +book_row.book_id,book_row.title,book_row.author,book_row.publish_year; +while book_cursor%found loop + + dbms_output.put_line('book_id: '||book_row.book_id|| ' book_name: + '||book_row.title || ' author: ' ||book_row.author|| ' publish year: + '||book_row.publish_year); + dbms_output.put_line('Row count: '|| book_cursor%rowcount); + fetch book_cursor into + book_row.book_id,book_row.title,book_row.author,book_row.publish_year; +end loop; +close book_cursor; +end; +/ + +--loop if else +declare +id int :=1; +cursor c is select book_id, title, author , publish_year from books; +book_row books%rowtype; +begin +open c; +fetch c into book_row.book_id,book_row.title,book_row.author,book_row.publish_year; +for x in 1 .. 5 loop + if x = 3 + then dbms_output.put_line('id number 3'); + end if; + dbms_output.put_line('book_id: '||book_row.book_id|| ' book_name: + '||book_row.title || ' author: ' ||book_row.author|| ' publish year: + '||book_row.publish_year); + + fetch c into book_row.book_id,book_row.title,book_row.author,book_row.publish_year; + +end loop; +close c; +end; +/ + +--array and loop +set serveroutput on +declare +counter number; +book_name2 books.title%type; +TYPE NAMEARRAY IS VARRAY(5) OF books.title%type; +A_NAME NAMEARRAY:=NAMEARRAY(); +begin +counter:=1; +for x in 1..5 +loop +select title into book_name2 from books where book_id=x; +A_NAME.EXTEND(); +A_NAME(counter):=book_name2; +counter:=counter+1; +end loop; +counter:=1; +WHILE counter<=A_NAME.COUNT +LOOP +DBMS_OUTPUT.PUT_LINE(A_NAME(counter)); +counter:=counter+1; +END LOOP; +end; +/ + +--function +set SERVEROUTPUT on +create or replace function fun( id number) return varchar as +title varchar(30); +begin + select title into title from books where book_id = id; + return title; +end; +/ + +set SERVEROUTPUT on +declare + +begin +dbms_output.put_line(fun(3)); +end; +/ + +--procedure +set SERVEROUTPUT on +create or replace procedure proc( id number) is +title varchar(30); +begin + select title into title from books where book_id = id; + dbms_output.put_line(title); +end; +/ + +set SERVEROUTPUT on +declare + id number := 4; +begin + proc(id); +end; +/ + + +