0% found this document useful (0 votes)
66 views11 pages

Database Management System - Practical File

Uploaded by

Ritweek Bajaj
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
66 views11 pages

Database Management System - Practical File

Uploaded by

Ritweek Bajaj
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 11

Tanisha Bansal

20231253
Management

Database Management System : Practical File

-- Create STUDENT Table


CREATE TABLE STUDENT (
RollNo CHAR(6) PRIMARY KEY,
StudentName VARCHAR(20),
Course VARCHAR(10),
DOB DATE
);

-- Create SOCIETY Table


CREATE TABLE SOCIETY (
SocID CHAR(6) PRIMARY KEY,
SocName VARCHAR(20),
MentorName VARCHAR(15),
TotalSeats UNSIGNED INT
);

-- Create ENROLLMENT Table


CREATE TABLE ENROLLMENT (
RollNo CHAR(6),
SID CHAR(6),
DateOfEnrollment DATE,
FOREIGN KEY (RollNo) REFERENCES STUDENT(RollNo),
FOREIGN KEY (SID) REFERENCES SOCIETY(SocID)
);

-- Insert sample data into STUDENT Table


INSERT INTO STUDENT VALUES
('S101', 'Alice', 'CS', '2001-06-15'),
('S102', 'Bob', 'IT', '2002-07-20'),
('S103', 'Charlie', 'EC', '2000-12-05');

-- Insert sample data into SOCIETY Table


INSERT INTO SOCIETY VALUES
('SC101', 'Debating', 'John', 30),
('SC102', 'Dancing', 'Emily', 25),
('SC103', 'Singing', 'Mark', 20);

-- Insert sample data into ENROLLMENT Table


INSERT INTO ENROLLMENT VALUES
('S101', 'SC101', '2024-01-10'),
('S101', 'SC102', '2024-01-12'),
('S102', 'SC101', '2024-01-15'),
('S103', 'SC103', '2024-01-20');

1. Retrieve names of students enrolled in any society.


Code :
SELECT DISTINCT STUDENT.StudentName
FROM STUDENT
JOIN ENROLLMENT ON STUDENT.RollNo = ENROLLMENT.RollNo;

2. Retrieve all society names


Code :
SELECT SocName
FROM SOCIETY;

3. Retrieve all students' names with ‘A’.


Code :
SELECT StudentName
FROM STUDENT
WHERE StudentName LIKE 'A%';

4. Retrieve all student’s detail studying computer science and chemistry


Code :
SELECT *
FROM STUDENT
WHERE Course IN ('CS', 'Chemistry');

5. Retrieve all student’s names whose roll no either starts with ‘X’ or ‘Z’ and ends with
‘9’
Code :
SELECT StudentName
FROM STUDENT
WHERE RollNo LIKE 'X%' OR RollNo LIKE 'Y%' OR RollNo LIKE 'Z%' AND
RollNo LIKE '%9';

6. Find society details with more than N TotalSeats where N is to be input by the user.
Code :
DECLARE @N INT; -- Declare a variable for user input
SET @N = 100; -- Set the value of N (replace 100 with the desired input)
SELECT *
FROM SOCIETY
WHERE TotalSeats > @N;

7. Update society table for the mentor name of a specific society


Code :
UPDATE SOCIETY
SET MentorName = 'Sophia'
WHERE SocID = 'SC102';
8. Find society name in which more than five students have enrolled
Code :
SELECT SOCIETY.SocName
FROM SOCIETY
JOIN ENROLLMENT ON SOCIETY.SocID = ENROLLMENT.SID
GROUP BY SOCIETY.SocName
HAVING COUNT(ENROLLMENT.RollNo) > 5;

9. Find the name of the youngest student enrolled in society ‘NSS’


Code :
SELECT S.StudentName
FROM STUDENT S
JOIN ENROLLMENT E ON S.RollNo = E.RollNo
JOIN SOCIETY SO ON E.SID = SO.SocID
WHERE SO.SocName = 'NSS'
AND S.DOB = (
SELECT MAX(S2.DOB)
FROM STUDENT S2
JOIN ENROLLMENT E2 ON S2.RollNo = E2.RollNo
JOIN SOCIETY SO2 ON E2.SID = SO2.SocID
WHERE SO2.SocName = 'NSS'
);

10. Find the name of the most popular society


Code :
SELECT SO.SocName
FROM SOCIETY SO
JOIN ENROLLMENT E ON SO.SocID = E.SID
GROUP BY SO.SocName
ORDER BY COUNT(E.RollNo) DESC
LIMIT 1;
11. Find names of least popular society
Code :
SELECT SOCIETY.SocName
FROM SOCIETY
LEFT JOIN ENROLLMENT ON SOCIETY.SocID = ENROLLMENT.SID
GROUP BY SOCIETY.SocName
ORDER BY COUNT(ENROLLMENT.RollNo)
LIMIT 2;

12. Find the names of students who have not enrolled in any society
Code :
SELECT STUDENT.StudentName
FROM STUDENT
LEFT JOIN ENROLLMENT ON STUDENT.RollNo = ENROLLMENT.RollNo
WHERE ENROLLMENT.SID IS NULL;

13. Find the names of all the students who are enrolled in at least 2 societies
Code :
SELECT STUDENT.StudentName
FROM STUDENT
JOIN ENROLLMENT ON STUDENT.RollNo = ENROLLMENT.RollNo
GROUP BY STUDENT.RollNo
HAVING COUNT(ENROLLMENT.SID) >= 2;

