<?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: Rohivarshini Saravanan</title>
    <description>The latest articles on DEV Community by Rohivarshini Saravanan (@rohivarshini_saravanan_29).</description>
    <link>https://dev.to/rohivarshini_saravanan_29</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%2F3449144%2F78902bcf-4a1c-4ef0-9394-9ad6028dd848.png</url>
      <title>DEV Community: Rohivarshini Saravanan</title>
      <link>https://dev.to/rohivarshini_saravanan_29</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rohivarshini_saravanan_29"/>
    <language>en</language>
    <item>
      <title>Exploring MongoDB CRUD Operations</title>
      <dc:creator>Rohivarshini Saravanan</dc:creator>
      <pubDate>Wed, 08 Oct 2025 18:01:10 +0000</pubDate>
      <link>https://dev.to/rohivarshini_saravanan_29/exploring-mongodb-crud-operations-5g2f</link>
      <guid>https://dev.to/rohivarshini_saravanan_29/exploring-mongodb-crud-operations-5g2f</guid>
      <description>&lt;p&gt;&lt;strong&gt;Exploring MongoDB CRUD Operations: A Beginner’s Guide&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;MongoDB is one of the most popular NoSQL databases out there — and for good reason! It’s built for cloud-based, scalable apps that need flexibility and speed. Instead of storing data in strict tables like traditional databases, MongoDB uses JSON-like documents that feel much closer to real-world data. For example, representing students in a college database becomes super simple and natural.&lt;/p&gt;

&lt;p&gt;At the heart of MongoDB are the four key CRUD operations — Create, Read, Update, and Delete. These let you add new data, view it, modify it, or remove it when needed.&lt;/p&gt;

&lt;p&gt;In this blog, we’ll get our hands dirty performing CRUD operations on a student database. You’ll learn how to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Insert multiple student records&lt;/li&gt;
&lt;li&gt;Fetch and filter data using queries&lt;/li&gt;
&lt;li&gt;Update details such as CGPA or academic year&lt;/li&gt;
&lt;li&gt;Delete specific student records&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We’ll use MongoDB Atlas, the cloud-based version of MongoDB, to make everything easy and accessible. By the end, you’ll have a solid, practical understanding of how MongoDB works — and why developers love using it for modern applications.&lt;/p&gt;

&lt;p&gt;Schema – Collection: students&lt;br&gt;
Each student record (document) follows this structure:&lt;/p&gt;

