Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Database Practical

Download as pdf or txt
Download as pdf or txt
You are on page 1of 12

A) Student(Stud_no : integer, Stud_name: string, year int ,Dept: string, gender:

char, DOB: date)


Book_(book_no: integer, book_name:string, author: string, price: float)
lss_rec_(iss_no:integer, Stud_no: integer, book_no: integer, iss_date: date)

Create tables with at least 4 constraints and insert values.


CREATE TABLE Student (
Stud_no INT PRIMARY KEY,
Stud_name VARCHAR(255) NOT NULL,
year INT CHECK (year >= 1 AND year <= 4),
Dept VARCHAR(50) NOT NULL,
gender CHAR(1) CHECK (gender IN ('M', 'F')),
DOB DATE,
CONSTRAINT chk_dob CHECK (DOB <= CURRENT_DATE),
CONSTRAINT chk_dept CHECK (Dept IN ('CSE', 'ECE',
'ME', 'IT')),
CONSTRAINT unq_stud_name_dept UNIQUE (Stud_name,
Dept)
);

INSERT INTO Student VALUES


(1, 'NARESH', 3, 'IT', 'M', '2000-01-15'),
(2, 'Naresh', 2, 'IT', 'M', '2001-05-22'),
(3, 'Jessie', 4, 'ME', 'F', '1999-11-10');

List the names of all boys

SELECT Stud_name
FROM Student
WHERE gender = 'M';

List the students department-wise

SELECT DISTINCT Dept, COUNT(*)


FROM Student
GROUP BY Dept;

List the details of students who borrowed more than 2 books

SELECT Student.*
FROM Student, lss_rec_
WHERE Student.Stud_no = lss_rec_.Stud_no
GROUP BY Student.Stud_no
HAVING COUNT(lss_rec_.iss_no) > 2;

List the books issued in the month of July 2023

SELECT Book_.*
FROM Book_, lss_rec_
WHERE Book_.book_no = lss_rec_.book_no
AND MONTH(lss_rec_.iss_date) = 7
AND YEAR(lss_rec_.iss_date) = 2023;

Create a view to display the book name and price

CREATE VIEW BookDetails AS


SELECT book_name, price
FROM Book_;

Retrieve the books issued to Krishna

SELECT Book_.*
FROM Book_, lss_rec_, Student
WHERE Book_.book_no = lss_rec_.book_no
AND lss_rec_.Stud_no = Student.Stud_no
AND Student.Stud_name = 'Krishna';

Create a trigger to log every new book insertion

CREATE TRIGGER log_new_book_insert


AFTER INSERT ON Book_
FOR EACH ROW
INSERT INTO BookLog (book_no, book_name, author,
price, insertion_date)
VALUES (NEW.book_no, NEW.book_name, NEW.author,
NEW.price, NOW());

Write a procedure to fetch the book details, given a book number

CREATE PROCEDURE GetBookDetails(IN book_number INT)


BEGIN
SELECT * FROM Book_ WHERE book_no = book_number;
END;
B) Emplyoee (emp_id,F_name, l_name, email,mobile, DOJ, salary, mgr_id,
job_id,dept_id)
Department(dept_id, dept_name, mgr_id)
Job_history(emp_id, start_date, end_date,dept_id,job_id)

List the employees whose last name contains “kumar”

SELECT *
FROM Employee
WHERE l_name LIKE '%kumar%';

List the ID and names of employees who joined after June 1, 2018

SELECT emp_id, F_name + ' ' + l_name


FROM Employee
WHERE DOJ > '2018-06-01';

List the employees who earn a salary more than a the minimum salary

SELECT *
FROM Employee
WHERE salary > (SELECT MIN(salary) FROM Employee);

List the names of managers

SELECT DISTINCT F_name + ' ' + l_name


FROM Employee
WHERE emp_id IN (SELECT DISTINCT mgr_id FROM
Department);

Display the number of employees in each department

SELECT dept_id, COUNT(*)


