Skip to content

Feedback #1

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 14 commits into
base: feedback
Choose a base branch
from
Open
69 changes: 69 additions & 0 deletions 1907031_DDL.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
-- Drop the applications table
DROP TABLE applications;

-- Drop the jobs table
DROP TABLE jobs;

-- Drop the users table
DROP TABLE users;

-- Drop the companies table
DROP TABLE companies;

-- Create the companies table
CREATE TABLE companies (
company_id INTEGER NOT NULL,
company_name VARCHAR(40) NOT NULL,
category VARCHAR(40),
website VARCHAR(40),
ceo_name VARCHAR(40),
PRIMARY KEY (company_id)
);

-- Create the users table
CREATE TABLE users (
user_id INTEGER NOT NULL,
user_name VARCHAR(40) NOT NULL,
phone NUMBER(15),
email VARCHAR(40) UNIQUE NOT NULL,
skillset VARCHAR(40),
educational_qualification VARCHAR(40),
PRIMARY KEY (user_id)
);

-- Create the jobs table
CREATE TABLE jobs (
job_id INTEGER NOT NULL,
job_title VARCHAR(40) NOT NULL,
company_id INTEGER NOT NULL,
job_type VARCHAR(40) CHECK (job_type IN ('Full Time', 'Part Time', 'Contract', 'Temporary', 'Remote')),
salary NUMBER(20),
education VARCHAR(40),
PRIMARY KEY (job_id),
FOREIGN KEY (company_id) REFERENCES companies(company_id)
on delete cascade
);

-- Create the applications table
CREATE TABLE applications (
app_id INTEGER NOT NULL,
job_id INTEGER NOT NULL,
user_id INTEGER NOT NULL,
status VARCHAR(40) CHECK (status IN ('Accepted', 'Rejected', 'Pending')),
PRIMARY KEY (app_id),
FOREIGN KEY (job_id) REFERENCES jobs(job_id),
FOREIGN KEY (user_id) REFERENCES users(user_id)
on delete cascade
);

-- Add column in the table
ALTER TABLE applications ADD test CHAR(40);

--Modify column definition in the table
alter table applications modify test varchar(40);

--Rename the column name
alter table applications rename column test to test2;

--Drop the column from table
alter table applications drop column test2;
142 changes: 142 additions & 0 deletions 1907031_DML.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
-- Insert data into the companies table
INSERT INTO companies VALUES(0001, 'Apple', 'Multinational Technology', 'www.apple.com', 'Tim Cook');
INSERT INTO companies VALUES(0002, 'Google', 'Multinational Technology', 'www.google.com', 'Sundar Pichai');
INSERT INTO companies VALUES(0003, 'Electronic Arts', 'Video Game', 'www.ea.com', 'Andrew Wilson');
INSERT INTO companies VALUES(0004, 'Microsoft', 'Multinational Technology', 'www.microsoft.com', 'Sotya Nadella');
INSERT INTO companies VALUES(0005, 'Tesla', 'Multinational Automotive', 'www.tesla.com', 'Elon Mask');
INSERT INTO companies VALUES(0006, 'Samsung', 'Multinational Technology', 'www.samsung.com', 'Kim Hyun-suk');
INSERT INTO companies VALUES(0007, 'Amazon', 'E-commerce', 'www.amazon.com', 'Andy Jassy');
INSERT INTO companies VALUES(0008, 'Sony', 'Multinational Conglomerate', 'www.sony.com', 'Kenichiro Yoshida');
INSERT INTO companies VALUES(0009, 'IBM', 'Multinational Technology', 'www.ibm.com', 'Arvind Krishna');
INSERT INTO companies VALUES(0010, 'Netflix', 'Streaming Media', 'www.netflix.com', 'Reed Hastings');

