diff --git a/DDL(1907100).sql b/DDL(1907100).sql new file mode 100644 index 0000000..4336c9a --- /dev/null +++ b/DDL(1907100).sql @@ -0,0 +1,163 @@ + + +drop table transaction_info; +drop table train_schedule_info; +drop table route_info; +drop table ticket_info; +drop table passenger_info; +drop table train_info; +drop table station_info; + +select table_name from user_tables; + + + + + +create table station_info( +station_id NUMBER(20), +station_name varchar(40) UNIQUE not null, +location varchar(40) not null, +primary key(station_id), +CONSTRAINT positive_1 CHECK (station_id > 0) +); + + + + + +create table train_info( +train_id NUMBER(20), +train_name varchar(40) UNIQUE not null, +train_type varchar(40) not null, +destination_station_id NUMBER(20) not null, +departure_time varchar(20) not null, +arrival_time varchar(20) not null, +primary key(train_id), +CONSTRAINT positive_2 CHECK (train_id > 0), +foreign key(destination_station_id) references station_info(station_id) +on delete cascade +); + + + + + + +create table passenger_info +( +passenger_id NUMBER(20), +first_name varchar(20) not null, +middle_name varchar(20), +last_name varchar(20) not null, +email varchar(40) NULL UNIQUE, +phone_number varchar(20) UNIQUE not null, +primary key(passenger_id), +CONSTRAINT chk_length CHECK (length(phone_number)=11), +CONSTRAINT positive_3 CHECK (passenger_id> 0) +); + + +create table ticket_info +( +ticket_id NUMBER(20), +passenger_id NUMBER(20) UNIQUE not null, +train_id NUMBER(20) not null, +journey_date date not null, +destination_station_id NUMBER(20) not null, +coach_number varchar(20) not null, +coach_type varchar(20) not null, +total_seats NUMBER(20) not null, +seat_numbers varchar(40) not null, +fare_amount NUMBER(20) not null CONSTRAINT ck_non_negative_amount CHECK (fare_amount > 0), +primary key(ticket_id), +CONSTRAINT positive_4 CHECK (ticket_id> 0), +CONSTRAINT seat CHECK (total_seats<=36), +foreign key(train_id) references train_info(train_id), +foreign key(passenger_id) references passenger_info(passenger_id), +foreign key(destination_station_id) references station_info(station_id) +on delete cascade +); + + + + +create table route_info( +route_id NUMBER(20) CONSTRAINT positive_5 CHECK (route_id > 0), +train_id NUMBER(20), +route_name varchar(40) not null, +station_id_to NUMBER(20) not null, +primary key(route_id,train_id), +foreign key(train_id) references train_info(train_id), +foreign key(station_id_to) references station_info(station_id) +on delete cascade +); + +alter table route_info rename column station_id_to to final_destination_station_id; + + + + +create table train_schedule_info( +route_id NUMBER(20), +train_id NUMBER(20), +running_days varchar(40) not null, +primary key(route_id,train_id), +CONSTRAINT fk +foreign key(route_id,train_id) references route_info(route_id,train_id) +on delete cascade +); + +alter table train_schedule_info modify running_days varchar(100); + + + + + +create table transaction_info( +transaction_id NUMBER(20) CONSTRAINT positive_6 CHECK(transaction_id>0), +ticket_id NUMBER(20) UNIQUE not null, +transaction_date date not null, +payment_method varchar(40) not null, +transaction_amount NUMBER(20) not null CONSTRAINT non_negative_amount CHECK (transaction_amount> 0), +primary key(transaction_id), +foreign key(ticket_id) references ticket_info(ticket_id) +on delete cascade +); + + +select table_name from user_tables; + + +alter table transaction_info add location varchar(40); +alter table transaction_info drop column location; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DML(1907100).sql b/DML(1907100).sql new file mode 100644 index 0000000..a95c2e7 --- /dev/null +++ b/DML(1907100).sql @@ -0,0 +1,190 @@ + +set pagesize 100 +set linesize 200 + +insert into station_info(station_id,station_name,location) values(1,'Airport Railway Station','Dhaka'); +insert into station_info(station_id,station_name,location) values(2,'Tongi Railway Junction','Gazipur'); +insert into station_info(station_id,station_name,location) values(3,'Akhaura Railway Junction','Brahmanbaria'); +insert into station_info(station_id,station_name,location) values(4,'Sylhet Railway Station','Sylhet'); +insert into station_info(station_id,station_name,location) values(5,'Lakhsham Railway Junction','Cumilla'); +insert into station_info(station_id,station_name,location) values(6,'Chittagong Railway Station','Chittagong'); +insert into station_info(station_id,station_name,location) values(7,'Khulna Railway Station','Khulna'); +insert into station_info(station_id,station_name,location) values(8,'Ishwardi Railway Junction','Pabna'); +insert into station_info(station_id,station_name,location) values(9,'Rajshahi Railway Station','Rajshahi'); +insert into station_info(station_id,station_name,location) values(10,'Saidpur Railway Station','Nilphamari'); + + + +insert into train_info(train_id,train_name,train_type,destination_station_id,departure_time,arrival_time)values(1000,'Commuter-1','Commuter',1,'6:00 am','6:30 am'); +insert into train_info(train_id,train_name,train_type,destination_station_id,departure_time,arrival_time)values(1001,'Commuter-2','Commuter',2,'6:00 am','6:50 am'); +insert into train_info(train_id,train_name,train_type,destination_station_id,departure_time,arrival_time)values(1002,'Parabat Express','Inter-City',4,'7:00 am','2:00 pm'); +insert into train_info(train_id,train_name,train_type,destination_station_id,departure_time,arrival_time)values(1003,'Sonar Bangla Express','Inter-City',6,'8:00 am','2:00 pm'); +insert into train_info(train_id,train_name,train_type,destination_station_id,departure_time,arrival_time)values(1004,'Suborno Express','Inter-City',6,'3:30 pm','9:00 pm'); +insert into train_info(train_id,train_name,train_type,destination_station_id,departure_time,arrival_time)values(1005,'Turna Express','Inter-City',6,'11:00 pm','6:00 am'); +insert into train_info(train_id,train_name,train_type,destination_station_id,departure_time,arrival_time)values(1006,'Chittagong Mail Express','Mail-Train',6,'7.30 am','4:00 pm'); +insert into train_info(train_id,train_name,train_type,destination_station_id,departure_time,arrival_time)values(1007,'Sundarban Express','Inter-City',7,'8:00 am','6:30 pm'); +insert into train_info(train_id,train_name,train_type,destination_station_id,departure_time,arrival_time)values(1008,'Chittra Express','Inter-City',7,'10:00 pm','6:30 am'); +insert into train_info(train_id,train_name,train_type,destination_station_id,departure_time,arrival_time)values(1009,'Bananlota Express','Inter-City',9,'7:00 am','12:30 pm'); +insert into train_info(train_id,train_name,train_type,destination_station_id,departure_time,arrival_time)values(1010,'Silk City Express','Inter-City',9,'2:40 pm','8:00 pm'); +insert into train_info(train_id,train_name,train_type,destination_station_id,departure_time,arrival_time)values(1011,'Nilsagar Express','Inter-City',10,'10:00 pm','7:00 am'); + + +insert into passenger_info(passenger_id,first_name,middle_name,last_name,email,phone_number)values(1,'Shureed',NULL,'Shazzad','shureedshazzad534@gmail.com','01798052279'); +insert into passenger_info(passenger_id,first_name,middle_name,last_name,email,phone_number)values(2,'Abdur',NULL,'Rahim',NULL,'01798042279'); +insert into passenger_info(passenger_id,first_name,middle_name,last_name,email,phone_number)values(3,'Abdur','Rahman','Hridoy','hridoy@gmail.com','01898052279'); +insert into passenger_info(passenger_id,first_name,middle_name,last_name,email,phone_number)values(4,'Shazzad',NULL,'Selim','shazzad@gmail.com','01816486565'); +insert into passenger_info(passenger_id,first_name,middle_name,last_name,email,phone_number)values(5,'Shifat','Sharmin','Chowdhury','shifat@gmail.com','01716399615'); +insert into passenger_info(passenger_id,first_name,middle_name,last_name,email,phone_number)values(6,'Tahamid',NULL,'Alam','tahmid@gmail.com','01516399615'); +insert into passenger_info(passenger_id,first_name,middle_name,last_name,email,phone_number)values(7,'Abdul',NULL,'Jabbar',NULL,'01917865349'); +insert into passenger_info(passenger_id,first_name,middle_name,last_name,email,phone_number)values(8,'Mohammad',NULL,'Harun','harun@gmail.com','01516825349'); +insert into passenger_info(passenger_id,first_name,middle_name,last_name,email,phone_number)values(9,'Abul','Kalam','Azad',NULL,'01917865390'); +insert into passenger_info(passenger_id,first_name,middle_name,last_name,email,phone_number)values(10,'Mohammad',NULL,'Naim','naim@gmail.com','01312655349'); + + +insert into ticket_info(ticket_id,passenger_id,train_id,journey_date,destination_station_id,coach_number,coach_type,total_seats,seat_numbers,fare_amount)values(2471,1,1000,DATE '2023-4-17',1,'A','Shulov',1,'A-2',20); +insert into ticket_info(ticket_id,passenger_id,train_id,journey_date,destination_station_id,coach_number,coach_type,total_seats,seat_numbers,fare_amount)values(2472,2,1001,DATE '2023-4-17',2,'D','Shulov',1,'D-6',50); +insert into ticket_info(ticket_id,passenger_id,train_id,journey_date,destination_station_id,coach_number,coach_type,total_seats,seat_numbers,fare_amount)values(2473,3,1002,DATE '2023-4-17',3,'F','Shovon Chair',1,'F-3',200); +insert into ticket_info(ticket_id,passenger_id,train_id,journey_date,destination_station_id,coach_number,coach_type,total_seats,seat_numbers,fare_amount)values(2474,4,1002,DATE '2023-4-18',4,'B','Shovon Chair',1,'B-2',650); +insert into ticket_info(ticket_id,passenger_id,train_id,journey_date,destination_station_id,coach_number,coach_type,total_seats,seat_numbers,fare_amount)values(2475,5,1003,DATE '2023-4-19',6,'F','Shovon Chair',1,'F-2',600); +insert into ticket_info(ticket_id,passenger_id,train_id,journey_date,destination_station_id,coach_number,coach_type,total_seats,seat_numbers,fare_amount)values(2476,6,1003,DATE '2023-4-19',6,'A','Tapanokul Chaicoach',6,'A-2 A-3 A-4 A-5 A-6 A-7',5400); +insert into ticket_info(ticket_id,passenger_id,train_id,journey_date,destination_station_id,coach_number,coach_type,total_seats,seat_numbers,fare_amount)values(2477,7,1005,DATE '2023-4-20',5,'D','Tapanokul Chaicoach',4,'D-2 D-3 D-4 D-5',2800); +insert into ticket_info(ticket_id,passenger_id,train_id,journey_date,destination_station_id,coach_number,coach_type,total_seats,seat_numbers,fare_amount)values(2478,8,1005,DATE '2023-4-20',6,'E','Tapanokul Sleeper',4,'D-2 D-3 D-4 D-5',3600); +insert into ticket_info(ticket_id,passenger_id,train_id,journey_date,destination_station_id,coach_number,coach_type,total_seats,seat_numbers,fare_amount)values(2479,9,1007,DATE '2023-4-22',7,'H','First Class',4,'D-2 D-3 D-4 D-5',4400); +insert into ticket_info(ticket_id,passenger_id,train_id,journey_date,destination_station_id,coach_number,coach_type,total_seats,seat_numbers,fare_amount)values(2480,10,1008,DATE '2023-4-22',7,'H','Shovon Chair',4,'D-2 D-3 D-4 D-5',2700); + + + + +insert into route_info(route_id,train_id,route_name,final_destination_station_id)values(10001,1002,'Dhaka-Sylhet',4); +insert into route_info(route_id,train_id,route_name,final_destination_station_id)values(10002,1003,'Dhaka-Chittagong',6); +insert into route_info(route_id,train_id,route_name,final_destination_station_id)values(10002,1004,'Dhaka-Chittagong',6); +insert into route_info(route_id,train_id,route_name,final_destination_station_id)values(10002,1005,'Dhaka-Chittagong',6); +insert into route_info(route_id,train_id,route_name,final_destination_station_id)values(10002,1006,'Dhaka-Chittagong',6); +insert into route_info(route_id,train_id,route_name,final_destination_station_id)values(10003,1007,'Dhaka-Khulna',7); +insert into route_info(route_id,train_id,route_name,final_destination_station_id)values(10003,1008,'Dhaka-Khulna',7); +insert into route_info(route_id,train_id,route_name,final_destination_station_id)values(10004,1009,'Dhaka-Rajshahi',9); +insert into route_info(route_id,train_id,route_name,final_destination_station_id)values(10004,1010,'Dhaka-Rajshahi',9); +insert into route_info(route_id,train_id,route_name,final_destination_station_id)values(10005,1011,'Dhaka-Saidpur',10); + + + + +insert into train_schedule_info(route_id,train_id,running_days)values(10001,1002,'Saturday,Sunday,Monday,Tuesday,Wednesday,Thursday,Friday'); +insert into train_schedule_info(route_id,train_id,running_days)values(10002,1003,'Saturday,Sunday,Monday,Tuesday,Wednesday,Friday'); +insert into train_schedule_info(route_id,train_id,running_days)values(10002,1004,'Saturday,Sunday,Monday,Tuesday,Wednesday,Thursday,Friday'); +insert into train_schedule_info(route_id,train_id,running_days)values(10002,1005,'Saturday,Sunday,Monday,Tuesday,Wednesday,Thursday,Friday'); +insert into train_schedule_info(route_id,train_id,running_days)values(10002,1006,'Saturday,Sunday,Monday,Tuesday,Thursday,Friday'); +insert into train_schedule_info(route_id,train_id,running_days)values(10003,1007,'Saturday,Sunday,Monday,Tuesday,Wednesday,Thursday'); +insert into train_schedule_info(route_id,train_id,running_days)values(10003,1008,'Saturday,Monday,Tuesday,Wednesday,Thursday,Friday'); +insert into train_schedule_info(route_id,train_id,running_days)values(10004,1009,'Saturday,Sunday,Monday,Tuesday,Wednesday,Thursday,Friday'); +insert into train_schedule_info(route_id,train_id,running_days)values(10004,1010,'Sunday,Monday,Tuesday,Wednesday,Thursday,Friday'); +insert into train_schedule_info(route_id,train_id,running_days)values(10005,1011,'Saturday,Sunday,Monday,Tuesday,Wednesday,Thursday,Friday'); + + +insert into transaction_info(transaction_id,ticket_id,transaction_date,payment_method,transaction_amount)values(15001,2471,DATE '2023-4-5','Bkash',20); +insert into transaction_info(transaction_id,ticket_id,transaction_date,payment_method,transaction_amount)values(15002,2472,DATE '2023-4-5','Bkash',50); +insert into transaction_info(transaction_id,ticket_id,transaction_date,payment_method,transaction_amount)values(15003,2473,DATE '2023-4-6','Bkash',200); +insert into transaction_info(transaction_id,ticket_id,transaction_date,payment_method,transaction_amount)values(15004,2474,DATE '2023-4-6','Bkash',650); +insert into transaction_info(transaction_id,ticket_id,transaction_date,payment_method,transaction_amount)values(15005,2475,DATE '2023-4-9','Bkash',600); +insert into transaction_info(transaction_id,ticket_id,transaction_date,payment_method,transaction_amount)values(15006,2476,DATE '2023-4-9','Bkash',5400); +insert into transaction_info(transaction_id,ticket_id,transaction_date,payment_method,transaction_amount)values(15007,2477,DATE '2023-4-9','Bkash',2800); +insert into transaction_info(transaction_id,ticket_id,transaction_date,payment_method,transaction_amount)values(15008,2478,DATE '2023-4-13','Bkash',3600); +insert into transaction_info(transaction_id,ticket_id,transaction_date,payment_method,transaction_amount)values(15009,2479,DATE '2023-4-13','Bkash',4400); +insert into transaction_info(transaction_id,ticket_id,transaction_date,payment_method,transaction_amount)values(15010,2480,DATE '2023-4-17','Bkash',2700); + +--find passenger_info from passenger_table using transaction_id in transaction_info +select first_name, phone_number from passenger_info where passenger_id in (select passenger_id from ticket_info where ticket_id in(select ticket_id from transaction_info where transaction_id=15001)); + + + +--find destination_station_info using amount in transaction_info +select station_name,location from station_info where station_id in (select destination_station_id from ticket_info where ticket_id in (select ticket_id from transaction_info where transaction_amount>50)); + + + +--update station_location +update station_info set location='Dinajpur' where station_id in (select destination_station_id from train_info where train_name='Nilsagar Express'); + + + +select *from station_info; + + + +update station_info set location='Nilphamari' where station_id in (select destination_station_id from train_info where train_name='Nilsagar Express'); + + + +select *from station_info; + + + + +--deleteing a transaction +delete from transaction_info where ticket_id in(select ticket_id from ticket_info where passenger_id in(select passenger_id from passenger_info where phone_number='01798052279')); + + +select *from transaction_info; + + + +--passenger info who are going to Sylhet or Chittagong +(select first_name from passenger_info where passenger_id in (select passenger_id from ticket_info where destination_station_id in(select station_id from station_info where location='Sylhet'))) union +(select first_name from passenger_info where passenger_id in (select passenger_id from ticket_info where destination_station_id in(select station_id from station_info where location='Chittagong'))); + + + + +--passenger whose transaction_amount greater than average transaction +select *from passenger_info where passenger_id in(select passenger_id from ticket_info where ticket_id in(select ticket_id from transaction_info where transaction_amount>=(select avg(transaction_amount) from transaction_info))); + + + +--transaction info group by date +select transaction_date,avg(transaction_amount) from transaction_info group by transaction_date having avg(transaction_amount)>=50; + + + +--train which go to sylhet or chittagong from dhaka + select train_name from train_info where train_id in(select train_id from route_info where route_name='Dhaka-Sylhet' or route_name='Dhaka-Chittagong'); + + + +--choosing transaction amount greater than 300 + select *from transaction_info where transaction_amount > some(select transaction_amount from transaction_info where transaction_amount>=300); + select *from transaction_info where transaction_amount > all(select transaction_amount from transaction_info where transaction_amount>=300); + + +--string operation + select *from train_schedule_info where train_id in(select train_id from train_info where train_name like '%S%'); + + +--join operation +select *from train_info join ticket_info on train_info.train_id=ticket_info.train_id +join route_info on ticket_info.train_id=route_info.train_id +join train_schedule_info on route_info.train_id=train_schedule_info.train_id; + + + + +--view +create view station_location_detail as select station_name,location from station_info; +select *from station_location_detail; + + + + + + + + + + + + + + + + + + diff --git a/PL SQL(1907100).sql b/PL SQL(1907100).sql new file mode 100644 index 0000000..732fbfd --- /dev/null +++ b/PL SQL(1907100).sql @@ -0,0 +1,165 @@ + +--print station information using pl/sql +set serveroutput on +declare +station_name station_info.station_name%type; +location station_info.location%type; +begin +select station_name,location into station_name,location from station_info where station_id in(select destination_station_id from ticket_info where passenger_id +in (select passenger_id from passenger_info where first_name='Shureed')); +dbms_output.put_line('Station Name: '||station_name||' Loaction Name: '||location); +end; +/ + + + +--insert info using pl/sql +set serveroutput on +declare +station_id station_info.station_id%type:=11; +station_name station_info.station_name%type:='Bhoirob Bazar'; +location station_info.location%type:='Kishorgonj'; +begin +insert into station_info values(station_id,station_name,location); +end; +/ + +--print station information using pl/sql +set serveroutput on +declare +station_row station_info%rowtype; +begin +select station_name,location into station_row.station_name,station_row.location from station_info where station_id=1; +dbms_output.put_line('Station Name: '||station_row.station_name||' Loaction Name: '||station_row.location); +end; +/ + +--using cursor and loop to see passenger_info +set serveroutput on +declare +cursor passenger_info_cursor is select * from passenger_info; +passenger_row passenger_info%rowtype; +begin +open passenger_info_cursor; +fetch passenger_info_cursor into passenger_row.passenger_id,passenger_row.first_name,passenger_row.middle_name,passenger_row.last_name,passenger_row.email,passenger_row.phone_number; +while passenger_info_cursor%found loop +dbms_output.put_line(passenger_row.passenger_id ||' ' || passenger_row.first_name || passenger_row.middle_name || passenger_row.last_name || passenger_row.email || passenger_row.phone_number); +fetch passenger_info_cursor into passenger_row.passenger_id,passenger_row.first_name,passenger_row.middle_name,passenger_row.last_name,passenger_row.email,passenger_row.phone_number; +end loop; +close passenger_info_cursor; +end; +/ + + +--use of cursor,loop and array +set serveroutput on +declare +cursor coach_cursor is select coach_type from ticket_info; +counter NUMBER:=0; +coach_type ticket_info.coach_type%type; +type array is varray(10) of ticket_info.coach_type%type; +myarray array:=array(); +Begin +open coach_cursor; +counter:=0; +fetch coach_cursor into coach_type; +while coach_cursor%found loop +counter:=counter+1; +myarray.extend(); +myarray(counter):=coach_type; +fetch coach_cursor into coach_type; +end loop; +close coach_cursor; +counter:=1; +while counter<=myarray.count +loop +if (myarray(counter)='Shulov') or (myarray(counter)='Shovon Chair') then +dbms_output.put_line(myarray(counter) ||' is non luxarious compartment'); +else +dbms_output.put_line(myarray(counter) || ' is luxarious compartment'); +end if; +counter:=counter+1; +end loop; +end; +/ + +--procedure +set serveroutput on +CREATE OR REPLACE PROCEDURE proc( +var1 in NUMBER, +var2 in NUMBER +) +As +name varchar(20); +res number; +Begin +res:=var2/var1; +select first_name into name from passenger_info where passenger_id in(select passenger_id from ticket_info where total_seats=var1 and fare_amount=var2); +DBMS_OUTPUT.PUT_LINE(name || ' spends '|| res ||'tk for per seat'); + NULL; +END; +/ +set serveroutput on +declare +cursor info_cursor is select total_seats,fare_amount from ticket_info; +total_seats ticket_info.total_seats%type; +fare_amount ticket_info.fare_amount%type; +begin +open info_cursor; +fetch info_cursor into total_seats,fare_amount; +while info_cursor%found loop +proc(total_seats,fare_amount); +fetch info_cursor into total_seats,fare_amount; +end loop; +close info_cursor; +end; +/ + +drop procedure proc; + + +--function + +CREATE OR REPLACE function func(var1 in number,var2 in number) return NUMBER as +value number; +begin +value:=var2/var1; +return value; +end; +/ + +set serveroutput on +declare +cursor info_cursor is select total_seats,fare_amount from ticket_info; +seats ticket_info.total_seats%type; +amount ticket_info.fare_amount%type; +res number; +name varchar(20); +begin +open info_cursor; +fetch info_cursor into seats,amount; +while info_cursor%found loop +select first_name into name from passenger_info where passenger_id in(select passenger_id from ticket_info where total_seats=seats and fare_amount=amount); +res:=func(seats,amount); +DBMS_OUTPUT.PUT_LINE(name || ' spends '|| res ||'tk for per seat'); +fetch info_cursor into seats,amount; +end loop; +close info_cursor; +end; +/ + + + + + + + + + + + + + + + + diff --git a/README.md b/README.md new file mode 100644 index 0000000..253e29e --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +This is a database project related to a railway management system.