FROM Employee
GROUP BY dept_id;

List the managers who have more than 2 employees reporting them

SELECT mgr_id, COUNT(*)


FROM Employee
WHERE mgr_id IS NOT NULL
GROUP BY mgr_id
HAVING COUNT(*) > 2;
Write a procedure to retrieve the job history of a given Employee ID

CREATE PROCEDURE GetJobHistory(IN emp_id INT)


BEGIN
SELECT * FROM Job_history WHERE emp_id = emp_id;
END;

Create an index for the salary field of employee

CREATE INDEX idx_salary ON Employee(salary);

C) Customer(cust_no: integer,cust_name: string, DOB date, Gender char)


Cassette(cass_no:integer, cass_name:string, Language: String)
Iss_rec(iss_no: integer, iss_date: date, cust_no: integer, cass_no: integer)

List the details of customers whose names starts with ‘A’


SELECT *
FROM Customer
WHERE cust_name LIKE 'A%';

List the cassette numbers issued to “Rani”

SELECT Iss_rec.iss_no, Iss_rec.cust_no,


Iss_rec.cass_no, Cassette.cass_name,
Cassette.Language
FROM Iss_rec, Cassette, Customer
WHERE Iss_rec.cust_no = Customer.cust_no
AND Iss_rec.cass_no = Cassette.cass_no
AND Customer.cust_name = 'Rani';

List the cassettes issued between January and February, 2022

SELECT Cassette.*
FROM Iss_rec, Cassette
WHERE Iss_rec.cass_no = Cassette.cass_no
AND Iss_rec.iss_date BETWEEN '2022-01-01' AND
'2022-02-29';

List the details of customers who has not borrowed any cassette

SELECT *
FROM Customer
WHERE cust_no NOT IN (SELECT cust_no FROM Iss_rec);

Write a procedure to display the details of cassettes in ‘Telugu’ language

CREATE PROCEDURE DisplayTeluguCassettes()


BEGIN
SELECT *
FROM Cassette
WHERE Language = 'Telugu';
END;

Create a view ADULT with the details of customers who born after 2004

CREATE VIEW ADULT AS


SELECT *
FROM Customer
WHERE YEAR(DOB) > 2004;
Create a trigger to log every new customer

CREATE TRIGGER log_new_customer_insert


AFTER INSERT ON Customer
FOR EACH ROW
INSERT INTO CustomerLog (cust_no, cust_name, DOB,
Gender, insertion_date)
VALUES (NEW.cust_no, NEW.cust_name, NEW.DOB,
NEW.Gender, NOW());

D) Department(dep_id int,name string )


Employee(id int,name string ,designation string , grade int, DOJ date, salary
decimal, dep_id int )
Project (proj_id int, emp_id int, hours int)

List the employees whose designation contains “Assistant”

SELECT *
FROM Employee
WHERE designation LIKE '%Assistant%';

List the details of employees who earn the maximum salary

SELECT *
FROM Employee
WHERE salary = (SELECT MAX(salary) FROM Employee);
Display the details of employees who work in more than 2 projects

SELECT E.*
FROM Employee E, Project P
WHERE E.id = P.emp_id
GROUP BY E.id
HAVING COUNT(P.proj_id) > 2;

Increase the salary of each employee by 10%

UPDATE Employee
SET salary = salary * 1.1;

Write a query to calculate the years of experience of each employee.

SELECT id, (YEAR(NOW()) - YEAR(DOJ))


FROM Employee;

Write a procedure to display the details of employees who work in a given


department number

CREATE PROCEDURE DisplayEmployeesInDepartment(IN


dept_number INT)
BEGIN
SELECT *
FROM Employee
WHERE dep_id = dept_number;
END;

Create a view SIMPLE_EMP to display the Employee_id, Department_name,


Salary

CREATE VIEW SIMPLE_EMP AS


SELECT E.id, D.name, E.salary
FROM Employee E, Department D
WHERE E.dep_id = D.dep_id;

