<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: krithikraja</title>
    <description>The latest articles on DEV Community by krithikraja (@krithikraja_fcc802ca9bb16).</description>
    <link>https://dev.to/krithikraja_fcc802ca9bb16</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3459465%2F0e966f98-dd28-4f9b-a733-c04cd7c4856b.jpg</url>
      <title>DEV Community: krithikraja</title>
      <link>https://dev.to/krithikraja_fcc802ca9bb16</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/krithikraja_fcc802ca9bb16"/>
    <language>en</language>
    <item>
      <title>College Student &amp; Course Management System</title>
      <dc:creator>krithikraja</dc:creator>
      <pubDate>Tue, 26 Aug 2025 03:55:19 +0000</pubDate>
      <link>https://dev.to/krithikraja_fcc802ca9bb16/college-student-course-management-system-2am0</link>
      <guid>https://dev.to/krithikraja_fcc802ca9bb16/college-student-course-management-system-2am0</guid>
      <description>&lt;p&gt;Introduction&lt;br&gt;
This blog covers the implementation of a simple College Student &amp;amp; Course Management System using SQL on Oracle LiveSQL. It demonstrates key database concepts such as table creation, data insertion, constraint addition, queries with functions and aggregates, joins, views, and stored procedures.&lt;/p&gt;

&lt;p&gt;The use case focuses on managing students, courses, enrollments, and faculty members with related operations.&lt;/p&gt;

&lt;p&gt;Database Schema&lt;br&gt;
The database contains four main tables: Students, Courses, Enrollments, and Faculty.&lt;/p&gt;