14. Find the society name in which maximum students are enrolled
Code :
SELECT SOCIETY.SocName
FROM SOCIETY
JOIN ENROLLMENT ON SOCIETY.SocID = ENROLLMENT.SID
GROUP BY SOCIETY.SocName
HAVING COUNT(ENROLLMENT.RollNo) = (
SELECT MAX(StudentCount)
FROM (
SELECT COUNT(ENROLLMENT.RollNo) AS StudentCount
FROM ENROLLMENT
GROUP BY ENROLLMENT.SID
) AS Temp
);

15. Find names of all students who have enrolled in any society and society names in
which at least one student has enrolled
Code:
SELECT DISTINCT S.StudentName, SO.SocName
FROM STUDENT S
JOIN ENROLLMENT E ON S.RollNo = E.RollNo
JOIN SOCIETY SO ON E.SID = SO.SocID;

16. Find names of all students who have enrolled in any society and society names in
which at least one student has enrolled .
Code :
SELECT DISTINCT S.StudentName
FROM STUDENT S
JOIN ENROLLMENT E ON S.RollNo = E.RollNo
JOIN SOCIETY SO ON E.SID = SO.SocID
WHERE SO.SocName IN ('Debating', 'Dancing', 'Sashakt');

17. Find the society names such that its mentor has a name with ‘ Gupta ‘ in it
Code :
SELECT SocName
FROM SOCIETY
WHERE MentorName LIKE '%Gupta%';

18. Find the society names in which the number of enrolled students is only 10% of its
capacity
Code :
SELECT S.SocName
FROM SOCIETY S
JOIN ENROLLMENT E ON S.SocID = E.SID
GROUP BY S.SocID, S.SocName, S.TotalSeats
HAVING COUNT(E.RollNo) <= 0.1 * S.TotalSeats;
19. Display the vacant seats for each society
Code :
SELECT S.SocName,
(S.TotalSeats - COUNT(E.RollNo)) AS VacantSeats
FROM SOCIETY S
LEFT JOIN ENROLLMENT E ON S.SocID = E.SID
GROUP BY S.SocID, S.SocName, S.TotalSeats;

20. Increment total seats of each society by 10%


Code :
UPDATE SOCIETY
SET TotalSeats = TotalSeats * 1.10;

21. Add the enrollment fee paid ( ‘yes’/’no’ ) field in the enrollment table
Code :
ALTER TABLE ENROLLMENT
ADD EnrollmentFeePaid ENUM('yes', 'no');

23. Create a view to keep track of society names with the total number of students
enrolled in it.
Code:
CREATE VIEW SocietyEnrollment AS
SELECT S.SocName, COUNT(E.RollNo) AS TotalStudents
FROM SOCIETY S
LEFT JOIN ENROLLMENT E ON S.SocID = E.SID
GROUP BY S.SocName;

24. Find the students' names enrolled in all the societies.


Code :
SELECT S.StudentName
FROM STUDENT S
JOIN ENROLLMENT E ON S.RollNo = E.RollNo
JOIN SOCIETY Sc ON E.SID = Sc.SocID
GROUP BY S.StudentName
HAVING COUNT(DISTINCT Sc.SocID) = (SELECT COUNT(*) FROM
SOCIETY)
25. Count the number of societies with more than 5 students enrolled in it .
Code :
SELECT COUNT(DISTINCT S.SocID) AS SocietiesWithMoreThanFiveStudents
FROM SOCIETY S
JOIN ENROLLMENT E ON S.SocID = E.SID
GROUP BY S.SocID
HAVING COUNT(E.RollNo) > 1;

26. Add column mobile number in student table with default value 9999999999
Code :
-- Add MobileNumber column to STUDENT table with default value
ALTER TABLE STUDENT
ADD MobileNumber CHAR(10) DEFAULT '9999999999';

27. Find the total number of students whose age is > 20 years.
Code :
-- Find the total number of students whose age is > 20 years
SELECT COUNT(*) AS TotalStudents
FROM STUDENT
WHERE TIMESTAMPDIFF(YEAR, DOB, CURDATE()) > 20;
28. Find names of students who were born in 2001 and are enrolled in at least one society.
Code :
-- Find names of students born in 2001 and enrolled in at least one society
SELECT DISTINCT S.StudentName
FROM STUDENT S
JOIN ENROLLMENT E ON S.RollNo = E.RollNo
WHERE YEAR(S.DOB) = 2001;

29. Count all society whose names start with 'S' and end with 'T' and has at least 5 student
enrolled in it
Code :
-- Count societies starting with 'S', ending with 'T', and having at least 5 students
enrolled
SELECT COUNT(*) AS TotalSocieties
FROM SOCIETY S
WHERE S.SocName LIKE 'S%T'
AND (
SELECT COUNT(*)
FROM ENROLLMENT E
WHERE E.SID = S.SocID
) >= 5;

30. Display the following information:


Society name Mentor name Total Capacity Total Enrolled Unfilled Seats\
Code :
-- Display society information with total enrolled and unfilled seats
SELECT
S.SocName AS SocietyName,
S.MentorName AS MentorName,
S.TotalSeats AS TotalCapacity,
COUNT(E.RollNo) AS TotalEnrolled,
S.TotalSeats - COUNT(E.RollNo) AS UnfilledSeats
FROM
SOCIETY S
LEFT JOIN
ENROLLMENT E ON S.SocID = E.SID
GROUP BY
S.SocID, S.SocName, S.MentorName, S.TotalSeats;

You might also like