-- ========================= -- LABSHEET 1 -- DDL & DML COMMANDS -- ========================= CREATE DATABASE STUDENTDB; SHOW DATABASES; USE STUDENTDB; SELECT DATABASE(); CREATE TABLE STUDENT( SNUM INT PRIMARY KEY, SNAME VARCHAR(20) NOT NULL, MAJOR VARCHAR(5) NOT NULL, LEVEL CHAR(5), DOB DATE ); SHOW TABLES; DESC STUDENT; ALTER TABLE STUDENT ADD SEM INT DEFAULT 4; DESC STUDENT; ALTER TABLE STUDENT MODIFY MAJOR VARCHAR(20) NULL; DESC STUDENT; ALTER TABLE STUDENT MODIFY SNAME VARCHAR(20) UNIQUE; DESC STUDENT; ALTER TABLE STUDENT DROP COLUMN LEVEL; DESC STUDENT; TRUNCATE TABLE ENROLL1; DROP TABLE ENROLL1; INSERT INTO STUDENT VALUES (1001,'CHETHAN','CSE','2000-11-03',4), (1002,'CHETHAN CHAVAN','CSE','2000-11-03',4); SELECT * FROM STUDENT; UPDATE STUDENT SET MAJOR='ISE'; SELECT * FROM STUDENT; UPDATE STUDENT SET MAJOR='ECE' WHERE SNUM=1001; CREATE DATABASE BankingDB; USE BankingDB; CREATE TABLE Customer ( customer_id INT PRIMARY KEY, customer_name VARCHAR(30), city VARCHAR(20) ); CREATE TABLE Account ( account_no INT PRIMARY KEY, customer_id INT, balance INT ); DESC Customer; ALTER TABLE Customer ADD phone_no VARCHAR(10); ALTER TABLE Customer MODIFY city VARCHAR(30); ALTER TABLE Customer DROP COLUMN phone_no; RENAME TABLE Customer TO Customer_Details; INSERT INTO Customer VALUES (101, 'Ramesh', 'Chennai'), (102, 'Suresh', 'Bangalore'), (103, 'Mahesh', 'Hyderabad'); INSERT INTO Account VALUES (5001, 101, 45000), (5002, 102, 30000), (5003, 103, 55000); SELECT * FROM Customer; SELECT * FROM Account; UPDATE Customer SET city = 'Mumbai' WHERE customer_id = 101; UPDATE Customer SET city = 'Chennai' WHERE city = 'Madras'; UPDATE Account SET balance = 60000 WHERE account_no = 5001; DELETE FROM Customer WHERE customer_id = 103; DELETE FROM Account WHERE balance < 30000; DELETE FROM Customer; -- ========================= -- LABSHEET 2 -- CONSTRAINTS & OPERATORS -- ========================= CREATE DATABASE BANKINGDB; USE BANKINGDB; CREATE TABLE CUSTOMER1 ( CustomerID INT PRIMARY KEY, CustomerName VARCHAR(50) NOT NULL, Email VARCHAR(50) UNIQUE, Phone VARCHAR(15) UNIQUE ); CREATE TABLE ACCOUNT1 ( AccountNo INT PRIMARY KEY, CustomerID INT, AccountType VARCHAR(20) NOT NULL, Balance DECIMAL(10,2) NOT NULL, FOREIGN KEY (CustomerID) REFERENCES CUSTOMER1(CustomerID) ); CREATE TABLE TRANSACTION_DETAILS ( TransactionID INT PRIMARY KEY, AccountNo INT, Amount DECIMAL(10,2) NOT NULL, TransactionType VARCHAR(20), FOREIGN KEY (AccountNo) REFERENCES ACCOUNT1(AccountNo) ); INSERT INTO CUSTOMER1 VALUES (1,'Ravi','ravi@gmail.com','9876543210'), (2,'Anita','anita@gmail.com','9123456780'); INSERT INTO ACCOUNT1 VALUES (101,1,'Savings',50000), (102,2,'Current',75000); INSERT INTO TRANSACTION_DETAILS VALUES (1001,101,5000,'Deposit'), (1002,102,3000,'Withdrawal'); SELECT * FROM ACCOUNT1 WHERE AccountType = 'Savings'; SELECT * FROM ACCOUNT1 WHERE Balance > 60000; SELECT * FROM TRANSACTION_DETAILS WHERE Amount < 4000; SELECT * FROM ACCOUNT1 WHERE AccountType='Savings' AND Balance > 40000; SELECT * FROM TRANSACTION_DETAILS WHERE TransactionType='Deposit' OR Amount > 4000; SELECT * FROM ACCOUNT1 WHERE NOT AccountType='Savings'; SELECT * FROM CUSTOMER1 WHERE CustomerName LIKE 'R%'; SELECT * FROM ACCOUNT1 WHERE Balance BETWEEN 40000 AND 80000; SELECT * FROM TRANSACTION_DETAILS WHERE TransactionType IS NULL; SELECT * FROM ACCOUNT1 WHERE AccountType IN ('Savings','Current'); SELECT * FROM TRANSACTION_DETAILS WHERE TransactionType NOT IN ('Deposit'); INSERT INTO CUSTOMER1 VALUES (1,'Kumar','kumar@gmail.com','9000000000'); INSERT INTO ACCOUNT1 VALUES (103,1,NULL,30000); INSERT INTO CUSTOMER1 VALUES (3,'Meena','ravi@gmail.com','9888888888'); INSERT INTO ACCOUNT1 VALUES (104,5,'Savings',20000); INSERT INTO TRANSACTION_DETAILS VALUES (1003,999,1000,'Deposit'); INSERT INTO CUSTOMER1 VALUES (3,'Kiran','kiran@gmail.com','9555555555'); INSERT INTO ACCOUNT1 VALUES (103,3,'Savings',40000); INSERT INTO TRANSACTION_DETAILS VALUES (1003,103,7000,'Deposit'); -- ========================= -- LABSHEET 3 -- GROUP BY & AGGREGATE FUNCTIONS -- ========================= SELECT AccountType, COUNT(AccountNo) AS TotalAccounts FROM ACCOUNT GROUP BY AccountType; SELECT AccountType, SUM(Balance) AS TotalBalance FROM ACCOUNT GROUP BY AccountType; SELECT AccountType, AVG(Balance) AS AverageBalance FROM ACCOUNT GROUP BY AccountType; SELECT AccountType, SUM(Balance) AS TotalBalance FROM ACCOUNT GROUP BY AccountType ORDER BY TotalBalance DESC; SELECT AccountNo, COUNT(TransactionID) AS TotalTransactions FROM TRANSACTION_DETAILS GROUP BY AccountNo; SELECT AccountNo, SUM(Amount) AS TotalAmount FROM TRANSACTION_DETAILS GROUP BY AccountNo ORDER BY TotalAmount DESC; SELECT AccountNo, SUM(Amount) AS TotalAmount FROM TRANSACTION_DETAILS GROUP BY AccountNo HAVING SUM(Amount) > 4000; SELECT TransactionType, COUNT(*) AS Count FROM TRANSACTION_DETAILS GROUP BY TransactionType ORDER BY Count DESC; SELECT AccountType, MAX(Balance) AS MaxBalance, MIN(Balance) AS MinBalance FROM ACCOUNT GROUP BY AccountType; CREATE DATABASE LIBRARYDB; USE LIBRARYDB; CREATE TABLE BOOK ( BookID INT PRIMARY KEY, Title VARCHAR(50) NOT NULL, Author VARCHAR(50), Category VARCHAR(30), Price INT, Quantity INT ); INSERT INTO BOOK VALUES (1,'DBMS','Navathe','Computer',450,10), (2,'OS','Silberschatz','Computer',500,8), (3,'Python','Guido','Programming',600,5), (4,'Java','James','Programming',550,6), (5,'Maths','Sharma','Science',300,12), (6,'Physics','HC Verma','Science',400,7); SELECT * FROM BOOK; SELECT Category, COUNT(BookID) AS TotalBooks FROM BOOK GROUP BY Category; SELECT Category, SUM(Quantity) AS TotalQuantity FROM BOOK GROUP BY Category; SELECT Category, AVG(Price) AS AveragePrice FROM BOOK GROUP BY Category; SELECT MAX(Price) AS HighestPrice, MIN(Price) AS LowestPrice FROM BOOK; SELECT Category, SUM(Quantity) AS TotalQuantity FROM BOOK GROUP BY Category HAVING SUM(Quantity) > 15; SELECT * FROM BOOK ORDER BY Price ASC; SELECT * FROM BOOK ORDER BY Price DESC; SELECT Category, AVG(Price) AS AvgPrice FROM BOOK GROUP BY Category ORDER BY AvgPrice DESC; -- ========================= -- LABSHEET 4 -- SET OPERATIONS & JOINS -- ========================= CREATE DATABASE AIRLINEDB; USE AIRLINEDB; CREATE TABLE FLIGHT ( FlightID INT PRIMARY KEY, FlightName VARCHAR(30), Source VARCHAR(30), Destination VARCHAR(30) ); CREATE TABLE PASSENGER ( PassengerID INT PRIMARY KEY, PassengerName VARCHAR(30), FlightID INT, FOREIGN KEY(FlightID) REFERENCES FLIGHT(FlightID) ); CREATE TABLE BOOKING ( BookingID INT PRIMARY KEY, PassengerID INT, FlightID INT, FOREIGN KEY(PassengerID) REFERENCES PASSENGER(PassengerID), FOREIGN KEY(FlightID) REFERENCES FLIGHT(FlightID) ); INSERT INTO FLIGHT VALUES (101,'Indigo','Bangalore','Delhi'), (102,'AirIndia','Chennai','Mumbai'), (103,'Vistara','Delhi','Bangalore'), (104,'SpiceJet','Mumbai','Chennai'); INSERT INTO PASSENGER VALUES (1,'Ravi',101), (2,'Anita',102), (3,'Kiran',103), (4,'Meena',NULL); INSERT INTO BOOKING VALUES (1001,1,101), (1002,2,102), (1003,3,103); SELECT PassengerName AS Name FROM PASSENGER UNION SELECT FlightName FROM FLIGHT; SELECT Source FROM FLIGHT UNION ALL SELECT Destination FROM FLIGHT; SELECT FlightID FROM PASSENGER WHERE FlightID IN (SELECT FlightID FROM BOOKING); SELECT PassengerID FROM PASSENGER WHERE PassengerID NOT IN (SELECT PassengerID FROM BOOKING); SELECT PassengerName, FlightName, Source, Destination FROM PASSENGER INNER JOIN FLIGHT ON PASSENGER.FlightID = FLIGHT.FlightID; SELECT PassengerName, FlightName FROM PASSENGER LEFT JOIN FLIGHT ON PASSENGER.FlightID = FLIGHT.FlightID; SELECT PassengerName, FlightName FROM PASSENGER RIGHT JOIN FLIGHT ON PASSENGER.FlightID = FLIGHT.FlightID; SELECT PassengerName, FlightName FROM PASSENGER LEFT JOIN FLIGHT ON PASSENGER.FlightID = FLIGHT.FlightID UNION SELECT PassengerName, FlightName FROM PASSENGER RIGHT JOIN FLIGHT ON PASSENGER.FlightID = FLIGHT.FlightID; SELECT PassengerName, FlightName FROM PASSENGER CROSS JOIN FLIGHT; SELECT PassengerName, FlightName FROM PASSENGER NATURAL JOIN FLIGHT; -- ========================= -- LABSHEET 5 -- VIEWS & PROCEDURES -- ========================= USE studentdb; CREATE TABLE STUDENT( SNUM INT PRIMARY KEY, SNAME VARCHAR(20) NOT NULL, MAJOR VARCHAR(5) NOT NULL, DOB DATE, SEM INT DEFAULT 4 ); CREATE VIEW studentdetails AS SELECT * FROM student; SELECT * FROM studentdetails; SELECT snum, sname FROM studentdetails WHERE major='cse'; CREATE VIEW studentcount AS SELECT major, COUNT(*) AS total_students FROM student GROUP BY major; SELECT * FROM studentcount; DROP VIEW studentdetails; DROP VIEW studentcount; DELIMITER // CREATE PROCEDURE updateSalary(IN dept_no INT) BEGIN UPDATE deptsal SET totalsalary = ( SELECT SUM(salary) FROM employee WHERE dno = dept_no ) WHERE dnumber = dept_no; END // DELIMITER ; CALL updateSalary(1); CALL updateSalary(2); CALL updateSalary(3); SELECT * FROM deptsal; SHOW PROCEDURE STATUS; UPDATE deptsal SET totalsalary = 0; DELIMITER // CREATE PROCEDURE raise_salary() BEGIN DECLARE done INT DEFAULT FALSE; DECLARE emp_id INT; DECLARE emp_salary INT; DECLARE emp_cursor CURSOR FOR SELECT id, salary FROM employee; OPEN emp_cursor; read_loop: LOOP FETCH emp_cursor INTO emp_id, emp_salary; IF done THEN LEAVE read_loop; END IF; UPDATE employee SET salary = salary + 1000 WHERE id = emp_id; END LOOP; CLOSE emp_cursor; END // DELIMITER ; -- ========================= -- LABSHEET 6 -- FUNCTIONS & TRIGGERS -- ========================= DELIMITER // CREATE FUNCTION square_num(x INT) RETURNS INT DETERMINISTIC BEGIN RETURN x*x; END // DELIMITER ; SELECT square_num(5); DELIMITER // CREATE FUNCTION total_salary(basic INT, bonus INT) RETURNS INT DETERMINISTIC BEGIN RETURN basic + bonus; END // DELIMITER ; SELECT total_salary(50000,5000); CREATE TRIGGER update_salary_insert AFTER INSERT ON employee FOR EACH ROW UPDATE department SET totalsalary = totalsalary + NEW.salary WHERE dnumber = NEW.dno; CREATE TRIGGER update_salary_update AFTER UPDATE ON employee FOR EACH ROW UPDATE department SET totalsalary = totalsalary - OLD.salary + NEW.salary WHERE dnumber = NEW.dno; CREATE TRIGGER update_salary_delete AFTER DELETE ON employee FOR EACH ROW UPDATE department SET totalsalary = totalsalary - OLD.salary WHERE dnumber = OLD.dno; SHOW TRIGGERS; DROP TRIGGER update_salary_insert; DROP TRIGGER update_salary_update; DROP TRIGGER update_salary_delete;