&lt;p&gt;Students Table&lt;br&gt;
CREATE TABLE Students (&lt;br&gt;
StudentID NUMBER PRIMARY KEY,&lt;br&gt;
Name VARCHAR2(50) NOT NULL,&lt;br&gt;
Dept VARCHAR2(30),&lt;br&gt;
DOB DATE,&lt;br&gt;
Email VARCHAR2(50) UNIQUE&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;Courses Table&lt;br&gt;
CREATE TABLE Courses (&lt;br&gt;
CourseID NUMBER PRIMARY KEY,&lt;br&gt;
CourseName VARCHAR2(50) NOT NULL,&lt;br&gt;
Credits NUMBER(2)&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;Enrollments Table&lt;br&gt;
CREATE TABLE Enrollments (&lt;br&gt;
EnrollID NUMBER PRIMARY KEY,&lt;br&gt;
StudentID NUMBER REFERENCES Students(StudentID),&lt;br&gt;
CourseID NUMBER REFERENCES Courses(CourseID),&lt;br&gt;
Grade CHAR(2)&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;Faculty Table&lt;br&gt;
CREATE TABLE Faculty (&lt;br&gt;
FacultyID NUMBER PRIMARY KEY,&lt;br&gt;
FacultyName VARCHAR2(50) NOT NULL,&lt;br&gt;
Dept VARCHAR2(30),&lt;br&gt;
Email VARCHAR2(50) UNIQUE&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;Data Insertion&lt;br&gt;
Sample data was inserted into these tables to represent students, courses, and their enrollments:&lt;/p&gt;

&lt;p&gt;INSERT INTO Students (StudentID, Name, Dept, DOB, Email)&lt;br&gt;
VALUES (1, 'Alice Johnson', 'Computer Science', TO_DATE('2002-04-15', 'YYYY-MM-DD'), '&lt;a href="mailto:alice.johnson@example.com"&gt;alice.johnson@example.com&lt;/a&gt;');&lt;/p&gt;

&lt;p&gt;INSERT INTO Students (StudentID, Name, Dept, DOB, Email)&lt;br&gt;
VALUES (2, 'Bob Smith', 'Mathematics', TO_DATE('2001-11-23', 'YYYY-MM-DD'), '&lt;a href="mailto:bob.smith@example.com"&gt;bob.smith@example.com&lt;/a&gt;');&lt;/p&gt;

&lt;p&gt;INSERT INTO Students (StudentID, Name, Dept, DOB, Email)&lt;br&gt;
VALUES (3, 'Cathy Brown', 'Physics', TO_DATE('2003-07-02', 'YYYY-MM-DD'), '&lt;a href="mailto:cathy.brown@example.com"&gt;cathy.brown@example.com&lt;/a&gt;');&lt;/p&gt;

&lt;p&gt;INSERT INTO Courses (CourseID, CourseName, Credits) VALUES (101, 'Databases', 4);&lt;br&gt;
INSERT INTO Courses (CourseID, CourseName, Credits) VALUES (102, 'Algorithms', 3);&lt;br&gt;
INSERT INTO Courses (CourseID, CourseName, Credits) VALUES (103, 'Physics', 5);&lt;/p&gt;

&lt;p&gt;INSERT INTO Enrollments (EnrollID, StudentID, CourseID, Grade) VALUES (1, 1, 101, 'A');&lt;br&gt;
INSERT INTO Enrollments (EnrollID, StudentID, CourseID, Grade) VALUES (2, 2, 102, 'B+');&lt;br&gt;
INSERT INTO Enrollments (EnrollID, StudentID, CourseID, Grade) VALUES (3, 3, 103, 'A-');&lt;/p&gt;

&lt;p&gt;Table Alterations and Constraints&lt;br&gt;
Added a new column PhoneNo to Students and a CHECK constraint on the Credits column of Courses:&lt;/p&gt;

&lt;p&gt;ALTER TABLE Students ADD PhoneNo VARCHAR2(10);&lt;/p&gt;

&lt;p&gt;ALTER TABLE Courses ADD CONSTRAINT chk_credits CHECK (Credits BETWEEN 1 AND 5);&lt;/p&gt;

&lt;p&gt;SQL Queries with Functions and Aggregates&lt;br&gt;
Listing student names in uppercase and length of their emails:&lt;br&gt;
SELECT UPPER(Name) AS UppercaseName, LENGTH(Email) AS EmailLength FROM Students;&lt;/p&gt;

&lt;p&gt;Calculating average course credits and counting enrolled students:&lt;br&gt;
SELECT&lt;br&gt;
(SELECT AVG(Credits) FROM Courses) AS AvgCredits,&lt;br&gt;
(SELECT COUNT(DISTINCT StudentID) FROM Enrollments) AS TotalStudentsEnrolled&lt;br&gt;
FROM dual;&lt;/p&gt;

&lt;p&gt;Sample result:&lt;/p&gt;

&lt;p&gt;UppercaseName   EmailLength&lt;br&gt;
ALICE JOHNSON   25&lt;br&gt;
BOB SMITH   21&lt;br&gt;
CATHY BROWN 23&lt;br&gt;
AvgCredits  TotalStudentsEnrolled&lt;br&gt;
4.0 3&lt;br&gt;
JOIN Queries&lt;br&gt;
Joining Students, Enrollments, and Courses to show which student is enrolled in which course along with grades:&lt;/p&gt;

&lt;p&gt;SELECT s.Name AS StudentName, c.CourseName, e.Grade&lt;br&gt;
FROM Students s&lt;br&gt;
JOIN Enrollments e ON s.StudentID = e.StudentID&lt;br&gt;
JOIN Courses c ON c.CourseID = e.CourseID;&lt;/p&gt;

&lt;p&gt;Sample result:&lt;/p&gt;

&lt;p&gt;StudentName CourseName  Grade&lt;br&gt;
Alice Johnson   Databases   A&lt;br&gt;
Bob Smith   Algorithms  B+&lt;br&gt;
Cathy Brown Physics A-&lt;br&gt;
GROUP BY and HAVING Clause&lt;br&gt;
Counting students in each department and filtering departments with more than 2 students:&lt;/p&gt;

&lt;p&gt;SELECT Dept, COUNT() AS StudentCount&lt;br&gt;
FROM Students&lt;br&gt;
GROUP BY Dept&lt;br&gt;
HAVING COUNT() &amp;gt; 2;&lt;/p&gt;

&lt;p&gt;Views&lt;br&gt;
Created a view to simplify student-course-grade lookup:&lt;/p&gt;

&lt;p&gt;CREATE OR REPLACE VIEW StudentCoursesView AS&lt;br&gt;
SELECT s.Name AS StudentName, c.CourseName, e.Grade&lt;br&gt;
FROM Students s&lt;br&gt;
JOIN Enrollments e ON s.StudentID = e.StudentID&lt;br&gt;
JOIN Courses c ON c.CourseID = e.CourseID;&lt;/p&gt;

&lt;p&gt;Stored Procedure&lt;br&gt;
Procedure to update a student's grade in enrollments:&lt;/p&gt;

&lt;p&gt;CREATE OR REPLACE PROCEDURE UpdateGrade (&lt;br&gt;
p_StudentID IN NUMBER,&lt;br&gt;
p_CourseID IN NUMBER,&lt;br&gt;
p_NewGrade IN CHAR&lt;br&gt;
) AS&lt;br&gt;
BEGIN&lt;br&gt;
UPDATE Enrollments&lt;br&gt;
SET Grade = p_NewGrade&lt;br&gt;
WHERE StudentID = p_StudentID AND CourseID = p_CourseID;&lt;br&gt;
COMMIT;&lt;br&gt;
END;&lt;br&gt;
/&lt;/p&gt;

&lt;p&gt;Summary&lt;br&gt;
This assignment reinforced understanding of:&lt;/p&gt;

&lt;p&gt;Creating and managing SQL database schemas&lt;br&gt;
Writing data manipulation queries&lt;br&gt;
Using SQL functions and aggregate operations&lt;br&gt;
Performing joins to combine related data&lt;br&gt;
Creating views and stored procedures to enhance SQL capabilities&lt;br&gt;
Feel free to try the full script on Oracle LiveSQL to see these operations in action.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faki349kgb3dv22g6f6e0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faki349kgb3dv22g6f6e0.png" alt=" " width="800" height="381"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>sql</category>
      <category>oracle</category>
      <category>learning</category>
      <category>database</category>
    </item>
  </channel>
</rss>