Create a trigger to log deletion of an employee


CREATE TRIGGER log_employee_deletion
AFTER DELETE ON Employee
FOR EACH ROW
INSERT INTO EmployeeDeletionLog (id, name,
deleted_date)
VALUES (OLD.id, OLD.name, NOW());

E) Movie(movie_id int ,title string ,date_of_release date, language string,


genre_id int)
Rating (movie_id int, reviewer id, stars int)
Reviewer(id int,name string) Genre(id int, type string )

List the movie details released in the year 1950

SELECT *
FROM Movie
WHERE YEAR(date_of_release) = 1950;
List the “Comedy” movies in Tamil language

SELECT movie_id, title, language


FROM Movie, Genre
WHERE Movie.genre_id = Genre.id
AND Genre.type = 'Comedy'
AND language = 'Tamil';

Display the count of movie in each genre.

SELECT Genre.type, COUNT(*)


WHERE Movie.genre_id = Genre.id
GROUP BY Genre.type;

List the movie ids that are rated 3 and above by “Ajay”

SELECT R.movie_id
FROM Rating R, Reviewer RV
WHERE R.reviewer_id = RV.id
AND RV.name = 'Ajay'
AND R.stars >= 3;

List the movie titles categorized as “Thriller”

SELECT title
FROM Movie, Genre
WHERE Movie.genre_id = Genre.id
AND Genre.type = 'Thriller';

Create a view to store movie name, genre name and language.

CREATE VIEW MovieDetails AS


SELECT M.title, G.type, M.language
FROM Movie M, Genre G
WHERE M.genre_id = G.id;

Write a procedure to list the movies reviewed by a given reviewer_id

CREATE PROCEDURE ListMoviesReviewedByReviewer(IN


reviewer_id INT)
BEGIN
SELECT M.title
FROM Movie M, Rating R
WHERE M.movie_id = R.movie_id
AND R.reviewer_id = reviewer_id;
END;

Write a trigger to log the insertion in Reviewer table

CREATE TRIGGER log_reviewer_insert


AFTER INSERT ON Reviewer
FOR EACH ROW
INSERT INTO ReviewerLog (id, name, insertion_date)
VALUES (NEW.id, NEW.name, NOW());

F) Salesman (SID int, name: string, city string, commission float)


Customer (CID int, name string, city string, SID int)
Orders(OrderNo int, Pur_amount float, order_date date, CID int,SID int)
List the customers in Chennai.

SELECT *
FROM Customer
WHERE city = 'Chennai';

Increase the commission of the salesman in city ‘Kanchi’ by 2%

UPDATE Salesman
SET commission = commission * 1.02
WHERE city = 'Kanchi';
Find all the customers along with the salesperson who works for them.

SELECT C.*, S.name


FROM Customer C, Salesman S
WHERE C.SID = S.SID;

Find the sales people who has not done any order

SELECT S.*
FROM Salesman S
WHERE S.SID NOT IN (SELECT DISTINCT SID FROM Orders
WHERE SID IS NOT NULL);

List the orders made between 25th December 2021 and 1st Jan 2022

SELECT *
FROM Orders
WHERE order_date BETWEEN '2021-12-25' AND '2022-01-
01';

Find those orders where order amount exists between 500 and 2000. Return
ord_no, purch_amt, cust_name, city.

SELECT O.OrderNo, O.Pur_amount, C.name, C.city


FROM Orders O, Customer C
WHERE O.CID = C.CID
AND O.Pur_amount BETWEEN 500 AND 2000;

Write a procedure to display the orders made on a given date

CREATE PROCEDURE DisplayOrdersOnDate(IN given_date


DATE)
BEGIN
SELECT *
FROM Orders
WHERE order_date = given_date;
END;

Write a trigger to log any customer deletion

CREATE TRIGGER log_customer_deletion