&lt;p&gt;{&lt;br&gt;
"student_id": "ST001",&lt;br&gt;
"name": "Aarav",&lt;br&gt;
"age": 20,&lt;br&gt;
"department": "AI &amp;amp; DS",&lt;br&gt;
"year": 2,&lt;br&gt;
"cgpa": 8.9&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CREATE (INSERT)&lt;/strong&gt;&lt;br&gt;
In MongoDB Atlas → Collections → Insert Document&lt;/p&gt;

&lt;p&gt;{&lt;br&gt;
"student_id": "ST001",&lt;br&gt;
"name": "Aarav",&lt;br&gt;
"age": 20,&lt;br&gt;
"department": "AI &amp;amp; DS",&lt;br&gt;
"year": 2,&lt;br&gt;
"cgpa": 8.9&lt;br&gt;
},&lt;br&gt;
{&lt;br&gt;
"student_id": "ST002",&lt;br&gt;
"name": "Diya",&lt;br&gt;
"age": 19,&lt;br&gt;
"department": "CSE",&lt;br&gt;
"year": 1,&lt;br&gt;
"cgpa": 9.2&lt;br&gt;
},&lt;br&gt;
{&lt;br&gt;
"student_id": "ST003",&lt;br&gt;
"name": "Rahul",&lt;br&gt;
"age": 21,&lt;br&gt;
"department": "ECE",&lt;br&gt;
"year": 3,&lt;br&gt;
"cgpa": 7.8&lt;br&gt;
},&lt;br&gt;
{&lt;br&gt;
"student_id": "ST004",&lt;br&gt;
"name": "Meera",&lt;br&gt;
"age": 20,&lt;br&gt;
"department": "IT",&lt;br&gt;
"year": 2,&lt;br&gt;
"cgpa": 9.5&lt;br&gt;
},&lt;br&gt;
{&lt;br&gt;
"student_id": "ST005",&lt;br&gt;
"name": "Vikram",&lt;br&gt;
"age": 22,&lt;br&gt;
"department": "MECH",&lt;br&gt;
"year": 3,&lt;br&gt;
"cgpa": 6.9&lt;br&gt;
}&lt;/p&gt;

&lt;p&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%2Fztfp6mes1ckzpfwdgy7r.jpg" 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%2Fztfp6mes1ckzpfwdgy7r.jpg" alt=" " width="599" height="283"&gt;&lt;/a&gt;&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%2Fyjl1k81t2tkywi1rfn5v.jpg" 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%2Fyjl1k81t2tkywi1rfn5v.jpg" alt=" " width="605" height="287"&gt;&lt;/a&gt;&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%2Fo0ewxbm09gyqz4yoiypu.jpg" 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%2Fo0ewxbm09gyqz4yoiypu.jpg" alt=" " width="617" height="289"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Results:&lt;/strong&gt;&lt;br&gt;
Inserted 5 documents successfully.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;READ (QUERY)&lt;/strong&gt;&lt;br&gt;
Run the following queries&lt;/p&gt;

&lt;p&gt;(a) Display all student records&lt;br&gt;
find()&lt;/p&gt;

&lt;p&gt;(b) Find all students with CGPA &amp;gt; 8&lt;br&gt;
({ cgpa: { $gt: 8 } })&lt;/p&gt;

&lt;p&gt;(c) Find students belonging to Computer Science departments&lt;br&gt;
({ department: { $in: ["CSE", "AI &amp;amp; DS"] } })&lt;/p&gt;

&lt;p&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%2Fm17umfgzrb2vdflxflpq.webp" 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%2Fm17umfgzrb2vdflxflpq.webp" alt=" " width="800" height="284"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This helps identify top performers or department-based groups easily.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;UPDATE (MODIFY RECORDS)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;(a) Update CGPA of a specific student&lt;br&gt;
{ student_id: "ST002" },&lt;br&gt;
{ $set: { cgpa: 9.6 } }&lt;/p&gt;

&lt;p&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%2Fxmpyvmturobycy9uuw56.webp" 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%2Fxmpyvmturobycy9uuw56.webp" alt=" " width="800" height="353"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Matched 1 document, modified 1 document.&lt;/p&gt;

&lt;p&gt;(b) Increase the year of study for all 3rd-year students by 1&lt;br&gt;
{ year: 3 },&lt;br&gt;
{ $inc: { year: 1 } }&lt;/p&gt;

&lt;p&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%2F0mddpyeab43e6csabyzf.webp" 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%2F0mddpyeab43e6csabyzf.webp" alt=" " width="800" height="297"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💡 $inc automatically increments numerical fields — perfect for promotions or increments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DELETE (REMOVE RECORDS)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;(a) Delete one student by ID&lt;br&gt;
({ student_id: "ST005" })&lt;/p&gt;

&lt;p&gt;(b) Delete all students with CGPA &amp;lt; 7.5&lt;br&gt;
({ cgpa: { $lt: 7.5 } })&lt;/p&gt;

&lt;p&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%2F8d2xlrw4ut3rt7ugfnhb.webp" 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%2F8d2xlrw4ut3rt7ugfnhb.webp" alt=" " width="800" height="153"&gt;&lt;/a&gt;&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%2Fx6qz0t657y3amkw38k0o.webp" 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%2Fx6qz0t657y3amkw38k0o.webp" alt=" " width="800" height="125"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>tutorial</category>
      <category>mongodb</category>
      <category>database</category>
    </item>
    <item>
      <title>Cursor and Trigger</title>
      <dc:creator>Rohivarshini Saravanan</dc:creator>
      <pubDate>Wed, 08 Oct 2025 15:53:07 +0000</pubDate>
      <link>https://dev.to/rohivarshini_saravanan_29/cursor-and-trigger-4h0e</link>
      <guid>https://dev.to/rohivarshini_saravanan_29/cursor-and-trigger-4h0e</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;CURSOR&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A cursor in MySQL is a database object used to retrieve and process each row of a result set individually.&lt;/li&gt;
&lt;li&gt;It is mainly used in stored procedures when we need to perform operations row by row.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To demonstrate a cursor with condition lets create and insert into the table.&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%2Fliq6yz3br6o28q4h8xhe.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%2Fliq6yz3br6o28q4h8xhe.png" alt=" " width="753" height="175"&gt;&lt;/a&gt;&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%2Fy5kadyibih13zdf5ejfr.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%2Fy5kadyibih13zdf5ejfr.png" alt=" " width="775" height="252"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cursor example - Display Employee Names whose Salary &amp;gt; 50000&lt;/p&gt;

&lt;p&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%2Fef2naq63yqy7kidrfwul.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%2Fef2naq63yqy7kidrfwul.png" alt=" " width="800" height="647"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Call the Cursor Procedure&lt;/p&gt;

&lt;p&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%2Fao4mc4e0b7pfescayt7e.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%2Fao4mc4e0b7pfescayt7e.png" alt=" " width="706" height="660"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;TRIGGER&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A trigger in MySQL is a stored program that automatically executes (fires) when a specified event occurs on a table, such as INSERT, UPDATE, or DELETE.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To demonstrates an AFTER INSERT trigger (with audit logging) lets create and insert into the table.&lt;/p&gt;

&lt;p&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%2Fxsqyw7aek64ua2q151ja.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%2Fxsqyw7aek64ua2q151ja.png" alt=" " width="796" height="196"&gt;&lt;/a&gt;&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%2F007qtdeo4t920wd37u5c.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%2F007qtdeo4t920wd37u5c.png" alt=" " width="800" height="285"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Create AFTER INSERT Trigger&lt;/p&gt;

&lt;p&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%2F9v2p1nz5jj9sro86czp9.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%2F9v2p1nz5jj9sro86czp9.png" alt=" " width="800" height="211"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Insert Sample Students to See Trigger in Action&lt;/p&gt;

&lt;p&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%2F3uy8veg3hmnwywf9z8py.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%2F3uy8veg3hmnwywf9z8py.png" alt=" " width="800" height="139"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Check the Audit Table&lt;/p&gt;

&lt;p&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%2Flzes87x53heg95mk83xr.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%2Flzes87x53heg95mk83xr.png" alt=" " width="800" height="160"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Transactions, Deadlocks &amp; Log Based Recovery</title>
      <dc:creator>Rohivarshini Saravanan</dc:creator>
      <pubDate>Mon, 06 Oct 2025 14:12:43 +0000</pubDate>
      <link>https://dev.to/rohivarshini_saravanan_29/transactions-deadlocks-log-based-recovery-50fn</link>
      <guid>https://dev.to/rohivarshini_saravanan_29/transactions-deadlocks-log-based-recovery-50fn</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;Transaction&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;A &lt;strong&gt;transaction&lt;/strong&gt; is a &lt;strong&gt;single logical unit of work&lt;/strong&gt; that consists of one or more SQL operations.&lt;/p&gt;

&lt;p&gt;It must follow the ACID properties:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A – Atomicity&lt;/strong&gt;: Either all operations succeed or none.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;C – Consistency&lt;/strong&gt;: Database remains in a valid state before &amp;amp; after the transaction.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;I – Isolation&lt;/strong&gt;: Transactions don’t interfere with each other.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;D – Durability&lt;/strong&gt;: Once committed, changes are permanent.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Deadlock&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;A &lt;strong&gt;deadlock&lt;/strong&gt; occurs when &lt;strong&gt;two or more transactions hold locks&lt;/strong&gt; on resources and each waits for the other to release a lock, causing the system to freeze until one transaction is rolled back.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Transaction 1 locks Alice’s account and waits for Bob’s.&lt;/li&gt;
&lt;li&gt;Transaction 2 locks Bob’s account and waits for Alice’s → Deadlock.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Log-Based Recovery&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Databases &lt;strong&gt;maintain logs&lt;/strong&gt; (Write-Ahead Logs / Binary Logs) to record every transaction.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If a crash occurs before commit → use logs to undo incomplete transactions.&lt;/li&gt;
&lt;li&gt;If after commit → logs are used to redo committed transactions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Schema&lt;/strong&gt;&lt;br&gt;
Use a single table Accounts:&lt;/p&gt;

&lt;p&gt;`CREATE TABLE Accounts (&lt;br&gt;
    acc_no INT PRIMARY KEY,&lt;br&gt;
    name VARCHAR(50),&lt;br&gt;
    balance INT&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;INSERT INTO Accounts VALUES&lt;br&gt;
(1, 'Alice', 1000),&lt;br&gt;
(2, 'Bob', 1500),&lt;br&gt;
(3, 'Charlie', 2000);`&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Transaction – Atomicity &amp;amp; Rollback&lt;/strong&gt;&lt;/p&gt;

&lt;p&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%2Ft077qs2dtlqb28m60eef.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%2Ft077qs2dtlqb28m60eef.png" alt=" " width="641" height="220"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Balances remain unchanged (Alice: 1000, Bob: 1500) — proves Atomicity (no partial update).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Deadlock Simulation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Session 1&lt;/p&gt;

&lt;p&gt;START TRANSACTION;&lt;br&gt;
UPDATE Accounts SET balance = balance - 100 WHERE name = 'Alice';&lt;br&gt;
UPDATE Accounts SET balance = balance + 100 WHERE name = 'Bob';    &lt;/p&gt;

&lt;p&gt;Session 2&lt;/p&gt;

&lt;p&gt;START TRANSACTION;&lt;br&gt;
UPDATE Accounts SET balance = balance - 100 WHERE name = 'Bob';&lt;br&gt;
UPDATE Accounts SET balance = balance + 100 WHERE name = 'Alice';  &lt;/p&gt;

&lt;p&gt;Result: Deadlock occurs&lt;/p&gt;

&lt;p&gt;Database automatically detects and terminates one transaction:&lt;/p&gt;

&lt;p&gt;ERROR 1213 (40001): Deadlock found; try restarting transaction&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Log-Based Recovery&lt;/strong&gt;&lt;/p&gt;

&lt;p&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%2F9sxbfub07a1gy49aepd1.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%2F9sxbfub07a1gy49aepd1.png" alt=" " width="800" height="113"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You’ll find entries for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;UPDATE (before rollback)&lt;/li&gt;
&lt;li&gt;ROLLBACK (undo recorded in log)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Confirms Undo/Redo logging works for recovery.&lt;/p&gt;

</description>
      <category>computerscience</category>
      <category>database</category>
      <category>systemdesign</category>
    </item>
    <item>
      <title>Indexing, Hashing &amp; Query Optimization</title>
      <dc:creator>Rohivarshini Saravanan</dc:creator>
      <pubDate>Mon, 06 Oct 2025 13:36:26 +0000</pubDate>
      <link>https://dev.to/rohivarshini_saravanan_29/indexing-hashing-query-optimization-2799</link>
      <guid>https://dev.to/rohivarshini_saravanan_29/indexing-hashing-query-optimization-2799</guid>
      <description>&lt;h2&gt;
  
  
  Indexing
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Indexing&lt;/strong&gt; is a &lt;strong&gt;technique to speed up data retrieval&lt;/strong&gt; in a database. It &lt;strong&gt;creates a separate data structure (index)&lt;/strong&gt; that helps locate records quickly without scanning the entire table.&lt;/p&gt;

&lt;p&gt;Common index types:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;B-Tree Index – used for searching and sorting.&lt;/li&gt;
&lt;li&gt;B+ Tree Index – efficient for range queries.&lt;/li&gt;
&lt;li&gt;Hash Index – used for exact match lookups.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Hashing
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Hashing&lt;/strong&gt; uses a hash function to &lt;strong&gt;convert a key (like dept) into a hash value&lt;/strong&gt; that points to the location of the record.&lt;/p&gt;

&lt;p&gt;It provides fast access for equality searches but is not suitable for range-based queries.&lt;/p&gt;

&lt;h2&gt;
  
  
  Query Optimization
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Query Optimization&lt;/strong&gt; is the process of &lt;strong&gt;choosing the most efficient&lt;/strong&gt; way to execute a query.&lt;/p&gt;

&lt;p&gt;The optimizer &lt;strong&gt;analyzes indexes, joins, and conditions&lt;/strong&gt; to minimize query execution time and improve performance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Create a table Students with fields (roll_no, name, dept, cgpa)&lt;/strong&gt;&lt;/p&gt;

&lt;p&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%2F52va640lomrr6e9cjdvv.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%2F52va640lomrr6e9cjdvv.png" alt=" " width="616" height="510"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Insert at least 20 sample records.&lt;/strong&gt;&lt;/p&gt;

&lt;p&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%2Floh551pnoakghcdcalrg.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%2Floh551pnoakghcdcalrg.png" alt=" " width="619" height="505"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Create a B-Tree index on the roll_no column of the Students table.&lt;/strong&gt;&lt;/p&gt;

&lt;p&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%2Fb7ia2psvhvnbai780f5j.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%2Fb7ia2psvhvnbai780f5j.png" alt=" " width="800" height="519"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Execute a query to fetch the details of a student with roll_no = 110.&lt;/strong&gt;&lt;/p&gt;

&lt;p&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%2F06cvrkd7ifsg0ckosuw0.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%2F06cvrkd7ifsg0ckosuw0.png" alt=" " width="800" height="497"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Create a B+ Tree index on the cgpa column of the Students table.&lt;/strong&gt;&lt;/p&gt;

&lt;p&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%2Fvhqqh9rgpp6kopb92qsn.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%2Fvhqqh9rgpp6kopb92qsn.png" alt=" " width="719" height="89"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Write a query to display all students with cgpa &amp;gt; 8.0.&lt;/strong&gt;&lt;/p&gt;

&lt;p&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%2F4bww890xpcckvre4wtf2.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%2F4bww890xpcckvre4wtf2.png" alt=" " width="800" height="606"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. Create a Hash index on the dept column of the Students table.&lt;/strong&gt;&lt;/p&gt;

&lt;p&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%2Fyeqbwhzbi3mhbvcyv0t8.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%2Fyeqbwhzbi3mhbvcyv0t8.png" alt=" " width="565" height="87"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;8. Run a query to retrieve all students from the 'CSBS' department.&lt;/strong&gt;&lt;/p&gt;

&lt;p&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%2Fiv4berdtoxnu6l9qg8b5.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%2Fiv4berdtoxnu6l9qg8b5.png" alt=" " width="800" height="582"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>ACID Properties</title>
      <dc:creator>Rohivarshini Saravanan</dc:creator>
      <pubDate>Mon, 06 Oct 2025 13:09:28 +0000</pubDate>
      <link>https://dev.to/rohivarshini_saravanan_29/acid-properties-2g0p</link>
      <guid>https://dev.to/rohivarshini_saravanan_29/acid-properties-2g0p</guid>
      <description>&lt;h2&gt;
  
  
  Atomicity in Database Transactions
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Atomicity&lt;/strong&gt; is the &lt;strong&gt;“all or nothing”&lt;/strong&gt; property of a database transaction.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It ensures that a transaction — which may include multiple SQL statements — is treated as a single indivisible unit of work.&lt;/li&gt;
&lt;li&gt;That means either all operations of the transaction succeed, or none of them do.&lt;/li&gt;
&lt;li&gt;If any part of the transaction fails (due to error, power loss, or system crash), the database rolls back to its previous stable state — ensuring that no partial updates occur.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;1. Create a table Accounts(acc_no INT PRIMARY KEY, name VARCHAR(50), balance INT). Insert 3 sample rows.&lt;/strong&gt;&lt;/p&gt;

&lt;p&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%2Fda7coypyb8p4ggb6vh58.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%2Fda7coypyb8p4ggb6vh58.png" alt=" " width="800" height="546"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Atomicity: Start a transaction that transfers money. Rollback midway → ensure no partial update remains.&lt;/strong&gt;&lt;br&gt;
Atomicity ensures all operations in a transaction succeed or none do.&lt;/p&gt;

&lt;p&gt;Example: Transfer ₹1000 from Ravi → Priya and rollback midway&lt;/p&gt;

&lt;p&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%2Fgn7y42t273uu5sv6hl2h.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%2Fgn7y42t273uu5sv6hl2h.png" alt=" " width="800" height="513"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Result: No partial transfer — both balances remain same (proving Atomicity).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Consistency: Try inserting a record with negative balance → should be rejected.&lt;/strong&gt;&lt;br&gt;
Consistency ensures that data integrity rules (constraints) are not violated.&lt;/p&gt;

&lt;p&gt;Example: Try inserting a record with negative balance&lt;/p&gt;

&lt;p&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%2Ft756p2f67zac3nih8ckp.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%2Ft756p2f67zac3nih8ckp.png" alt=" " width="494" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This will fail because of the CHECK (balance &amp;gt;= 0) constraint.&lt;br&gt;
Result: Database remains in a consistent state.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Isolation: Run two sessions at once – one updating, the other reading → observe isolation.&lt;/strong&gt;&lt;br&gt;
Isolation ensures that concurrent transactions do not interfere with each other.&lt;/p&gt;

&lt;p&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%2Fz0birkstbml7t2fie57q.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%2Fz0birkstbml7t2fie57q.png" alt=" " width="716" height="517"&gt;&lt;/a&gt;&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%2Fac2o1rmbaugqdlx3ph12.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%2Fac2o1rmbaugqdlx3ph12.png" alt=" " width="800" height="475"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Depending on isolation level:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;READ UNCOMMITTED → Session 2 might see uncommitted data (dirty read)&lt;/li&gt;
&lt;li&gt;READ COMMITTED (default) → Session 2 sees only committed data&lt;/li&gt;
&lt;li&gt;REPEATABLE READ / SERIALIZABLE → Session 2 waits or reads the old value until Session 1 commits
Result: Each session’s visibility depends on the isolation level — proving isolation behavior.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;5. Durability: Commit a transaction → restart DB → ensure data persists.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Durability ensures that once a transaction is committed, changes are permanent, even after a crash or restart.&lt;/p&gt;

&lt;p&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%2F27my6flcqfa2zs22488z.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%2F27my6flcqfa2zs22488z.png" alt=" " width="581" height="527"&gt;&lt;/a&gt;&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%2Fy2axjkx1lqajw3f1rmnh.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%2Fy2axjkx1lqajw3f1rmnh.png" alt=" " width="800" height="490"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Result: The updated balance remains — showing durability.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>database</category>
      <category>sql</category>
    </item>
    <item>
      <title>Normalization</title>
      <dc:creator>Rohivarshini Saravanan</dc:creator>
      <pubDate>Mon, 06 Oct 2025 12:42:52 +0000</pubDate>
      <link>https://dev.to/rohivarshini_saravanan_29/normalization-3km3</link>
      <guid>https://dev.to/rohivarshini_saravanan_29/normalization-3km3</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;What is Normalization?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Normalization is the process of organizing data in a database to reduce redundancy (repeated data) and improve data integrity (accuracy and consistency).&lt;/p&gt;

&lt;p&gt;It divides a large, complex table into smaller, related tables and links them using foreign keys.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Why Normalization is Needed&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;To avoid data duplication&lt;/li&gt;
&lt;li&gt;To ensure data consistency&lt;/li&gt;
&lt;li&gt;To make data updates easier&lt;/li&gt;
&lt;li&gt;To save storage space&lt;/li&gt;
&lt;li&gt;To improve query performance&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Types of Normal Forms&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;First Normal Form (1NF)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Each column contains atomic (single) values.&lt;/li&gt;
&lt;li&gt;No repeating groups or arrays.&lt;/li&gt;
&lt;li&gt;Each record should be unique (use a primary key).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Second Normal Form (2NF)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Table must be in 1NF.&lt;/li&gt;
&lt;li&gt;No partial dependency: non-key columns must depend on the entire primary key, not part of it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Third Normal Form (3NF)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Table must be in 2NF.&lt;/li&gt;
&lt;li&gt;No transitive dependency: non-key attributes shouldn’t depend on other non-key attributes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;BCNF (Boyce-Codd Normal Form)&lt;/strong&gt;&lt;br&gt;
A stronger version of 3NF; every determinant must be a candidate key.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4NF (Fourth Normal Form)&lt;/strong&gt;&lt;br&gt;
Removes multi-valued dependencies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5NF (Fifth Normal Form)&lt;/strong&gt;&lt;br&gt;
Deals with join dependencies — ensures data reconstruction without redundancy.&lt;/p&gt;

&lt;p&gt;We shall use the following data as the starting point:&lt;/p&gt;

&lt;p&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%2Fpmszdsggeboatyhmvv2h.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%2Fpmszdsggeboatyhmvv2h.png" alt=" " width="800" height="215"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Identify anomalies (insertion, update, deletion) in this table.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🔸 Insertion Anomaly&lt;/p&gt;

&lt;p&gt;We can’t add a new course until at least one student registers for it, because all course data is mixed with student data.&lt;/p&gt;

&lt;p&gt;e.g., Can’t add a new course C104 – ML – Dr. Sharma without a student.&lt;/p&gt;

&lt;p&gt;🔸 Update Anomaly&lt;/p&gt;

&lt;p&gt;If an instructor’s phone number changes, it must be updated in multiple rows.&lt;/p&gt;

&lt;p&gt;e.g., Dr. Kumar’s phone number appears twice.&lt;/p&gt;

&lt;p&gt;🔸 Deletion Anomaly&lt;/p&gt;

&lt;p&gt;If all students drop DBMS, deleting those rows also deletes Dr. Kumar and the course DBMS information.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Convert the table to 1NF and write the SQL CREATE TABLE statement for it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;✅ The table already satisfies 1NF because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;All values are atomic.&lt;/li&gt;
&lt;li&gt;Each row is unique (based on StudentID + CourseID).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We’ll explicitly define a composite primary key (StudentID, CourseID).&lt;/p&gt;

&lt;p&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%2Fn4vuwrec70v523gh4vn1.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%2Fn4vuwrec70v523gh4vn1.png" alt=" " width="800" height="492"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Convert the table to 2NF and write SQL CREATE TABLE statements for the resulting tables, including primary keys.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In the current table:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;StudentName depends only on StudentID&lt;/li&gt;
&lt;li&gt;CourseName, Instructor, and InstructorPhone depend only on CourseID&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So we separate Student and Course information.&lt;/p&gt;

&lt;p&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%2F2s03vx3vydx0mnoypws6.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%2F2s03vx3vydx0mnoypws6.png" alt=" " width="800" height="517"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&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%2F7k1jwb76d7i9ukm8q3fb.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%2F7k1jwb76d7i9ukm8q3fb.png" alt=" " width="794" height="519"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&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%2Fq8tdu84gnc03ilrpqv42.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%2Fq8tdu84gnc03ilrpqv42.png" alt=" " width="786" height="511"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Convert the table to 3NF and write SQL CREATE TABLE statements, including foreign keys.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here, in Courses, InstructorPhone depends on Instructor, not on CourseID.&lt;/p&gt;

&lt;p&gt;So we separate instructor details into a new table.&lt;/p&gt;

&lt;p&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%2Fuinwc9zh26s5hrp3h3tg.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%2Fuinwc9zh26s5hrp3h3tg.png" alt=" " width="793" height="502"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&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%2Fhekgp0qk53z6w4q9gr6i.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%2Fhekgp0qk53z6w4q9gr6i.png" alt=" " width="790" height="511"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&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%2Fan2vgvcr3nda2g8nlfm6.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%2Fan2vgvcr3nda2g8nlfm6.png" alt=" " width="800" height="499"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&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%2Fl54u2zjp4v2kzl2dftcb.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%2Fl54u2zjp4v2kzl2dftcb.png" alt=" " width="782" height="523"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Insert the sample data into the normalized tables using INSERT INTO statements.&lt;/strong&gt;&lt;/p&gt;

&lt;p&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%2Fnigetezwywazbubp3a8s.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%2Fnigetezwywazbubp3a8s.png" alt=" " width="784" height="493"&gt;&lt;/a&gt;&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%2F4jjdrvukzrzzjnssebiy.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%2F4jjdrvukzrzzjnssebiy.png" alt=" " width="774" height="514"&gt;&lt;/a&gt;&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%2Fy0nkx4bra8y4k92flbrz.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%2Fy0nkx4bra8y4k92flbrz.png" alt=" " width="793" height="527"&gt;&lt;/a&gt;&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%2F0rzcdjr5rxsf7p1mkw4q.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%2F0rzcdjr5rxsf7p1mkw4q.png" alt=" " width="800" height="549"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Write a query to list all students along with their courses and instructor names using JOINs.&lt;/strong&gt;&lt;/p&gt;

&lt;p&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%2Fn2e1etffhb2b0l4pp1pj.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%2Fn2e1etffhb2b0l4pp1pj.png" alt=" " width="800" height="560"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>computerscience</category>
      <category>database</category>
    </item>
    <item>
      <title>SQL Queries : College Student &amp; Course Management System</title>
      <dc:creator>Rohivarshini Saravanan</dc:creator>
      <pubDate>Thu, 21 Aug 2025 08:15:10 +0000</pubDate>
      <link>https://dev.to/rohivarshini_saravanan_29/sql-queries-college-student-course-management-system-9f</link>
      <guid>https://dev.to/rohivarshini_saravanan_29/sql-queries-college-student-course-management-system-9f</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;Introduction&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;In today’s digital era, databases play a crucial role in managing and organizing information efficiently. SQL (Structured Query Language) is the backbone of relational databases, enabling us to create, modify, and retrieve data in a structured way.&lt;/p&gt;

&lt;p&gt;This blog demonstrates a College Student &amp;amp; Course Management System using Oracle LiveSQL. Through a set of 10 SQL tasks — including DDL, DML, ALTER, constraints, functions, aggregate operations, JOINs, GROUP BY, views, and stored procedures — we will explore how to design and query relational databases effectively.Each query is explained with its purpose, making it easy for beginners to learn and practice SQL.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Use Case&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Student table&lt;/strong&gt;&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;&lt;strong&gt;Courses table&lt;/strong&gt;&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;&lt;strong&gt;Enrollments table (Many-to-Many relationship)&lt;/strong&gt;&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;h2&gt;
  
  
  &lt;strong&gt;1. DDL – Create Faculty Table&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&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;&lt;strong&gt;DDL (Data Definition Language)&lt;/strong&gt; commands are used to &lt;strong&gt;define and manage database objects&lt;/strong&gt; such as tables, views, and indexes.&lt;/p&gt;

&lt;p&gt;Creates a new table Faculty with FacultyID as the primary key, FacultyName as NOT NULL, and Email as unique.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;2. DML – Insert 3 Students&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;INSERT INTO Students (StudentID, Name, Dept, DOB, Email)&lt;br&gt;
VALUES (1, 'Amit Sharma', 'Computer Science', TO_DATE('2002-05-12','YYYY-MM-DD'), '&lt;a href="mailto:amit@college.edu"&gt;amit@college.edu&lt;/a&gt;');&lt;/p&gt;

&lt;p&gt;INSERT INTO Students (StudentID, Name, Dept, DOB, Email)&lt;br&gt;
VALUES (2, 'Priya Verma', 'Electronics', TO_DATE('2001-08-23','YYYY-MM-DD'), '&lt;a href="mailto:priya@college.edu"&gt;priya@college.edu&lt;/a&gt;');&lt;/p&gt;

&lt;p&gt;INSERT INTO Students (StudentID, Name, Dept, DOB, Email)&lt;br&gt;
VALUES (3, 'Rahul Mehta', 'Mechanical', TO_DATE('2000-11-05','YYYY-MM-DD'), '&lt;a href="mailto:rahul@college.edu"&gt;rahul@college.edu&lt;/a&gt;');&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DML (Data Manipulation Language)&lt;/strong&gt; is used to &lt;strong&gt;insert, update, delete, and query records&lt;/strong&gt; in a database.&lt;/p&gt;

&lt;p&gt;Inserts 3 student records into the Students table with different departments.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;3. ALTER TABLE – Add Phone Number&lt;/strong&gt;
&lt;/h2&gt;

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

&lt;p&gt;&lt;strong&gt;ALTER&lt;/strong&gt; is used to &lt;strong&gt;modify an existing table structure&lt;/strong&gt;, such as adding or deleting columns, or changing constraints.&lt;/p&gt;

&lt;p&gt;Adds a new column PhoneNo to the Students table to store 10-digit phone numbers.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;4. Defining Constraints – Limit Credits (1 to 5)&lt;/strong&gt;
&lt;/h2&gt;

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

&lt;p&gt;&lt;strong&gt;Constraints&lt;/strong&gt; ensure data integrity by &lt;strong&gt;restricting the values&lt;/strong&gt; allowed in a column.&lt;/p&gt;

&lt;p&gt;Ensures the Credits column in the Courses table only accepts values between 1 and 5.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;5. SELECT with Functions – Uppercase &amp;amp; Email Length&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;SELECT Name,&lt;br&gt;
       UPPER(Name) AS UpperCase_Name,&lt;br&gt;
       LENGTH(Email) AS Email_Length&lt;br&gt;
FROM Students;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SQL Functions&lt;/strong&gt; help in &lt;strong&gt;manipulating and formatting data&lt;/strong&gt; during queries.&lt;/p&gt;

&lt;p&gt;Displays each student’s name, their name in uppercase, and the length of their email address.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;6. Aggregate Functions – Avg Credits &amp;amp; Total Students&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;SELECT AVG(Credits) AS Avg_Credits&lt;br&gt;
FROM Courses;&lt;/p&gt;

&lt;p&gt;SELECT COUNT(*) AS Total_Students&lt;br&gt;
FROM Students;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Aggregate functions&lt;/strong&gt; perform &lt;strong&gt;calculations on multiple rows&lt;/strong&gt; and return a single value.&lt;/p&gt;

&lt;p&gt;Finds the average number of credits across all courses and the total number of students.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;7. JOIN Operation – Student with Courses&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;SELECT s.Name AS Student_Name,&lt;br&gt;
       c.CourseName,&lt;br&gt;
       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 e.CourseID = c.CourseID;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;JOIN&lt;/strong&gt; is used to &lt;strong&gt;combine rows from multiple tables&lt;/strong&gt; based on &lt;strong&gt;related columns.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Shows the list of students along with the courses they are enrolled in and their grades.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;8. GROUP BY with HAVING – Students per Department&lt;/strong&gt;
&lt;/h2&gt;

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

&lt;p&gt;&lt;strong&gt;GROUP BY&lt;/strong&gt; groups rows with the &lt;strong&gt;same values&lt;/strong&gt;, and HAVING filters groups based on &lt;strong&gt;conditions.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Groups students by department and displays only departments having more than 1 student.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;9. View – StudentCoursesView&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;CREATE OR REPLACE VIEW StudentCoursesView AS&lt;br&gt;
SELECT s.Name AS StudentName,&lt;br&gt;
       c.CourseName,&lt;br&gt;
       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 e.CourseID = c.CourseID;&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;View&lt;/strong&gt; is a &lt;strong&gt;virtual table&lt;/strong&gt; created from a SQL query that &lt;strong&gt;simplifies complex queries.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Creates a view that shows student names, their enrolled courses, and grades.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;10. Stored Procedure – UpdateGrade&lt;/strong&gt;
&lt;/h2&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;/p&gt;

&lt;p&gt;A &lt;strong&gt;Stored Procedure&lt;/strong&gt; is a set of &lt;strong&gt;SQL statements&lt;/strong&gt; stored in the database that can be &lt;strong&gt;executed when needed.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This procedure updates a student’s grade in the Enrollments table when given StudentID, CourseID, and the new grade.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Conclusion&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;This project shows how SQL commands like &lt;strong&gt;DDL, DML, ALTER, constraints, functions, joins, group by, views, and stored procedures&lt;/strong&gt; work together to build and manage a College Student &amp;amp; Course Management System. By practicing these queries in Oracle LiveSQL, beginners can easily understand database design, data handling, and querying for real-world applications.&lt;/p&gt;

&lt;p&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%2Fq8s00lujswf8htbjpm61.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%2Fq8s00lujswf8htbjpm61.png" alt=" " width="800" height="329"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&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%2F7dc0nnd531bgewk5j12a.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%2F7dc0nnd531bgewk5j12a.png" alt=" " width="800" height="302"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&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%2Fc2we7ce0s6v3nt9skzsn.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%2Fc2we7ce0s6v3nt9skzsn.png" alt=" " width="800" height="326"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&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%2Ffdq2v06pp3cstefk2xa2.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%2Ffdq2v06pp3cstefk2xa2.png" alt=" " width="800" height="327"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&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%2F5d7ztdpk52tkh1r990a9.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%2F5d7ztdpk52tkh1r990a9.png" alt=" " width="800" height="331"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&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%2F5vl7qic0jogoqmxyqht3.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%2F5vl7qic0jogoqmxyqht3.png" alt=" " width="800" height="331"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&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%2Fa1bjd5u25e3fap6x6laz.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%2Fa1bjd5u25e3fap6x6laz.png" alt=" " width="800" height="329"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&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%2Fddpwcwy3df7esik4sac2.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%2Fddpwcwy3df7esik4sac2.png" alt=" " width="800" height="332"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&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%2Faofdyu012c5tnle2z411.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%2Faofdyu012c5tnle2z411.png" alt=" " width="800" height="327"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&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%2F5st2iutq8yzljdvvvd5s.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%2F5st2iutq8yzljdvvvd5s.png" alt=" " width="800" height="330"&gt;&lt;/a&gt;&lt;/p&gt;

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