-- Insert data into the users table
INSERT INTO users VALUES(1001, 'Naimur Rahman', 01751099887, '[email protected]', 'Game Developer', 'Bsc in CSE');
INSERT INTO users VALUES(1002, 'Galib', 01759964341, '[email protected]', 'Software Developer', 'Bsc in SWE');
INSERT INTO users VALUES(1003, 'Atique Faisal', 01994213076, '[email protected]', 'Chip Designer', 'Bsc in EEE');
INSERT INTO users VALUES(1004, 'Enan Emon', 01859964299, '[email protected]', 'Graphics Designer', 'HSC');
INSERT INTO users VALUES(1005, 'Yashrif Arifin', 01776809429, '[email protected]', 'Software Developer', 'Bsc in CSE');
INSERT INTO users VALUES(1006, 'John Smith', 0123456781, '[email protected]', 'Software Engineer', 'BSc in Computer Science');
INSERT INTO users VALUES(1007, 'Emma Johnson', 0123456782, '[email protected]', 'Data Analyst', 'BSc in Mathematics');
INSERT INTO users VALUES(1008, 'Michael Brown', 0123456783, '[email protected]', 'Web Developer', 'BSc in Information Technology');
INSERT INTO users VALUES(1009, 'Olivia Davis', 0123456784, '[email protected]', 'UI/UX Designer', 'BSc in Multimedia');
INSERT INTO users VALUES(1010, 'Sophia Wilson', 0123456785, '[email protected]', 'Data Scientist', 'BSc in Statistics');

-- Insert data into the jobs table
INSERT INTO jobs VALUES(2001, 'Software Developer', 0004, 'Full Time', 20000, 'Bsc in SWE');
INSERT INTO jobs VALUES(2002, 'Game Developer', 0003, 'Part Time', 5000, 'Bsc in CSE');
INSERT INTO jobs VALUES(2003, 'Graphics Designer', 0002, 'Contract', 2000, 'HSC');
INSERT INTO jobs VALUES(2004, 'Software Developer', 0001, 'Part Time', 8000, 'Bsc in CSE');
INSERT INTO jobs VALUES(2005, 'Chip Designer', 0005, 'Full Time', 25000, 'Bsc in EEE');
INSERT INTO jobs VALUES(2006, 'Software Engineer', 0009, 'Full Time', 50000, 'BSc in Computer Science');
INSERT INTO jobs VALUES(2007, 'Data Analyst', 0006, 'Part Time', 25000, 'BSc in Mathematics');
INSERT INTO jobs VALUES(2008, 'Web Developer', 0006, 'Contract', 3000, 'BSc in Information Technology');
INSERT INTO jobs VALUES(2009, 'UI/UX Designer', 0008, 'Full Time', 40000, 'BSc in Multimedia');
INSERT INTO jobs VALUES(2010, 'Data Scientist', 0010, 'Part Time', 35000, 'BSc in Statistics');

-- Insert data into the applications table
INSERT INTO applications VALUES(3001, 2004, 1005, 'Accepted');
INSERT INTO applications VALUES(3002, 2004, 1002, 'Pending');
INSERT INTO applications VALUES(3003, 2001, 1005, 'Rejected');
INSERT INTO applications VALUES(3004, 2001, 1002, 'Accepted');
INSERT INTO applications VALUES(3005, 2005, 1003, 'Accepted');
INSERT INTO applications VALUES(3006, 2003, 1004, 'Pending');
INSERT INTO applications VALUES(3007, 2002, 1001, 'Accepted');
INSERT INTO applications VALUES(3008, 2007, 1007, 'Accepted');
INSERT INTO applications VALUES(3009, 2008, 1008, 'Pending');
INSERT INTO applications VALUES(3010, 2009, 1009, 'Rejected');
INSERT INTO applications VALUES(3011, 2010, 1010, 'Accepted');
INSERT INTO applications VALUES(3012, 2006, 1006, 'Rejected');

--Displaying table data using SELECT command
select * from companies where category = 'Multinational Technology';

--Displaying table data using subquery
select * from companies where company_id = (select company_id from jobs where job_id = 2006);

--Updating the data in a table
update jobs set job_title = 'Informatics Engineer' where job_id = 2008;

--Deleting row from a table
INSERT INTO jobs VALUES(2011, 'Data Scientist', 0010, 'Full Time', 25000, 'BSc in CSE');
delete from jobs where job_id = 2011;

--union, intersect, and except
select company_name from companies where company_name like 'S%' union select company_name from companies where company_name like '%o%';
select company_name from companies where company_name like 'S%' INTERSECT select company_name from companies where company_name like '%o%';
select company_name from companies where company_name like 'S%' EXCEPT select company_name from companies where company_name like '%o%';

--With clause
with max_salary(val) as (select max(salary) from jobs)
select * from jobs, max_salary where jobs.salary = max_salary.val;