AFTER DELETE ON Customer
FOR EACH ROW
INSERT INTO CustomerDeletionLog (CID, name,
deleted_date)
VALUES (OLD.CID, OLD.name, NOW());

G) Salesman (SID int, name: string, city string, commission float, DOJ date)
Customer (CID int, name string, city string, SID int)
Orders(OrderNo int, Pur_amount float, order_date date, CID int, SID int)

List the salesman who joined after 1-1-2023

SELECT *FROM Salesman


WHERE DOJ > '2023-01-01';

Increase the commission of salesmen in “Vellore” by 5%

UPDATE Salesman
SET commission = commission * 1.05
WHERE city = 'Vellore';

Display the details of salesmen in Chennai or Vellore or Kanchi.

SELECT *FROM Salesman


WHERE city IN ('Chennai', 'Vellore', 'Kanchi');

Create a view to list the salesman and their customers

CREATE VIEW SalesmanCustomers AS


SELECT S.*, C.*
FROM Salesman S, Customer C
WHERE S.SID = C.SID;

List the orders made at “Chennai” exceeding 100000 in October 2023

SELECT O.*
FROM Orders O, Customer C, Salesman S
WHERE O.CID = C.CID
AND O.SID = S.SID
AND C.city = 'Chennai'
AND O.Pur_amount > 100000
AND MONTH(O.order_date) = 10
AND YEAR(O.order_date) = 2023;
List the salesman who do not have any customer

SELECT S.*
FROM Salesman S
WHERE S.SID NOT IN (SELECT SID FROM Customer WHERE
SID IS NOT NULL);

Write a procedure to fetch the order details for a given Order_id

CREATE PROCEDURE FetchOrderDetails(IN order_id INT)


BEGIN
SELECT *
FROM Orders
WHERE OrderNo = order_id;
END;

Write a trigger to log deletion of a salesman

CREATE TRIGGER log_salesman_deletion


AFTER DELETE ON Salesman
FOR EACH ROW
INSERT INTO SalesmanDeletionLog (SID, name,
deleted_date)
VALUES (OLD.SID, OLD.name, NOW());

H) Emplyoee (emp_id int,F_name string , l_name string , email string , mobile


string, DOJ date, salary float, mgr_id int, job_id int ,dept_id int)
Department(dept_id, dept_name, mgr_id)
Job_history(emp_id , start_date, end_date,dept_id,job_id)

List the employees who joined this year

SELECT *
FROM Employee
WHERE YEAR(DOJ) = YEAR(NOW());

List the employees with their manager’s names

SELECT E.*, M.F_name, M.l_name


FROM Employee E, Employee M
WHERE E.mgr_id = M.emp_id;

List the employees who earn a salary equal to the average salary
SELECT *FROM Employee
WHERE salary = (SELECT AVG(salary) FROM Employee);

Count the number of employees in each department

SELECT dept_id, COUNT(*)


FROM Employee
GROUP BY dept_id;

List the employees who work in same job_id for more than an year

SELECT E1.*
FROM Employee E1, Employee E2
WHERE E1.job_id = E2.job_id
AND E1.DOJ - E2.DOJ > 365;

Create a view SIMPLE_EMP with Emp_ID, Department name, salary

CREATE VIEW SIMPLE_EMP AS


SELECT emp_id, D.dept_name, salary
FROM Employee E, Department D
WHERE E.dept_id = D.dept_id;

Write a procedure to fetch the employee details for a given dept_id

CREATE PROCEDURE FetchEmployeeDetailsForDept(IN


dept_id INT)
BEGIN
SELECT *
FROM Employee
WHERE dept_id = dept_id;
END;

Write a trigger to log insertion of an employee

CREATE TRIGGER log_employee_insertion


AFTER INSERT ON Employee
FOR EACH ROW
INSERT INTO EmployeeInsertionLog (emp_id, F_name,
l_name, insertion_date)
VALUES (NEW.emp_id, NEW.F_name, NEW.l_name, NOW());

You might also like