DBMS Assignment 1
Main Question - 1
Creating the tables
content_copy
create table branch(branch_name varchar(40) primary key,
branch_city varchar(40),
assets int
);
content_copy
create table account(account_number int primary key,
balance int,
branch_name varchar(40),
foreign key(branch_name) references branch
);
content_copy
create table customer(customer_name varchar(40) primary key,
customer_street varchar(40),
customer_city varchar(40)
);
content_copy
create table depositor(customer_name varchar(40),
account_number int,
foreign key(customer_name) references customer,
foreign key(account_number) references account
);
content_copy
create table loan(loan_number int primary key,
branch_name varchar(40),
amount int,
foreign key(branch_name) references branch
);
content_copy
create table borrower(customer_name varchar(40),
loan_number int,
foreign key(customer_name) references customer,
foreign key(loan_number) references loan
);
1.
content_copy
alter table branch modify branch_name varchar(50);
alter table account modify branch_name varchar(50);
alter table loan modify branch_name varchar(50);
2.
content_copy
alter table account add check (balance > 0);
3.
content_copy
alter table loan add loan_taken_date date default null;
4.
content_copy
alter table loan modify loan_taken_date default sysdate;
5.
content_copy
select constraint_name, constraint_type, search_condition from user_constraints where table_name='BORROWER';
alter table borrower drop constraint SYS_C0050963531;
6.
content_copy
alter table borrower rename column loan_number to loan_id;
7.
content_copy
alter table customer add aadhar_id int unique;
8.
content_copy
alter table borrower modify loan_id int not null;
9.
content_copy
There is no primary key constraint in the borrower table
10.
content_copy
alter table account rename to bank_account;
11.
content_copy
select customer_name from customer
where customer.customer_city = (
select branch_city from branch
where branch_name = (
select branch_name from bank_account
where account_number = (
select account_number from depositor
where customer_name = customer.customer_name
)
)
);
12.
content_copy
select * from customer
where customer_name not in (
select distinct(customer_name) from borrower
);
13.
content_copy
select * from customer
where customer_name in (
select customer_name from borrower
group by customer_name having count(customer_name) > 3
);
14.
content_copy
select c1.customer_name, c2.customer_name from customer c1, customer c2
where c1.customer_city = c2.customer_city and c1.customer_name <> c2.customer_name;
15.
content_copy
select * from customer
where length(customer_name) = (select max(length(customer_name)) from customer);
16.
content_copy
select * from borrower
where loan_id in (
select loan_number from loan
where branch_name in (
select branch_name from branch
where branch_city = 'ahmedabad'
)
);
17.
content_copy
select * from borrower
where loan_id in (
select loan_number from loan
where amount > 5000000
);
18.
content_copy
select sum(assets) from branch;
19.
content_copy
select * from customer
where customer_name in (
select customer_name from depositor
);
20.
content_copy
select customer.customer_name, customer.customer_street, depositor.account_number
from customer left outer join depositor
on customer.customer_name = depositor.customer_name;
21.
content_copy
select depositor.customer_name, bank_account.account_number, bank_account.balance
from bank_account right outer join depositor
on depositor.account_number = bank_account.account_number;
22.
content_copy
select account_number from bank_account
where balance = (
select min(balance) from bank_account
);
23.
content_copy
select account_number from bank_account
where balance = (
select max(balance) from bank_account
where balance < (
select max(balance) from bank_account
)
);
24.
content_copy
select branch.branch_name, branch_city, account_number, customer_name, customer_city
from branch, bank_account, customer
order by customer_city asc, branch_city desc;
25.
content_copy
select customer_city, count(*) from customer group by customer_city;
26.
content_copy
select branch_city, sum(assets) from branch group by branch_city order by sum(assets) desc;
27.
content_copy
select distinct customer_name, sum(amount)/count(customer_name) from
loan right outer join borrower on borrower.loan_id = loan.loan_number group by (customer_name);
28.
content_copy
select * from customer
where customer_name in (
select distinct (customer_name) from borrower
where customer_name in (
select customer_name from depositor
)
);
29.
content_copy
select * from customer
inner join borrower on customer.customer_name = borrower.customer_name
inner join loan on loan.loan_number = borrower.loan_id
inner join branch on loan.branch_name = branch.branch_name;
30.
content_copy
select branch_name from branch
union
select branch_name from bank_account;
Main Question - 2
Creating Tables
content_copy
create table department(dept_name varchar(40),
building varchar(40),
budget int,
constraint department_PK_dept_name primary key(dept_name)
);
content_copy
create table student(ID varchar(40),
name varchar(40),
dept_name varchar(40),
tot_cred float,
constraint student_PK_ID primary key(ID),
constraint student_FK_dept_name foreign key (dept_name) references department
);
content_copy
create table course(course_id varchar(40),
title varchar(40),
dept_name varchar(40),
credits float,
constraint course_PK_course_id primary key (course_id),
constraint course_FK_dept_name foreign key (dept_name) references department
);
content_copy
create table instructor(ID varchar(40),
name varchar(40),
dept_name varchar(40),
salary int,
constraint instructor_PK_ID primary key (ID),
constraint instructor_FK_dept_name foreign key (dept_name) references department
);
content_copy
create table advisor(s_id varchar(40),
i_id varchar(40),
constraint advisor_PK_s_id primary key (s_id),
constraint advisor_FK_s_id foreign key (s_id) references student,
constraint advisor_FK_i_id foreign key (i_id) references instructor
);
content_copy
create table prereq(course_id varchar(40),
prereq_id varchar(40),
constraint prereq_CK primary key(course_id, prereq_id),
constraint prereq_FK_course_id foreign key (course_id) references course,
constraint prereq_FK_prereq_id foreign key (prereq_id) references course
);
content_copy
create table classroom(building varchar(40),
room_no varchar(40),
capacity int,
constraint classroom_CK primary key (building, room_no)
);
content_copy
create table time_slot(time_slot_id varchar(40),
day varchar(40),
start_time timestamp,
end_time timestamp,
constraint time_slot_PK_time_slot_id primary key(time_slot_id)
);
content_copy
create table section(course_id varchar(40),
sec_id varchar(40),
semester int,
year int,
building varchar(40),
room_no varchar(40),
time_slot_id varchar(40),
constraint section_CK primary key(course_id, sec_id, semester, year),
constraint section_CFK_classroom foreign key(building, room_no) references classroom,
constraint section_FK_time_slot_it foreign key(time_slot_id) references time_slot
);
content_copy
create table teaches(ID varchar(40),
course_id varchar(40),
sec_id varchar(40),
semester int,
year int,
constraint teaches_FK_ID foreign key(ID) references instructor,
constraint teaches_CFK_section foreign key(course_id, sec_id, semester, year) references section,
constraint teaches_CK primary key(ID, course_id, sec_id, semester, year)
);
content_copy
create table takes(ID varchar(40),
course_id varchar(40),
sec_id varchar(40),
semester int,
year int,
grade varchar(40),
constraint takes_FK_ID foreign key(ID) references student,
constraint takes_CFK_section foreign key(course_id, sec_id, semester, year) references section,
constraint takes_CK primary key(ID, course_id, sec_id, semester, year)
);
1.
content_copy
alter table course add check (credits >= 1.5 and credits <= 4.5);
content_copy
alter table department add check (budget <= 10000);
content_copy
alter table instructor add check (salary > 0);
2.
content_copy
alter table course modify credits default 1.5;
content_copy
alter table classroom modify capacity default 120;
content_copy
alter table section modify year default extract(year from sysdate);
3.
content_copy
alter table student add constraint student_UNIQUE_dept_name unique(dept_name);
content_copy
alter table instructor add constraint instructor_UNIQUE_dept_name unique(dept_name);
4.
content_copy
alter table classroom modify capacity not null;
content_copy
alter table teaches modify year not null;
5.
content_copy
insert into course values('CS-001', 'Weekly Seminar', 'Computer Science', 2);
6.
content_copy
insert into section values('CS-001', '1', 'Autumn', 2009, null, null, null);
7.
content_copy
insert into takes
select ID, 'CS-001', '1', 'Autumn', 2009, null
from student
where dept_name = 'Computer Science';
8.
content_copy
delete from takes
where sec_id = '1' and ID in (
select ID from student where name='Chiral'
);
9.
content_copy
delete from takes
where course_id in (
select course_id from course where lower(title) like '%database'
);
10.
content_copy
alter table prereq drop constraint prereq_FK_course_id;
alter table prereq drop constraint prereq_FK_prereq_id;
11.
content_copy
alter table prereq drop constraint prereq_CK;
12.
content_copy
alter table student rename column name to std_name;
13.
content_copy
alter table instructor drop constraint instructor_UNIQUE_dept_name;
14.
content_copy
select constraint_name, constraint_type, search_condition from user_constraints where table_name='CLASSROOM';
alter table classroom drop constraint SYS_C0050977229;