diff --git a/DDL.sql b/DDL.sql new file mode 100644 index 0000000..17cdb26 --- /dev/null +++ b/DDL.sql @@ -0,0 +1,114 @@ +--DROP TABLE Payment ; +--DROP TABLE delivary ; +--DROP TABLE transaction ; +--DROP TABLE order_detail ; +--DROP TABLE food_info ; +--DROP TABLE Customer ; +--DROP TABLE Employee; + + +----< Create tables >---- +Create table Employee( + Emp_ID number(20) NOT NULL, + Name varchar(15), + Contact varchar(20), + User_Name varchar(20), + Pass varchar(20), + Address varchar(20), + PRIMARY KEY (Emp_ID) + ); + +Create table Customer( + Cust_ID Number (20) Not Null, + cust_name varchar(22), + Phone varchar(14), + + USER_NAME varchar(20), + PASS varchar(20), + CUST_ADDRESS varchar(20), + PRIMARY KEY(Cust_id) + ); + + +Create table food_info( + FOODID number(5) NOT NULL, + FOOD_NAME varchar(12), + Price number check(price>0) not null, + DETAILS varchar(20), + STATUS varchar(20), + PRIMARY KEY (FOODID) + ); +Create table order_detail( + ORDER_ID number(20) NOT NULL, + EMP_ID number(20), + CUST_ID number(20), + FOODID number(5), + Amount number check(amount>0), + ORDER_DATE varchar(10), +PRIMARY KEY(ORDER_ID), +FOREIGN KEY (Cust_id) References Customer(Cust_id) ON DELETE CASCADE, +FOREIGN KEY (EMP_ID) References Employee(EMP_ID) ON DELETE CASCADE, +FOREIGN KEY (FOODID) References food_info(FOODID) ON DELETE CASCADE + +); + + +Create table transaction( + TRANS_ID Number (20) Not Null, + TRANS_DATE varchar(10), + ORDER_ID number(20), + EMP_ID number(20), + CUST_ID number(20), + PRIMARY KEY(TRANS_ID), +FOREIGN KEY (Cust_id) References Customer(Cust_id) ON DELETE CASCADE, +FOREIGN KEY (EMP_ID) References Employee(EMP_ID) ON DELETE CASCADE, +FOREIGN KEY (ORDER_ID) References order_detail(ORDER_ID) ON DELETE CASCADE + +); + + +Create table delivary( + DELIVARY_ID Number (20) Not Null, + ORDER_ID number(20), + DELIVARY_DATE varchar(10), + PRIMARY KEY(DELIVARY_ID), + FOREIGN KEY (ORDER_ID) References order_detail(ORDER_ID) ON DELETE CASCADE + ); + + +Create table Payment( + Pay_ID Number (20) Not Null, + DELIVARY_ID Number (20), + ORDER_ID number(20), + CUST_ID number(20), + Amount number check(amount>0), + Pay_DATE varchar(10), + FOREIGN KEY (ORDER_ID) References order_detail(ORDER_ID) ON DELETE CASCADE, + FOREIGN KEY (Cust_id) References Customer(Cust_id) ON DELETE CASCADE, + FOREIGN KEY (DELIVARY_ID) References delivary(DELIVARY_ID) ON DELETE CASCADE, +PRIMARY KEY(Pay_ID) + ); + + ----< Describe Table >---- +DESCRIBE CUSTOMER ; +DESCRIBE DELIVARY ; +DESCRIBE EMPLOYEE ; +DESCRIBE FOOD_INFO ; +DESCRIBE ORDER_DETAIL ; +DESCRIBE PAYMENT ; +DESCRIBE TRANSACTION ; + +ALTER TABLE CUSTOMER +ADD (LOCATION VARCHAR(25), +REVIEW VARCHAR(3)); + +ALTER TABLE CUSTOMER +DROP COLUMN LOCATION; +ALTER TABLE CUSTOMER +DROP COLUMN REVIEW; + +ALTER TABLE CUSTOMER +RENAME COLUMN CUST_ADDRESS TO Customer_add; + +ALTER TABLE customer +RENAME COLUMN Customer_add TO CUST_ADDRESS; \ No newline at end of file diff --git a/DML.sql b/DML.sql new file mode 100644 index 0000000..e5209c5 --- /dev/null +++ b/DML.sql @@ -0,0 +1,256 @@ +----< Data Insertion >---- + +-- INSERT INTO EMPLOYEE VALUES (Emp_ID, Name,Contact, username,password,address); +INSERT INTO Employee VALUES (0, 'Smith', '01715043801','sm00','101','80-Dhaka'); +INSERT INTO Employee VALUES (1, 'Jerry', '01715043802','je01','102','81-Dhaka'); +INSERT INTO Employee VALUES (2, 'Geore', '01715043803','ge02','103','82-Dhaka'); +INSERT INTO Employee VALUES (3, 'Elaine', '01715043804','el03','104','83-Dhaka'); +INSERT INTO Employee VALUES (4, 'Jim', '01715043805','ji04','105','84-Dhaka'); +INSERT INTO Employee VALUES (5, 'kim', '01715043806','ki05','106','85-Dhaka'); +INSERT INTO Employee VALUES (6, 'Arnold', '01715043807','ar06','107','86-Dhaka'); +INSERT INTO Employee VALUES (7, 'Michellet', '01715043808','mi07','108','87-Dhaka'); +INSERT INTO Employee VALUES (8, 'Amer', '01715043809','am08','109','88-Dhaka'); +INSERT INTO Employee VALUES (9, 'Ron', '01715043800','ro09','110','89-Dhaka'); +INSERT INTO Employee VALUES (10, 'Rocky', '01715043810','ro10','100','90-Dhaka'); + + +-- INSERT INTO Customer VALUES (Cust_ID,Cust_Name,phone, username,password,CUST_ADDRESS); +INSERT INTO Customer VALUES (11, 'Mith', '01715043301','mi00','201','80-khulna'); +INSERT INTO Customer VALUES (12, 'Jero', '01715043302','je01','202','81-khulna'); +INSERT INTO Customer VALUES (13, 'Geow', '01715043303','ge02','203','82-khulna'); +INSERT INTO Customer VALUES (14, 'Eline', '01715043304','el03','204','83-khulna'); +INSERT INTO Customer VALUES (15, 'Jamo', '01715043305','ja04','205','84-khulna'); +INSERT INTO Customer VALUES (16, 'kumo', '01715043306','ku05','206','85-khulna'); +INSERT INTO Customer VALUES (17, 'Arno', '01715043307','ar06','207','86-khulna'); +INSERT INTO Customer VALUES (18, 'Millet', '01715043308','mi07','208','87-sylhet'); +INSERT INTO Customer VALUES (19, 'Amos', '01715043309','am08','209','88-sylhet'); +INSERT INTO Customer VALUES (20, 'Ronny', '01715043300','ro09','210','89-sylhet'); +INSERT INTO Customer VALUES (21, 'Rock', '01715043310','ro10','200','90-sylhet'); + +--INSERT INTO Food_info VALUES (FoodID,food_name ,Price, details,status) +INSERT INTO Food_info VALUES (101,'pasta',302,'spicy ','available'); +INSERT INTO Food_info VALUES (102,'burger',129,'yummy','available'); +INSERT INTO Food_info VALUES (103,'Donuts',302,'flavorful ','available'); +INSERT INTO Food_info VALUES (104,'Pizza',129,'yummy','available'); +INSERT INTO Food_info VALUES (105,'Oreo Cookies',700,'savory','not available'); +INSERT INTO Food_info VALUES (106,'Ice Cream',250,'spicy ','available'); +INSERT INTO Food_info VALUES (107,'Potato Chips',50,'yummy','not available'); +INSERT INTO Food_info VALUES (108,'French Fries',180,'flavorful','available'); +INSERT INTO Food_info VALUES (109,'Soft Drinks',40,'cold','available'); +INSERT INTO Food_info VALUES (110,'Ramen',700,'spicy','available'); + +--INSERT INTO order_detail VALUES (order_id,emp_id,cust_id,FOODID,Amount,ORDER_DATE); + +INSERT INTO order_detail VALUES (51,2,15,105,5,'15-5-2023'); +INSERT INTO order_detail VALUES (52,3,16,106,6,'14-5-2023'); +INSERT INTO order_detail VALUES (53,2,17,104,4,'13-5-2023'); +INSERT INTO order_detail VALUES (54,1,18,105,2,'18-5-2023'); +INSERT INTO order_detail VALUES (55,5,19,109,8,'15-5-2023'); +INSERT INTO order_detail VALUES (56,1,18,108,4,'11-5-2023'); +INSERT INTO order_detail VALUES (57,6,14,105,8,'12-5-2023'); +INSERT INTO order_detail VALUES (58,8,14,107,4,'19-5-2023'); +INSERT INTO order_detail VALUES (59,9,18,104,2,'20-5-2023'); +INSERT INTO order_detail VALUES (60,5,12,106,9,'02-5-2023'); + + +--INSERT INTO transaction VALUES (TRANS_ID,TRANS_DATE,order_id,emp_id,cust_id); +INSERT INTO transaction VALUES (61,'15-5-2023',51,2,15); +INSERT INTO transaction VALUES (62,'14-5-2023',52,3,16); +INSERT INTO transaction VALUES (63,'13-5-2023',53,2,17); +INSERT INTO transaction VALUES (64,'18-5-2023',54,1,18); +INSERT INTO transaction VALUES (65,'15-5-2023',55,5,19); +INSERT INTO transaction VALUES (66,'11-5-2023',56,1,18); +INSERT INTO transaction VALUES (67,'12-5-2023',57,6,14); +INSERT INTO transaction VALUES (68,'19-5-2023',58,8,14); +INSERT INTO transaction VALUES (69,'20-5-2023',59,9,18); +INSERT INTO transaction VALUES (70,'02-5-2023',60,5,12); + +--INSERT INTO delivary VALUES (DELIVARY_ID,ORDER_ID,DELIVARY_DATE); +INSERT INTO delivary VALUES (71,60,'30-5-2023'); +INSERT INTO delivary VALUES (72,59,'29-5-2023'); +INSERT INTO delivary VALUES (73,58,'28-5-2023'); +INSERT INTO delivary VALUES (74,57,'27-5-2023'); +INSERT INTO delivary VALUES (75,56,'26-5-2023'); +INSERT INTO delivary VALUES (76,55,'25-5-2023'); +INSERT INTO delivary VALUES (77,54,'24-5-2023'); +INSERT INTO delivary VALUES (78,53,'23-5-2023'); +INSERT INTO delivary VALUES (79,52,'22-5-2023'); +INSERT INTO delivary VALUES (80,51,'21-5-2023'); + + +--INSERT INTO Payment VALUES (Pay_ID,DELIVARY_ID,ORDER_ID,CUST_ID,Amount,Pay_DATE); +INSERT INTO Payment VALUES (81,71,60,12,9,'30-5-2023'); +INSERT INTO payment VALUES (82,72,59,18,2,'29-5-2023'); +INSERT INTO payment VALUES (83,73,58,14,4,'28-5-2023'); +INSERT INTO payment VALUES (84,74,57,14,8,'27-5-2023'); +INSERT INTO payment VALUES (85,75,56,18,4,'26-5-2023'); +INSERT INTO payment VALUES (86,76,55,19,8,'25-5-2023'); +INSERT INTO payment VALUES (87,77,54,18,2,'24-5-2023'); +INSERT INTO payment VALUES (88,78,53,17,4,'23-5-2023'); +INSERT INTO payment VALUES (89,79,52,16,6,'22-5-2023'); +INSERT INTO payment VALUES (90,80,51,15,5,'21-5-2023'); + + + +----< Data Update >---- +-- changing employee address + +update employee +set address='80-bashab' +where employee.Emp_ID=0; + +select * from employee; + +----< Data Delete >---- +-- if we want to sack any employee +--DELETE FROM employee +--WHERE Emp_ID = 3; + + +select price from food_info; +select distinct(cust_id) from order_detail; + + +--divide Price by 2 where price>=300; +SELECT (price/2) FROM food_info +WHERE price>=300; + +--USING 'AS' +SELECT (price/2) AS REDUCED_price FROM food_info +WHERE price>=300; + +--USING BETWEEN ,AND +SELECT price FROM food_info +WHERE price BETWEEN 100 AND 400; + + +--DIFF OF 'IN' AND 'BETWEEN' +SELECT Food_name,price FROM food_info +WHERE price IN (302,129); +--order by +SELECT price +FROM food_info +ORDER BY price; + + +SELECT cust_name,Cust_ID +FROM CUSTOMER +ORDER BY Cust_ID DESC; + + + +--like %---% +SELECT cust_name, Cust_ID +FROM CUSTOMER +where cust_name LIKE '%nn%'; + +--FIND ACC WHICH HAS NAME STARTED WITH M +SELECT cust_name, Cust_ID +FROM CUSTOMER +where cust_name LIKE 'M%'; + +--FIND ACC WHICH HAS NAME ENDS WITH ne +SELECT cust_name, Cust_ID +FROM CUSTOMER +where cust_name LIKE '%ne'; + +--FIND ACC WHICH HAS NAME WITH 'A' IN MIDDLE +SELECT cust_name, Cust_ID +FROM CUSTOMER +where cust_name LIKE '%_a_%'; + +------ +select * from customer; + +SELECT COUNT(*) FROM CUSTOMER; + +SELECT SUM(price) FROM food_info; + +SELECT SUM(DISTINCT price) FROM food_info; + +--one Customer has multiple order in order table +SELECT COUNT(foodID) as Numbers ,cust_id +FROM Order_detail +GROUP BY cust_id; + +---NUMBER OF SAME AMOUNT OF price IN food_info TABLE +SELECT price, COUNT(*) +FROM food_info +GROUP BY price +HAVING price<400; + + + + +--STatus of food_name which are available nested query +SELECT food_name,price +FROM food_info +WHERE foodid IN ( + SELECT foodid + FROM food_info + WHERE status='available' +); +-- CUSTOMERS WHO HAS paid 0R DIDNT paid +SELECT Cust_ID +FROM PAYMENT +UNION ALL +SELECT Cust_ID +FROM order_detail; + +--INTERSECT (CUSTOMER NAME WHO HAS ordered AND amount>2) + +SELECT CUST_Name +FROM CUSTOMER NATURAL JOIN PAYMENT +INTERSECT +SELECT CUST_Name +FROM CUSTOMER +WHERE Cust_ID IN ( + SELECT Cust_id + FROM order_detail + WHERE amount>2 +); +------minus +-- Customers with order less than 100taka +select cust_name from customer +natural join order_detail +minus +select cust_name from customer +where cust_id IN(select cust_id from order_detail +where foodid In(select foodid from food_info where price>=100)); + + + + +--name who order maximum type +select cust_name from customer where cust_id=(select cust_id from order_detail group by cust_id having count(*)= +(select max(cnt) from( +SELECT count(*) as cnt ,cust_id +FROM order_detail +group by cust_id))); + + + + + + +-- Inner Join +select d.cust_id, d.cust_name, p.pay_id,p.amount from customer d inner join +payment p on d.cust_id = p.cust_id; + +-- food price less than some price + +select price ,food_name from food_info +where price < some(select price from food_info); + +-- food price less than avg price + +select price,food_name from food_info +where price< (select avg(price) from food_info ); + +--customer paid at 24-5-2023 + + +select cust_name from customer +where cust_id=(select cust_id from payment where Pay_DATE = '24-5-2023'); + + diff --git a/PLSQL.sql b/PLSQL.sql new file mode 100644 index 0000000..11331d4 --- /dev/null +++ b/PLSQL.sql @@ -0,0 +1,141 @@ +set serveroutput on +declare +cust_id CUSTOMER.cust_id%type; +cust_name customer.cust_NAME%type; + +begin +select cust_id,cust_name into cust_id,cust_name from customer where cust_id=11; +dbms_output.put_line('cust_id: '||cust_id|| ' cust_name: '||cust_name ); +end; + + +--Cursor and row count--- + +set serveroutput on +declare +cursor food_cursor is select * from food_info; +food_row food_info%rowtype; +begin +open food_cursor; +fetch food_cursor into food_row.foodid,food_row.food_name,food_row.price,food_row.details,food_row.status; +while food_cursor%found loop +dbms_output.put_line('food_id: '||food_row.foodid|| ' food_name: '||food_row.food_name || ' price: ' ||food_row.price); +dbms_output.put_line('Row count: '|| food_cursor%rowcount); +fetch food_cursor into food_row.foodid,food_row.food_name,food_row.price,food_row.details,food_row.status; +end loop; +close food_cursor; +end; + + +--for loop while loop array--- + +set serveroutput on +declare + counter number; + name food_info.food_name%type; + TYPE NAMEARRAY IS VARRAY(6) OF FOOD_INFO.FOOD_NAME%type; + a NAMEARRAY:=NAMEARRAY(); +begin + counter:=1; + for x in 101..106 + loop + select food_name into name from food_info where foodid = x; + a.EXTEND(); + a(counter):=name; + counter:=counter+1; + end loop; + counter:=1; + WHILE counter<=a.COUNT + LOOP + DBMS_OUTPUT.PUT_LINE(a(counter)); + counter:=counter+1; + END LOOP; +end; + +/ + +----If Else--- +--if price<=100 => low price ,,, <=200 medium price ,,else high price +set serveroutput on +declare + counter number; + pricee food_info.price%type; + food FOOD_INFO.FOOD_NAME%type; + TYPE NAMEARRAY IS VARRAY(10) OF FOOD_INFO.price%type; + a NAMEARRAY:=NAMEARRAY(); +begin + counter:=1; + for x in 101..110 + loop + select price into pricee from food_info where foodid = x; + a.EXTEND(); + a(counter):=pricee; + counter:=counter+1; + end loop; + counter:=1; + WHILE counter<=a.COUNT + LOOP + DBMS_OUTPUT.PUT_LINE(a(counter)); + select food_name into food from food_info where foodid = 100+counter; + if a(counter)<=100 + then + + dbms_output.put_line(food ||'is Low priced'); + elsif a(counter)<=200 + then + + dbms_output.put_line(food ||'is Medium priced'); + else + + dbms_output.put_line(food ||'is high priced'); + end if; + counter:=counter+1; + END LOOP; +end; +/ + + +----- +CREATE OR REPLACE PROCEDURE custommer( + var1 IN varchar, + var2 OUT VARCHAR2 +) +AS + +BEGIN + + SELECT cust_name INTO var2 FROM customer WHERE cust_id IN (SELECT cust_id FROM order_detail WHERE order_date = var1); + + DBMS_OUTPUT.PUT_LINE('customer name :' || var2 || ' order_date : ' || var1 ); +END; +/ + + +declare +order_date order_detail.order_date%type:='20-5-2023'; +cust_name customer.cust_name%type; + +begin +custommer(order_date,cust_name); +end; +/ + +----- + +set serveroutput on +create or replace function amountt(var1 in varchar) return number AS +value order_detail.amount%type; +begin + select amount into value from ORDER_DETAIL where order_date=var1; + return value; +end; +/ +set serveroutput on +declare +value varchar(20); +begin +value:=amountt('20-5-2023'); +DBMS_OUTPUT.PUT_LINE('amount:' || value || ' order_date : ' || '20-5-2023'); +end; +/ + diff --git a/trigger.sql b/trigger.sql new file mode 100644 index 0000000..6af75b3 --- /dev/null +++ b/trigger.sql @@ -0,0 +1,12 @@ +CREATE OR REPLACE TRIGGER trg_insert_employee_customer +AFTER INSERT ON Employee +FOR EACH ROW +BEGIN + INSERT INTO Customer (Cust_ID, cust_name, Phone, USER_NAME, PASS, CUST_ADDRESS) + VALUES (:NEW.Emp_ID, :NEW.Name, :NEW.Contact, :NEW.User_Name, :NEW.Pass, :NEW.Address); +END; + +INSERT INTO Employee VALUES (30, 'Rock', '0171043810','ro10','100','90haka'); + +select * from employee; +select * from customer; \ No newline at end of file