--Aggregate function
--count how many row exist
select count(*) from companies;
--give alias name to any output in select command
select count(category) as number_of_categories from companies;
--count distinct
select count(distinct category) as number_of_categories from companies;
--count average and total
select avg(salary) from jobs;
select sum(salary) from jobs;
--find max and min
select max(salary) from jobs;
select min(salary) from jobs;

--Group by and Having
select job_type, avg(salary) from jobs group by job_type;
select job_type, avg(salary) from jobs group by job_type having avg(salary) > 18000;

--Nested subquery
select company_name from companies where company_id =
(select company_id from jobs where job_id =
(select job_id from applications where app_id = 3003));

--Set Membership (AND, OR, NOT)
select * from companies where category = 'Multinational Technology' and company_id in (select company_id from jobs where education like '%CSE%');
select * from jobs where salary > some(select salary from jobs where salary >= 20000);
select * from jobs where salary > all(select salary from jobs where salary >= 20000);
select * from jobs where salary >= 20000 and exists(select * from companies where category like '%Multinational Technology%');

--String operations
--beginning with H
SELECT * FROM jobs where education like 'H%';
--ending with e
SELECT * FROM jobs where education like '%E';
--contains c & E
SELECT * FROM jobs where education like '%C%E%';
--character length 3
SELECT * FROM jobs where education like '___';
--character length 3 or 10
SELECT * FROM jobs where education like '___' or education like '__________';

--Join operations
--natural JOIN
select * from companies natural join jobs where company_id = 0001;
select * from companies natural join jobs;
--join using
select company_name, job_title from companies join jobs using(company_id);
--on and relation
select company_name, job_title from companies join jobs on companies.company_id = jobs.company_id;
--left outer join
select company_name, job_title from companies left outer join jobs using(company_id);
select company_name, job_title from companies left outer join jobs on companies.company_id = jobs.company_id;
--right outer join
select company_name, job_title from companies right outer join jobs using(company_id);
--full outer join
select company_name, job_title from companies full outer join jobs using(company_id);

--Views
drop VIEW custom;
drop VIEW company_details;
drop VIEW Apple_Jobs;
--without other ATTRIBUTES
create view company_details as select company_id, company_name from companies;
SELECT * from company_details;
--as a combination
create view Apple_Jobs as select job_title from jobs where company_id = (select company_id from companies where company_name = 'Apple');
SELECT * from Apple_Jobs;
--Using Other Views
create view custom as select * from company_details where company_id >= 0006;
SELECT * from custom;
169 changes: 169 additions & 0 deletions 1907031_PL-SQL.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,169 @@
--PL/SQL variable declaration and print value
set serveroutput on
declare
job_id jobs.job_id%type;
job_title jobs.job_title%type;
salary number;
begin
select job_id, job_title, salary into job_id, job_title, salary from jobs where job_id = 2007;
dbms_output.put_line('job_id: '||job_id|| ' job_title: '||job_title || ' salary: '||salary);
end;
/

--Insert and set default value
set serveroutput on
declare
app_id applications.app_id%type := 3013;
job_id applications.job_id%type := 2007;
user_id applications.user_id%type := 1008;
status applications.status%type := 'Pending';
begin
insert into applications values(app_id,job_id,user_id,status);
end;
/

--Row type
set serveroutput on
declare
job_row jobs%rowtype;
begin
select job_id, job_title, salary into job_row.job_id, job_row.job_title, job_row.salary from jobs where job_id = 2007;
dbms_output.put_line('job_id: '||job_row.job_id|| ' job_title: '||job_row.job_title || ' salary: '||job_row.salary);
end;
/

--Cursor and row count
set serveroutput on
declare
cursor job_cursor is select * from jobs;
job_row jobs%rowtype;
begin
open job_cursor;
fetch job_cursor into job_row.job_id, job_row.job_title, job_row.company_id, job_row.job_type, job_row.salary, job_row.education;
while job_cursor%found loop
dbms_output.put_line('job_id: '||job_row.job_id|| ' job_title: '||job_row.job_title || ' company_id: ' ||job_row.company_id|| ' job_type: ' ||job_row.job_type || ' salary: ' ||job_row.salary || ' education: ' ||job_row.education);
dbms_output.put_line('Row count: '|| job_cursor%rowcount);
fetch job_cursor into job_row.job_id,job_row.job_title,job_row.company_id,job_row.job_type,job_row.salary, job_row.education;
end loop;
close job_cursor;
end;
/

