## Creating database ```sql CREATE DATABASE Database_A3; USE Database_A3; ``` ## Creating tables and specify primary keys: ```sql CREATE TABLE Account(acc_no INT, branch_name VARCHAR(50), balance INT, PRIMARY KEY (acc_no)); CREATE TABLE Branch(branch_name VARCHAR(50), branch_city VARCHAR(50), assets INT, PRIMARY KEY (branch_name)); CREATE TABLE Customer (cust_name VARCHAR(50), cust_street VARCHAR(50), cust_city VARCHAR(50), PRIMARY KEY (cust_name)); CREATE TABLE Depositor (cust_name VARCHAR(50), acc_no INT); CREATE TABLE Loan (loan_no INT, branch_name VARCHAR(50), amount INT, PRIMARY KEY (loan_no)); CREATE TABLE Borrower (cust_name VARCHAR(50), loan_no INT); ``` ## Altering tables to specify foreign keys ```sql ALTER TABLE Account ADD FOREIGN KEY (branch_name) REFERENCES Branch(branch_name); ALTER TABLE Depositor ADD FOREIGN KEY (cust_name) REFERENCES Customer (cust_name); ALTER TABLE Depositor ADD FOREIGN KEY (acc_no) REFERENCES Account (acc_no); ALTER TABLE Loan ADD FOREIGN KEY (branch_name) REFERENCES Branch (branch_name); ALTER TABLE Borrower ADD FOREIGN KEY (cust_name) REFERENCES Customer (cust_name); ALTER TABLE Borrower ADD FOREIGN KEY (loan_no) REFERENCES Loan (loan_no); ``` ## Adding data ```sql INSERT INTO Branch (branch_name, branch_city, assets) VALUES ("Pune_Station", "Pune", 5000), ("Hadapsar", "Pune", 20000), ("Dhole_Patil", "Mumbai", 7500), ("Nagarwala", "Nandurbar", 3200); INSERT INTO Customer (cust_name, cust_street, cust_city) VALUES ("Kalas", "Airport Road", "Pune"), ("Mehul", "Shahdha", "Nandurbar"), ("Tanmay", "Porwal Road", "Pune"), ("Kshitij", "Hadapasar", "Pune"), ("Aditya", "Mira RD", "Mumbai"), ("Himanshu", "Smart City", "Nandurbar"); INSERT INTO Account (acc_no, branch_name, balance) VALUES (2501, "Dhole_Patil", 5000), (2511, "Pune_Station", 1500), (2521, "Hadapsar", 2000), (2512, "Nagarwala", 5000), (2531, "Pune_Station", 1000); INSERT INTO Loan (loan_no, branch_name, amount) VALUES (155, "Dhole_Patil", 500), (156, "Pune_Station", 250), (157, "Hadapsar", 600), (158, "Nagarwala", 1400), (159, "Pune_Station", 25000); INSERT INTO Borrower VALUES ("Kalas", 156), ("Mehul", 158), ("Tanmay", 155), ("Kshitij", 157), ("Aditya", 159), ("Himanshu", 158); INSERT INTO Depositor VALUES ("Kalas", 2511), ("Mehul", 2512), ("Tanmay", 2501), ("Kshitij", 2521), ("Aditya", 2531), ("Himanshu", 2512); ``` ## Queries ### Part 1 (Borrower): 1. Create a View1 to display List all customers in alphabetical order who have loan from Pune_Station branch ```sql CREATE VIEW View1 AS SELECT cust_name FROM Borrower INNER JOIN Loan ON Borrower.loan_no = Loan.loan_no WHERE branch_name = "Pune_Station" ORDER BY cust_name; SELECT * FROM View1; ``` 2. Create View2 on branch table by selecting any two columns and perform insert update delete operations. ```sql CREATE VIEW View2 AS SELECT branch_name, branch_city FROM Branch; SELECT * FROM View2; -- Insert operation INSERT INTO View2 (branch_name, branch_city) VALUES ('Yerwada', 'Pune'); SELECT * FROM View2; -- Update operation UPDATE View2 SET branch_name = 'Peachtree' WHERE branch_name = 'Yerwada'; SELECT * FROM View2; -- Delete operation DELETE FROM View2 WHERE branch_name = 'Peachtree'; SELECT * FROM View2; ``` 3. Create View3 on borrower and depositor table by selecting any one column from each table perform insert update delete operations. ```sql CREATE VIEW View3 AS SELECT Borrower.cust_name, Depositor.acc_no FROM Borrower JOIN Depositor ON Borrower.cust_name = Depositor.cust_name; SELECT * FROM View3; -- Insert operation // NEED TO FIX THIS INSERT INTO Customer (cust_name, cust_street, cust_city) VALUES ("Sandy", "Pedgaon", "Ahemadnagar"); INSERT INTO Borrower (cust_name, loan_no) VALUES ("Sandy", 160); INSERT INTO Depositor(cust_name, Acc_no) VALUES("Sandy", 2502); SELECT * FROM View3; -- Update operation UPDATE View3 SET acc_no = 102 WHERE cust_name = 'John_Doe'; SELECT * FROM View3; -- Delete operation DELETE FROM View3 WHERE cust_name = 'John_Doe'; SELECT * FROM View3; // ``` 4. Create Union of left and right joint for all customers who have an account or loan or both at bank ```sql SELECT DISTINCT Customer.cust_name FROM Customer LEFT JOIN Depositor ON Customer.cust_name = Depositor.cust_name LEFT JOIN Borrower ON Customer.cust_name = Borrower.cust_name WHERE Depositor.acc_no IS NOT NULL OR Borrower.loan_no IS NOT NULL; ``` 5. Display content of View1, View2, View3 ```sql SELECT * FROM View1; SELECT * FROM View2; SELECT * FROM View3; ``` 6. Create Simple and Unique index ```sql -- Simple Index CREATE INDEX cust_ind ON Customer (cust_city); -- Unique Index CREATE UNIQUE INDEX branch_ind ON Branch (branch_name); ``` 7. Display index Information ```sql SHOW INDEX FROM Customer; SHOW INDEX FROM Branch; ``` 8. Truncate table Customer ```sql DROP TABLE Depositor; DROP TABLE Borrower; TRUNCATE TABLE Customer; ``` ### Part 2: #### Create tables ```sql CREATE TABLE Companies(comp_id varchar(50), name varchar(50), cost int, year int); CREATE TABLE Orders(comp_id varchar(50), domain varchar(50), quantity int); ``` #### Insert values ```sql INSERT INTO Companies (comp_id, name, cost, year) VALUES ("C001", "ONGC", 2000, 2010), ("C002", "HPCL", 2500, 2012), ("C005", "IOCL", 1000, 2014), ("C006", "BHEL", 3000, 2015); INSERT INTO Orders (comp_id, domain, quantity) VALUES ("C001", "Oil", 109), ("C002", "Gas", 121), ("C005", "Telecom", 115); ``` #### Queries 1. Find names, costs, domains and quantities for companies using inner join. ```sql SELECT name, cost, domain, quantity FROM Companies INNER JOIN Orders on Companies.comp_id = Orders.comp_id; ``` 2. Find names, costs, domains and quantities for companies using left outer join. ```sql select name, cost, domain, quantity from Companies left outer join Orders on Companies.comp_id = Orders.comp_id; ``` 3. Find names, costs, domains and quantities for companies using right outer join. ```sql SELECT name, cost, domain, quantity FROM Companies RIGHT OUTER JOIN Orders ON Companies.comp_id = Orders.comp_id; ``` 4. Find names, costs, domains and quantities for companies using Union operator. ```sql SELECT name, cost FROM Companies UNION SELECT domain, quantity FROM Orders; ``` 5. Create View View1 by selecting both tables to show company name and quantities. ```sql CREATE VIEW view1 AS SELECT name, quantity FROM Companies JOIN Orders ON Companies.comp_id = Orders.comp_id; ``` 6. Create View2 on branch table by selecting any two columns and perform insert update delete operations. ```sql CREATE VIEW view2 AS SELECT name, cost FROM Companies; SELECT * FROM view2; -- Insert operation INSERT INTO view2 (name, cost) VALUES ("BCCC", 3100); SELECT * FROM view2; -- Update operation UPDATE view2 SET cost = 3500 WHERE name = "BCCC"; SELECT * FROM view2; -- Delete operation DELETE FROM view2 WHERE name = "BCCC"; SELECT * FROM view2; ``` 7. Display content of View1, View2. ```sql SELECT * from view1; SELECT * FROM view2; ``` ---