--FOR LOOP/WHILE LOOP/ARRAY with extend() function
set serveroutput on
declare
counter number;
job_title2 jobs.job_title%type;
TYPE TITLEARRAY IS VARRAY(10) OF jobs.job_title%type;
TITLE TITLEARRAY:=TITLEARRAY();
begin
counter:=1;
for x in 2001..2010
loop
select job_title into job_title2 from jobs where job_id=x;
TITLE.EXTEND();
TITLE(counter):=job_title2;
counter:=counter+1;
end loop;
counter:=1;
WHILE counter<=TITLE.COUNT
LOOP
DBMS_OUTPUT.PUT_LINE(TITLE(counter));
counter:=counter+1;
END LOOP;
end;
/

--ARRAY without extend() function
DECLARE
counter NUMBER := 1;
job_title2 jobs.job_title%TYPE;
TYPE TITLEARRAY IS VARRAY(10) OF jobs.job_title%TYPE;
TITLE TITLEARRAY:=TITLEARRAY('job 1', 'job 2', 'job 3', 'job 4', 'job 5', 'job 6', 'job 7', 'job 8', 'job 9', 'job 10');
BEGIN
counter := 1;
FOR x IN 2001..2010
LOOP
SELECT job_title INTO job_title2 FROM jobs WHERE job_id=x;
TITLE(counter) := job_title2;
counter := counter + 1;
END LOOP;
counter := 1;
WHILE counter <= TITLE.COUNT
LOOP
DBMS_OUTPUT.PUT_LINE(TITLE(counter));
counter := counter + 1;
END LOOP;
END;

--IF /ELSEIF /ELSE
DECLARE
counter NUMBER := 1;
job_title2 jobs.job_title%TYPE;
TYPE TITLEARRAY IS VARRAY(10) OF jobs.job_title%TYPE;
TITLE TITLEARRAY:=TITLEARRAY('job 1', 'job 2', 'job 3', 'job 4', 'job 5', 'job 6', 'job 7', 'job 8', 'job 9', 'job 10');
BEGIN
counter := 1;
FOR x IN 2001..2010
LOOP
SELECT job_title INTO job_title2 FROM jobs WHERE job_id=x;
if job_title2 = 'Software Developer'
then
dbms_output.put_line(job_title2||' is a '||'CSE or SWE Job');
elsif job_title2='Chip Designer'
then
dbms_output.put_line(job_title2||' is a '||'EEE job');
else
dbms_output.put_line(job_title2||' is a '||'other job');
end if;
END LOOP;
END;

--Procedure
CREATE OR REPLACE PROCEDURE proc(
var1 IN NUMBER,
var2 OUT VARCHAR2,
var3 IN OUT NUMBER
)
AS
t_show CHAR(30);
BEGIN
t_show := 'From procedure: ';
SELECT job_title INTO var2 FROM jobs WHERE job_id IN (SELECT job_id FROM applications WHERE app_id = var1);
var3 := var1 + 1;
DBMS_OUTPUT.PUT_LINE(t_show || var2 || ' code is ' || var1 || ' In out parameter: ' || var3);
END;
/
--main
set serveroutput on
declare
app_id applications.app_id%type := 3001;
job_title jobs.job_title%type;
extra number;
begin
proc(app_id, job_title, extra);
end;
/

--Function
set serveroutput on
create or replace function fun(var1 in varchar) return varchar AS
value jobs.job_title%type;
begin
select job_title into value from jobs where job_id = var1;
return value;
end;
/
--main
set serveroutput on
declare
value varchar(20);
begin
value := fun(2001);
dbms_output.put_line('function returns ' || value);
end;
/

--drop procedure and function
drop procedure proc;
drop function fun;
Binary file added Images/Schema-design.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 10 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Database Project of Roll No - 1907031
- ### Project Name: Online Job Portal Management <br>
- ### Student Name: Naimur Rahman <br>
- ### Roll No: 1907031 <br>
- ### Group: A2 <br>
- ### Year: 3rd <br>
- ### Semester: 1st <br>

# Schema Design
![Schema Design](Images/Schema-design.jpg)