<?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: PRIAN S S 24CB042</title>
    <description>The latest articles on DEV Community by PRIAN S S 24CB042 (@prian_ss24cb042_1006e0f).</description>
    <link>https://dev.to/prian_ss24cb042_1006e0f</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%2F3449229%2Ff18661f8-93ba-4647-a129-023ee5f70988.png</url>
      <title>DEV Community: PRIAN S S 24CB042</title>
      <link>https://dev.to/prian_ss24cb042_1006e0f</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/prian_ss24cb042_1006e0f"/>
    <language>en</language>
    <item>
      <title>💻 Mastering MongoDB CRUD Operations — A Hands-on Student Database Example 🎓</title>
      <dc:creator>PRIAN S S 24CB042</dc:creator>
      <pubDate>Wed, 08 Oct 2025 14:10:33 +0000</pubDate>
      <link>https://dev.to/prian_ss24cb042_1006e0f/mastering-mongodb-crud-operations-a-hands-on-student-database-example-1m9k</link>
      <guid>https://dev.to/prian_ss24cb042_1006e0f/mastering-mongodb-crud-operations-a-hands-on-student-database-example-1m9k</guid>
      <description>&lt;h2&gt;
  
  
  🔰 Introduction:
&lt;/h2&gt;

&lt;p&gt;MongoDB is one of the most popular NoSQL databases used by developers today for building modern, scalable applications 🚀.&lt;/p&gt;

&lt;p&gt;Unlike traditional relational databases, MongoDB stores data in flexible JSON-like documents, making it super easy to handle real-world data without worrying about rigid table structures 📄.&lt;/p&gt;

&lt;p&gt;In this blog, I’ll walk you through performing CRUD operations (Create, Read, Update, Delete) in MongoDB using a simple example — a college student database 🧑‍🎓&lt;/p&gt;

&lt;p&gt;We’ll:&lt;br&gt;
✅ Insert student details&lt;br&gt;
✅ Query records&lt;br&gt;
✅ Update academic information&lt;br&gt;
✅ Delete records&lt;/p&gt;

&lt;p&gt;All of this will be done directly on a MongoDB Atlas Cluster (cloud-based MongoDB) ☁️.&lt;/p&gt;

&lt;p&gt;Along the way, I’ll include screenshots of my Atlas dashboard and query results so you can follow along visually 👀.&lt;/p&gt;

&lt;h2&gt;
  
  
  🎯 Outcome:
&lt;/h2&gt;

&lt;p&gt;By the end of this blog, you’ll learn how to:&lt;/p&gt;

&lt;p&gt;✨ Insert multiple documents into a collection&lt;br&gt;
✨ Read and filter records using queries&lt;br&gt;
✨ Update single and multiple documents&lt;br&gt;
✨ Delete documents based on conditions&lt;br&gt;
✨ Understand how CRUD fits into real-world applications&lt;/p&gt;

&lt;h2&gt;
  
  
  ⚙️ Setup: Creating a Cluster
&lt;/h2&gt;

&lt;p&gt;1️⃣ Create a free MongoDB Atlas account&lt;br&gt;
2️⃣ Create a cluster and a database called collegeDB&lt;br&gt;
3️⃣ Inside it, create a collection named students&lt;/p&gt;

&lt;h2&gt;
  
  
  🧩 CREATE (Insert):
&lt;/h2&gt;

&lt;p&gt;Let’s begin by inserting student records into our collection.&lt;br&gt;
Each student will be represented as a separate document in the students collection.&lt;/p&gt;

&lt;p&gt;{&lt;br&gt;
  student_id: "S001",&lt;br&gt;
  name: "PRIAN",&lt;br&gt;
  age: 20,&lt;br&gt;
  department: "CSBS",&lt;br&gt;
  year: 2,&lt;br&gt;
  cgpa: 9&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;{&lt;br&gt;
  student_id: "S002",&lt;br&gt;
  name: "Santhosh",&lt;br&gt;
  age: 19,&lt;br&gt;
  department: "CSE",&lt;br&gt;
  year: 3,&lt;br&gt;
  cgpa: 8&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;{&lt;br&gt;
  student_id: "S003",&lt;br&gt;
  name: "SUGESH",&lt;br&gt;
  age: 20,&lt;br&gt;
  department: "EEE",&lt;br&gt;
  year: 4,&lt;br&gt;
  cgpa: 9&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;{&lt;br&gt;
  student_id: "S004",&lt;br&gt;
  name: "BOOPATHY",&lt;br&gt;
  age: 19,&lt;br&gt;
  department: "CSBS",&lt;br&gt;
  year: 1,&lt;br&gt;
  cgpa: 9.3&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;{&lt;br&gt;
  student_id: "S005",&lt;br&gt;
  name: "RAKSHANTH",&lt;br&gt;
  age: 20,&lt;br&gt;
  department: "CIVIL",&lt;br&gt;
  year: 2,&lt;br&gt;
  cgpa: 6.8&lt;br&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%2F6k0qvwlp0ipxqz35pcsg.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%2F6k0qvwlp0ipxqz35pcsg.jpg" alt=" " width="800" height="427"&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%2Fmchtty6f8jpfho5u1893.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%2Fmchtty6f8jpfho5u1893.jpg" alt=" " width="800" height="448"&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%2Frpf18k77vku0h18j1klw.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%2Frpf18k77vku0h18j1klw.jpg" alt=" " width="800" height="448"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🔍 READ (Query):
&lt;/h2&gt;

&lt;p&gt;Let’s now retrieve and filter student data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;📋 Display all student records:&lt;/strong&gt;&lt;br&gt;
db.students.find({})&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;📈 Find all students with CGPA &amp;gt; 8:&lt;/strong&gt;&lt;br&gt;
db.students.find({ cgpa: { $gt: 8 } })&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%2Fnv6xx9dd4w6lf427pcnk.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%2Fnv6xx9dd4w6lf427pcnk.jpg" alt=" " width="800" height="449"&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%2Fbhcunsp6a421cx70to6z.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%2Fbhcunsp6a421cx70to6z.jpg" alt=" " width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  💡 Find students belonging to the Computer Science department:
&lt;/h2&gt;

&lt;p&gt;db.students.find({ department: "CSE" })&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%2F08b0py8qscdnt5qjim1x.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%2F08b0py8qscdnt5qjim1x.jpg" alt=" " width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  ✏️ UPDATE:
&lt;/h2&gt;

&lt;p&gt;Let’s modify existing records in our collection.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Update CGPA of a specific student:&lt;/strong&gt;&lt;br&gt;
db.students.updateOne(&lt;br&gt;
  { student_id: "S005" },&lt;br&gt;
  { $set: { cgpa:7.5}&lt;br&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%2Futqludzgies6d5y83g1a.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%2Futqludzgies6d5y83g1a.jpg" alt=" " width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Increase the year of study for all 3rd-year students by 1:&lt;br&gt;
db.students.updateMany(&lt;br&gt;
  { year: 3 },&lt;br&gt;
  { $inc: { year: 1 } }&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%2Fyie1qdb6h2m5m6u3b02q.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%2Fyie1qdb6h2m5m6u3b02q.jpg" alt=" " width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  ❌ DELETE:
&lt;/h2&gt;

&lt;p&gt;Time to clean up some records&lt;br&gt;
&lt;strong&gt;🗑️ Delete one student by student_id:&lt;/strong&gt;&lt;br&gt;
db.students.deleteOne({ student_id: "S004" })&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%2Ftpsghppx061z03y6ft6r.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%2Ftpsghppx061z03y6ft6r.jpg" alt=" " width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🗑️ Delete all students with CGPA &amp;lt; 7.5:&lt;/strong&gt;&lt;br&gt;
db.students.deleteMany({ 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%2Fidvzqwkn17k6h3hvm1og.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%2Fidvzqwkn17k6h3hvm1og.jpg" alt=" " width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🏁 Conclusion
&lt;/h2&gt;

&lt;p&gt;In this blog, we explored CRUD operations in MongoDB using a practical student database example.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We learned how to:&lt;/strong&gt;&lt;br&gt;
🔸 Insert student documents(C)&lt;br&gt;
🔸 Query data with filters(R)&lt;br&gt;
🔸 Update specific or multiple records(U)&lt;br&gt;
🔸 Delete unwanted entries(D)&lt;/p&gt;

&lt;p&gt;CRUD forms the foundation of every real-world application, whether managing users, products, or students 👨‍💻.&lt;/p&gt;

&lt;p&gt;This step-by-step guide helped me understand how MongoDB handles data dynamically and efficiently, especially in academic and enterprise systems.&lt;/p&gt;

&lt;p&gt;A huge thanks 🙏 to &lt;a class="mentioned-user" href="https://dev.to/santhoshnc"&gt;@santhoshnc&lt;/a&gt;  sir for his constant guidance and motivation throughout this learning journey. 🌟&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>beginners</category>
      <category>career</category>
    </item>
    <item>
      <title>💾 Transactions, Deadlocks &amp; Log-Based Recovery in SQL</title>
      <dc:creator>PRIAN S S 24CB042</dc:creator>
      <pubDate>Sat, 04 Oct 2025 14:32:09 +0000</pubDate>
      <link>https://dev.to/prian_ss24cb042_1006e0f/transactions-deadlocks-log-based-recovery-in-sql-1a24</link>
      <guid>https://dev.to/prian_ss24cb042_1006e0f/transactions-deadlocks-log-based-recovery-in-sql-1a24</guid>
      <description>&lt;p&gt;Database management systems ensure data consistency and reliability even during failures. Three major concepts that demonstrate this reliability are Transactions, Deadlocks, and Log-Based Recovery. Let’s explore each one with practical SQ&lt;/p&gt;

&lt;h2&gt;
  
  
  🧱 Schema Setup
&lt;/h2&gt;

&lt;p&gt;We’ll start with a simple Accounts table:&lt;br&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;This table will be used throughout the examples.&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%2Fyawxyo3t00zs4zfgssrj.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%2Fyawxyo3t00zs4zfgssrj.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  1️⃣ Transaction – Atomicity &amp;amp; Rollback
&lt;/h2&gt;

&lt;p&gt;A transaction is a set of SQL operations that are executed as a single unit.&lt;br&gt;
The key property here is Atomicity — meaning all operations must succeed or none at all.&lt;/p&gt;

&lt;p&gt;Let’s simulate a money transfer between Alice and Bob.&lt;/p&gt;

&lt;p&gt;START TRANSACTION;&lt;/p&gt;

&lt;p&gt;UPDATE Accounts&lt;br&gt;
SET balance = balance - 500&lt;br&gt;
WHERE name = 'Alice';&lt;/p&gt;

&lt;p&gt;UPDATE Accounts&lt;br&gt;
SET balance = balance + 500&lt;br&gt;
WHERE name = 'Bob';&lt;/p&gt;

&lt;p&gt;SELECT * FROM Accounts;&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%2Fmf2t9p92hnayuxake24s.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%2Fmf2t9p92hnayuxake24s.png" alt=" " width="433" height="322"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2️⃣ Deadlock Simulation
&lt;/h2&gt;

&lt;p&gt;A deadlock occurs when two transactions hold locks that the other needs.&lt;br&gt;
Let’s simulate it using two sessions in MySQL.&lt;/p&gt;

&lt;h2&gt;
  
  
  🪜 Session 1
&lt;/h2&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;&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%2Fg1ei0vv03m3u7olomv8c.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%2Fg1ei0vv03m3u7olomv8c.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;br&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;h2&gt;
  
  
  OUTPUT:
&lt;/h2&gt;

&lt;p&gt;ERROR 1213 (40001): Deadlock found when trying to get lock; try restarting transaction&lt;/p&gt;

&lt;p&gt;✅ The DBMS automatically detects and resolves the deadlock by rolling back one transaction.&lt;/p&gt;

&lt;h2&gt;
  
  
  3️⃣ Log-Based Recovery
&lt;/h2&gt;

&lt;p&gt;Databases maintain log files (Binary Logs or WAL) to record all changes.&lt;br&gt;
Let’s see how rollback is logged internally.&lt;br&gt;
START TRANSACTION;&lt;/p&gt;

&lt;p&gt;UPDATE Accounts&lt;br&gt;
SET balance = balance + 500&lt;br&gt;
WHERE name = 'Charlie';&lt;/p&gt;

&lt;p&gt;SELECT * FROM Accounts;&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%2Fby4tb7lzxouc63pj5dux.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%2Fby4tb7lzxouc63pj5dux.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Now rollback:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;ROLLBACK;&lt;/p&gt;

&lt;p&gt;SELECT * FROM Accounts;&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%2F0xkm10ex2ij2e578eoq1.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%2F0xkm10ex2ij2e578eoq1.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
✅ The rollback is recorded in MySQL’s binary log or PostgreSQL’s WAL, ensuring that even after a crash, the database can undo incomplete transactions and redo committed ones.&lt;/p&gt;

</description>
      <category>database</category>
      <category>architecture</category>
      <category>tutorial</category>
      <category>sql</category>
    </item>
    <item>
      <title>🚀 Indexing, Hashing &amp; Query Optimization in SQL (with Examples)</title>
      <dc:creator>PRIAN S S 24CB042</dc:creator>
      <pubDate>Sat, 04 Oct 2025 05:37:14 +0000</pubDate>
      <link>https://dev.to/prian_ss24cb042_1006e0f/indexing-hashing-query-optimization-in-sql-with-examples-9ik</link>
      <guid>https://dev.to/prian_ss24cb042_1006e0f/indexing-hashing-query-optimization-in-sql-with-examples-9ik</guid>
      <description>&lt;p&gt;When working with databases, query performance is everything. Indexing and hashing help speed up data retrieval dramatically, especially when working with large tables.&lt;br&gt;
&lt;strong&gt;In this blog, we’ll explore:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;B-Tree Indexing&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;B+ Tree Indexing (conceptually, in practice it’s B-Tree)&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Hash Indexing&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Query optimization examples&lt;/strong&gt;&lt;br&gt;
We’ll use a sample Students table with 20+ records for demonstration.&lt;/p&gt;

&lt;h2&gt;
  
  
  📌 Step 1: Create the Students Table
&lt;/h2&gt;

&lt;p&gt;CREATE TABLE Students (&lt;br&gt;
    roll_no INT PRIMARY KEY,&lt;br&gt;
    name VARCHAR(50),&lt;br&gt;
    dept VARCHAR(10),&lt;br&gt;
    cgpa DECIMAL(3,2)&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%2Fphxr2bf05qypbc90yd6n.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%2Fphxr2bf05qypbc90yd6n.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  📌 Step 2: Insert Sample Records
&lt;/h2&gt;

&lt;p&gt;INSERT INTO Students (roll_no, name, dept, cgpa) VALUES&lt;br&gt;
(101, 'Aarav', 'CSE', 8.5),&lt;br&gt;
(102, 'Diya', 'ECE', 7.9),&lt;br&gt;
(103, 'Rahul', 'MECH', 6.8),&lt;br&gt;
(104, 'Sneha', 'CSE', 8.9),&lt;br&gt;
(105, 'Karthik', 'EEE', 7.2),&lt;br&gt;
(106, 'Meera', 'CSBS', 9.1),&lt;br&gt;
(107, 'Arjun', 'CSE', 8.0),&lt;br&gt;
(108, 'Nisha', 'IT', 7.5),&lt;br&gt;
(109, 'Vikram', 'CSBS', 8.7),&lt;br&gt;
(110, 'Priya', 'ECE', 9.2),&lt;br&gt;
(111, 'Varun', 'MECH', 7.0),&lt;br&gt;
(112, 'Pooja', 'CSE', 8.6),&lt;br&gt;
(113, 'Rohit', 'EEE', 6.9),&lt;br&gt;
(114, 'Aditi', 'CSBS', 8.3),&lt;br&gt;
(115, 'Suresh', 'IT', 7.8),&lt;br&gt;
(116, 'Ishita', 'CSE', 9.0),&lt;br&gt;
(117, 'Manoj', 'ECE', 6.7),&lt;br&gt;
(118, 'Ananya', 'CSBS', 8.4),&lt;br&gt;
(119, 'Deepak', 'MECH', 7.1),&lt;br&gt;
(120, 'Krishna', 'EEE', 8.2);&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%2Fde5lk5hdi65u28fao2eh.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%2Fde5lk5hdi65u28fao2eh.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
✅ We now have enough data to work with indexing.&lt;/p&gt;

&lt;h2&gt;
  
  
  📌 Step 3: B-Tree Index on roll_no
&lt;/h2&gt;

&lt;p&gt;B-Trees are the default index type in most RDBMS (MySQL, PostgreSQL). They are great for exact lookups on primary key columns.&lt;/p&gt;

&lt;p&gt;CREATE INDEX idx_rollno ON Students (roll_no);&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Query with Index:&lt;/strong&gt;&lt;br&gt;
SELECT * &lt;br&gt;
FROM Students&lt;br&gt;
WHERE roll_no = 110;&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%2F3volzo0j48xpfidvz9bx.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%2F3volzo0j48xpfidvz9bx.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
👉 This efficiently returns all students with CGPA greater than 8.0.&lt;/p&gt;

&lt;h2&gt;
  
  
  📌 Step 4: B+ Tree Index on cgpa
&lt;/h2&gt;

&lt;p&gt;In practice, B+ Trees are also implemented as B-Trees in MySQL/PostgreSQL. They are excellent for range queries.&lt;br&gt;
CREATE INDEX idx_cgpa ON Students (cgpa);&lt;br&gt;
&lt;strong&gt;Query with Index:&lt;/strong&gt;&lt;br&gt;
SELECT * &lt;br&gt;
FROM Students&lt;br&gt;
WHERE cgpa &amp;gt; 8.0;&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%2Fx1en94r34it14gidqvu6.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%2Fx1en94r34it14gidqvu6.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  📌 Step 5: Hash Index on dept
&lt;/h2&gt;

&lt;p&gt;Hash indexes are best for equality-based queries (e.g., dept = 'CSBS').&lt;br&gt;
PostgreSQL&lt;br&gt;
CREATE INDEX idx_dept ON Students USING HASH (dept);&lt;br&gt;
&lt;strong&gt;Query with Index:&lt;/strong&gt;&lt;br&gt;
SELECT * &lt;br&gt;
FROM Students&lt;br&gt;
WHERE dept = 'CSBS';&lt;br&gt;
👉 This fetches all students in the CSBS department (Meera, Vikram, Aditi, Ananya).&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%2Ftex99rqb3gxp03qiu8ck.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%2Ftex99rqb3gxp03qiu8ck.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  📊 Final Thoughts
&lt;/h2&gt;

&lt;p&gt;B-Tree Index → Best for unique lookups (like roll numbers).&lt;br&gt;
B+ Tree Index → Great for range queries (cgpa &amp;gt; 8).&lt;br&gt;
Hash Index → Ideal for equality checks (dept = 'CSBS').&lt;/p&gt;

&lt;p&gt;By applying the right indexing strategy, you can optimize query performance significantly.&lt;/p&gt;

</description>
      <category>database</category>
      <category>performance</category>
      <category>algorithms</category>
      <category>sql</category>
    </item>
    <item>
      <title>🔥ACID Properties with SQL Transactions</title>
      <dc:creator>PRIAN S S 24CB042</dc:creator>
      <pubDate>Fri, 03 Oct 2025 08:53:14 +0000</pubDate>
      <link>https://dev.to/prian_ss24cb042_1006e0f/acid-properties-with-sql-transactions-39l</link>
      <guid>https://dev.to/prian_ss24cb042_1006e0f/acid-properties-with-sql-transactions-39l</guid>
      <description>&lt;p&gt;When working with databases, ACID properties are the foundation that ensures data reliability and consistency.&lt;br&gt;
In this blog, we’ll explore each property with SQL examples using a simple Accounts table.&lt;/p&gt;

&lt;h2&gt;
  
  
  🏦 Step 1: Create Table and Insert Sample Data
&lt;/h2&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 (101, 'Alice', 5000);&lt;br&gt;
INSERT INTO Accounts VALUES (102, 'Bob', 3000);&lt;br&gt;
INSERT INTO Accounts VALUES (103, 'Charlie', 7000);&lt;/p&gt;

&lt;p&gt;SELECT * FROM Accounts;&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%2Fcujbxrnxlk9u4kuol4ac.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%2Fcujbxrnxlk9u4kuol4ac.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🅰 Atomicity
&lt;/h2&gt;

&lt;p&gt;Definition: Atomicity ensures a transaction is all or nothing. If one part fails, the whole transaction is rolled back.&lt;br&gt;
Example: Transfer money from Alice → Bob, but rollback before completion.&lt;br&gt;
BEGIN TRANSACTION;&lt;/p&gt;

&lt;p&gt;UPDATE Accounts SET balance = balance - 1000 WHERE acc_no = 101;&lt;/p&gt;

&lt;p&gt;ROLLBACK;&lt;/p&gt;

&lt;p&gt;SELECT * FROM Accounts;&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%2Flelju4dy7y2ad0sgtiab.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%2Flelju4dy7y2ad0sgtiab.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🅲 Consistency
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Definition:&lt;/strong&gt; Consistency ensures that data follows defined rules and constraints.&lt;br&gt;
Example: Prevent negative balance using a CHECK constraint.&lt;/p&gt;

&lt;p&gt;ALTER TABLE Accounts&lt;br&gt;
ADD CONSTRAINT chk_balance CHECK (balance &amp;gt;= 0);&lt;br&gt;
INSERT INTO Accounts VALUES (104, 'David', -500);&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%2Fcp8id7oevcol9z5d6tai.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%2Fcp8id7oevcol9z5d6tai.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🅸 Isolation
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Definition:&lt;/strong&gt; Isolation ensures that concurrent transactions do not interfere with each other.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; Run two sessions at once.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SESSION 1 :&lt;/strong&gt;&lt;br&gt;
BEGIN TRANSACTION;&lt;br&gt;
UPDATE Accounts SET balance = balance - 2000 WHERE acc_no = 103;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SESSION 2:&lt;/strong&gt;&lt;br&gt;
SELECT * FROM Accounts WHERE acc_no = 103;&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%2Fobjamsvlsyd4l8rcijl1.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%2Fobjamsvlsyd4l8rcijl1.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🅳 Durability
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Definition:&lt;/strong&gt; Durability ensures once a transaction is committed, it remains even after a system crash.&lt;/p&gt;

&lt;p&gt;BEGIN TRANSACTION;&lt;br&gt;
UPDATE Accounts SET balance = balance + 500 WHERE acc_no = 102;&lt;br&gt;
COMMIT;&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%2F5m9qeqhnpzvd6a78w3vx.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%2F5m9qeqhnpzvd6a78w3vx.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🚀 Conclusion
&lt;/h2&gt;

&lt;p&gt;*Through this demo, we saw how ACID properties guarantee:&lt;br&gt;
*Atomicity → no partial updates.&lt;br&gt;
*Consistency → rules are enforced.&lt;br&gt;
*Isolation → transactions don’t clash.&lt;br&gt;
*Durability → committed changes survive crashes.&lt;/p&gt;

&lt;p&gt;Thanks for &lt;a class="mentioned-user" href="https://dev.to/santhoshnc"&gt;@santhoshnc&lt;/a&gt; sir guiding me !!!&lt;/p&gt;

</description>
      <category>database</category>
      <category>tutorial</category>
      <category>beginners</category>
      <category>sql</category>
    </item>
    <item>
      <title>🖥️ Using Cursors &amp; Triggers in SQL: Step-by-Step Guide 🚀</title>
      <dc:creator>PRIAN S S 24CB042</dc:creator>
      <pubDate>Wed, 01 Oct 2025 15:55:23 +0000</pubDate>
      <link>https://dev.to/prian_ss24cb042_1006e0f/using-cursors-triggers-in-sql-step-by-step-guide-23jm</link>
      <guid>https://dev.to/prian_ss24cb042_1006e0f/using-cursors-triggers-in-sql-step-by-step-guide-23jm</guid>
      <description>&lt;p&gt;&lt;strong&gt;we’ll learn how to use cursors and triggers in SQL. These are powerful tools for:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🔹 Processing data row by row&lt;/p&gt;

&lt;p&gt;🔹 Automating actions on database events&lt;/p&gt;

&lt;h2&gt;
  
  
  1️⃣ Cursor: Employees with Salary &amp;gt; 50,000 💰
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;STEP 1:Create Employee Table &amp;amp; Insert Data&lt;/strong&gt;&lt;br&gt;
`CREATE TABLE Employee (&lt;br&gt;
    EmployeeID INT PRIMARY KEY,&lt;br&gt;
    EmployeeName VARCHAR(50),&lt;br&gt;
    Salary DECIMAL(10,2)&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;INSERT INTO Employee VALUES (1, 'Alice', 60000);&lt;br&gt;
INSERT INTO Employee VALUES (2, 'Bob', 45000);&lt;br&gt;
INSERT INTO Employee VALUES (3, 'Charlie', 75000);`&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%2Ftcq5ni889afjjsf95jxb.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%2Ftcq5ni889afjjsf95jxb.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Declare &amp;amp; Process the Cursor&lt;/strong&gt;&lt;br&gt;
`DECLARE @EmpName VARCHAR(50);&lt;/p&gt;

&lt;p&gt;DECLARE employee_cursor CURSOR FOR&lt;br&gt;
SELECT EmployeeName&lt;br&gt;
FROM Employee&lt;br&gt;
WHERE Salary &amp;gt; 50000;&lt;/p&gt;

&lt;p&gt;OPEN employee_cursor;&lt;/p&gt;

&lt;p&gt;FETCH NEXT FROM employee_cursor INTO @EmpName;&lt;/p&gt;

&lt;p&gt;WHILE @@FETCH_STATUS = 0&lt;br&gt;
BEGIN&lt;br&gt;
    PRINT @EmpName; -- Display employee name&lt;br&gt;
    FETCH NEXT FROM employee_cursor INTO @EmpName;&lt;br&gt;
END&lt;/p&gt;

&lt;p&gt;CLOSE employee_cursor;&lt;br&gt;
DEALLOCATE employee_cursor;`&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%2Fm5zkujh4suoi71sbxdnu.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%2Fm5zkujh4suoi71sbxdnu.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  2️⃣ Trigger: AFTER INSERT on Students Table 📝
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;A cursor allows you to iterate over query results one row at a time.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Create Employee Table &amp;amp; Insert Data&lt;/strong&gt;&lt;br&gt;
`CREATE TABLE Employee (&lt;br&gt;
    EmployeeID INT PRIMARY KEY,&lt;br&gt;
    EmployeeName VARCHAR(50),&lt;br&gt;
    Salary DECIMAL(10,2)&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;INSERT INTO Employee VALUES (1, 'Alice', 60000);&lt;br&gt;
INSERT INTO Employee VALUES (2, 'Bob', 45000);&lt;br&gt;
INSERT INTO Employee VALUES (3, 'Charlie', 75000);&lt;br&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%2Ftcq5ni889afjjsf95jxb.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%2Ftcq5ni889afjjsf95jxb.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Create AFTER INSERT Trigger&lt;/strong&gt;&lt;br&gt;
CREATE TRIGGER trg_AfterStudentInsert&lt;br&gt;
ON Students&lt;br&gt;
AFTER INSERT&lt;br&gt;
AS&lt;br&gt;
BEGIN&lt;br&gt;
    INSERT INTO Student_Audit(StudentID, Action, ActionTime)&lt;br&gt;
    SELECT StudentID, 'Registered', GETDATE()&lt;br&gt;
    FROM inserted;&lt;br&gt;
END;&lt;br&gt;
&lt;strong&gt;Step 3: Insert Sample Data &amp;amp; Test Trigger&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;INSERT INTO Students VALUES (1, 'David', 'Computer Science');
INSERT INTO Students VALUES (2, 'Emma', 'Mathematics');

SELECT * FROM Student_Audit;
&lt;/code&gt;&lt;/pre&gt;

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

&lt;h2&gt;
  
  
  ✅ Conclusion
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Cursors&lt;/strong&gt; 👉 Process query results row by row&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Triggers&lt;/strong&gt; 👉 Automatically perform actions on data events&lt;/p&gt;

&lt;h2&gt;
  
  
  💡 Real-world Use:
&lt;/h2&gt;

&lt;p&gt;Use cursors for complex row-level operations&lt;/p&gt;

&lt;p&gt;Use triggers for audit logging, notifications, and data integrity&lt;/p&gt;

&lt;p&gt;THANKY YOU &lt;a class="mentioned-user" href="https://dev.to/santhoshnc"&gt;@santhoshnc&lt;/a&gt; sir  for guiduing us and encouraging us by giving this as assignment !!!!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>🚀 Understanding Database Normalization : 1F,2F,3F With SQL Examples !!!</title>
      <dc:creator>PRIAN S S 24CB042</dc:creator>
      <pubDate>Wed, 01 Oct 2025 13:17:01 +0000</pubDate>
      <link>https://dev.to/prian_ss24cb042_1006e0f/understanding-database-normalization-1f2f3f-with-sql-examples--104o</link>
      <guid>https://dev.to/prian_ss24cb042_1006e0f/understanding-database-normalization-1f2f3f-with-sql-examples--104o</guid>
      <description>&lt;h2&gt;
  
  
  📌 Introduction:
&lt;/h2&gt;

&lt;p&gt;When working with databases, it’s common to face problems like data redundancy, inconsistencies, and loss of information. This happens when data is not structured properly.&lt;/p&gt;

&lt;p&gt;That’s where Database Normalization comes in. It’s a process of organizing data in relational databases to minimize redundancy and improve integrity.&lt;/p&gt;

&lt;p&gt;In this blog, we’ll walk through 1NF, 2NF, and 3NF, step by step, with SQL examples.&lt;/p&gt;

&lt;h2&gt;
  
  
  🏁 Process 1: Base Table
&lt;/h2&gt;

&lt;p&gt;we start with the following 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%2Fuh2md2vyq2svmg9upaw9.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%2Fuh2md2vyq2svmg9upaw9.png" alt=" " width="800" height="215"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🔎 Process 2: Anomalies in Base Table
&lt;/h2&gt;

&lt;p&gt;1.Insertion anomaly – Can’t add a new course unless a student enrolls.&lt;br&gt;
2.Update anomaly – If an instructor’s name changes, we must update multiple rows.&lt;br&gt;
3.Deletion anomaly – If the last student in a course leaves, info about that course is lost.&lt;/p&gt;

&lt;h2&gt;
  
  
  🧱 Process 3: First Normal Form (1NF)
&lt;/h2&gt;

&lt;p&gt;POINT: Remove repeating groups, ensure atomic values.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;CREATE TABLE StudentCourse (&lt;br&gt;
    StudentID INT,&lt;br&gt;
    StudentName VARCHAR(50),&lt;br&gt;
    CourseID VARCHAR(10),&lt;br&gt;
    CourseName VARCHAR(50),&lt;br&gt;
    InstructorName VARCHAR(50),&lt;br&gt;
    PRIMARY KEY (StudentID, CourseID)&lt;br&gt;
);&lt;br&gt;
&lt;/code&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%2Fwvj3rrbskfmyeb4j29fg.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%2Fwvj3rrbskfmyeb4j29fg.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
This ensures no multi-valued attributes.&lt;/p&gt;

&lt;h2&gt;
  
  
  🧱 Process 4: Second Normal Form (2NF)
&lt;/h2&gt;

&lt;p&gt;POINT: Remove partial dependencies (non-key attributes depending on part of the key).&lt;/p&gt;

&lt;p&gt;`CREATE TABLE Students (&lt;br&gt;
    StudentID INT PRIMARY KEY,&lt;br&gt;
    StudentName VARCHAR(50)&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;CREATE TABLE Courses (&lt;br&gt;
    CourseID VARCHAR(10) PRIMARY KEY,&lt;br&gt;
    CourseName VARCHAR(50),&lt;br&gt;
    InstructorName VARCHAR(50)&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;CREATE TABLE StudentCourse (&lt;br&gt;
    StudentID INT,&lt;br&gt;
    CourseID VARCHAR(10),&lt;br&gt;
    PRIMARY KEY (StudentID, CourseID),&lt;br&gt;
    FOREIGN KEY (StudentID) REFERENCES Students(StudentID),&lt;br&gt;
    FOREIGN KEY (CourseID) REFERENCES Courses(CourseID)&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%2Fhuovrzywk67vkh00vkff.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%2Fhuovrzywk67vkh00vkff.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🧱 Process 5: Third Normal Form (3NF)
&lt;/h2&gt;

&lt;p&gt;POINT: Remove transitive dependencies (non-key attributes depending on other non-keys).&lt;/p&gt;

&lt;p&gt;`CREATE TABLE Instructors (&lt;br&gt;
    InstructorID INT PRIMARY KEY,&lt;br&gt;
    InstructorName VARCHAR(50)&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;CREATE TABLE Courses (&lt;br&gt;
    CourseID VARCHAR(10) PRIMARY KEY,&lt;br&gt;
    CourseName VARCHAR(50),&lt;br&gt;
    InstructorID INT,&lt;br&gt;
    FOREIGN KEY (InstructorID) REFERENCES Instructors(InstructorID)&lt;br&gt;
);&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%2Ft5kvarinyykbwgfyvjdp.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%2Ft5kvarinyykbwgfyvjdp.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  💾 Process 6: Insert Sample Data
&lt;/h2&gt;

&lt;p&gt;`INSERT INTO Students VALUES (1, 'John'), (2, 'Alice'), (3, 'Bob');&lt;/p&gt;

&lt;p&gt;INSERT INTO Instructors VALUES (101, 'Dr. Smith'), (102, 'Dr. Miller'), (103, 'Dr. Brown');&lt;/p&gt;

&lt;p&gt;INSERT INTO Courses VALUES ('C101', 'DBMS', 101),&lt;br&gt;
                           ('C102', 'OS', 102),&lt;br&gt;
                           ('C103', 'Networks', 103);&lt;/p&gt;

&lt;p&gt;INSERT INTO StudentCourse VALUES (1, 'C101'), (1, 'C102'),&lt;br&gt;
                                 (2, 'C101'), (3, 'C103');`&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%2Fdebx3ipfhjcmdq7a6n8r.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%2Fdebx3ipfhjcmdq7a6n8r.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🔗 Process 7: Query with JOIN
&lt;/h2&gt;

&lt;p&gt;Now let’s get a list of all students along with their courses and instructors:&lt;br&gt;
&lt;code&gt;SELECT s.StudentName, c.CourseName, i.InstructorName&lt;br&gt;
FROM StudentCourse sc&lt;br&gt;
JOIN Students s ON sc.StudentID = s.StudentID&lt;br&gt;
JOIN Courses c ON sc.CourseID = c.CourseID&lt;br&gt;
JOIN Instructors i ON c.InstructorID = i.InstructorID;&lt;/code&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%2Fcaflfqkvm8vfo096qfmg.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%2Fcaflfqkvm8vfo096qfmg.png" alt=" " width="800" height="212"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🎯 Conclusion:
&lt;/h2&gt;

&lt;p&gt;Through normalization, we transformed our messy base table into well-structured, relational tables.&lt;/p&gt;

&lt;p&gt;1NF removed repeating groups.&lt;br&gt;
2NF eliminated partial dependencies.&lt;br&gt;
3NF removed transitive dependencies.&lt;br&gt;
Now our database is clean, scalable, and reliable.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Thanks &lt;a class="mentioned-user" href="https://dev.to/santhoshnc"&gt;@santhoshnc&lt;/a&gt; sir for guiding us and encouraging us!!!!&lt;br&gt;
*&lt;/em&gt;&lt;/p&gt;

</description>
      <category>database</category>
      <category>tutorial</category>
      <category>computerscience</category>
      <category>sql</category>
    </item>
    <item>
      <title>College Student &amp; Course Management System</title>
      <dc:creator>PRIAN S S 24CB042</dc:creator>
      <pubDate>Thu, 21 Aug 2025 07:02:08 +0000</pubDate>
      <link>https://dev.to/prian_ss24cb042_1006e0f/college-student-course-management-system-54kc</link>
      <guid>https://dev.to/prian_ss24cb042_1006e0f/college-student-course-management-system-54kc</guid>
      <description>&lt;p&gt;Introduction&lt;/p&gt;

&lt;p&gt;Databases play a vital role in organizing and managing information in today’s digital world. SQL (Structured Query Language) is the standard language used to interact with relational databases. With SQL, we can create tables, insert and update records, enforce rules, and extract meaningful insights from data.&lt;/p&gt;

&lt;p&gt;In this blog, we explore how SQL is applied using Students and Courses tables. We will learn how to:&lt;/p&gt;

&lt;p&gt;Create and modify tables&lt;/p&gt;

&lt;p&gt;Insert and manage records&lt;/p&gt;

&lt;p&gt;Use constraints to maintain data integrity&lt;/p&gt;

&lt;p&gt;Transform data with built-in functions&lt;/p&gt;

&lt;p&gt;Summarize data using GROUP BY&lt;/p&gt;

&lt;p&gt;Filter groups using the HAVING clause&lt;/p&gt;

&lt;p&gt;By the end, you’ll understand not only the SQL commands but also the theory behind them — giving you both practical skills and conceptual clarity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Working with Students and Courses Tables in Oracle SQL&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In this post, let’s walk through some common SQL operations using two tables: Students and Courses. We’ll cover how to insert values, alter tables, add constraints, and run useful queries to analyze data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1.Creating the Students Table&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We start by creating a table to store student details. Each student has an ID, name, department, date of birth, and email.&lt;br&gt;
For example, our Students table keeps details about learners such as their ID, name, department, date of birth, and email.&lt;br&gt;
&lt;code&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;/code&gt;&lt;br&gt;
);_&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Inserting Sample Student Records&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Next, we’ll insert a few students, each belonging to a different department.&lt;/p&gt;

&lt;p&gt;`INSERT INTO Students (StudentID, Name, Dept, DOB, Email)&lt;br&gt;
VALUES (1, 'Arun Kumar', 'Computer Science', TO_DATE('2005-03-15', 'YYYY-MM-DD'), '&lt;a href="mailto:arun.cs@example.com"&gt;arun.cs@example.com&lt;/a&gt;');&lt;/p&gt;

&lt;p&gt;INSERT INTO Students (StudentID, Name, Dept, DOB, Email)&lt;br&gt;
VALUES (2, 'Meena R', 'Electrical Engineering', TO_DATE('2004-11-22', 'YYYY-MM-DD'), '&lt;a href="mailto:meena.ee@example.com"&gt;meena.ee@example.com&lt;/a&gt;');&lt;/p&gt;

&lt;p&gt;INSERT INTO Students (StudentID, Name, Dept, DOB, Email)&lt;br&gt;
VALUES (3, 'Vignesh S', 'Mechanical Engineering', TO_DATE('2005-07-09', 'YYYY-MM-DD'), '&lt;a href="mailto:vignesh.mech@example.com"&gt;vignesh.mech@example.com&lt;/a&gt;');`&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3.Altering the Students Table&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Suppose we also want to store phone numbers. We can add a new column PhoneNo with 10 characters:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;_ALTER TABLE Students&lt;br&gt;
ADD PhoneNo VARCHAR2(10);&lt;/code&gt;&lt;br&gt;
_&lt;br&gt;
*&lt;em&gt;4. Creating the Courses Table and Adding Constraints&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
Let’s say we also have a Courses table with credits. To make sure credit values are always between 1 and 5, we add a CHECK constraint.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;_ALTER TABLE Courses&lt;br&gt;
ADD CONSTRAINT chk_credits_limit&lt;br&gt;
CHECK (Credits BETWEEN 1 AND 5);_&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Displaying Student Names in Uppercase with Email Length&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We can use SQL functions to transform and analyze data. For example:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;_SELECT &lt;br&gt;
    UPPER(Name) AS Student_Name,&lt;br&gt;
    LENGTH(Email) AS Email_Length&lt;br&gt;
FROM Students;_&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;6.Working with Course Credits&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To see all the courses with their credit values, we run:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;_SELECT CourseID, CourseName, Credits&lt;br&gt;
FROM Courses;&lt;/code&gt;&lt;br&gt;
_&lt;br&gt;
And if we want to calculate useful insights like the average credits or the total number of students, we can use:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;_SELECT &lt;br&gt;
    (SELECT AVG(Credits) FROM Courses) AS Avg_Credits,&lt;br&gt;
    (SELECT COUNT(StudentID) FROM Students) AS Total_Students&lt;br&gt;
FROM dual;_&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  GROUP BY with HAVING in SQL
&lt;/h2&gt;

&lt;p&gt;GROUP BY → Groups rows that have the same values in a column.&lt;/p&gt;

&lt;p&gt;Aggregate functions like COUNT, SUM, AVG, MAX, MIN are applied to each group.&lt;/p&gt;

&lt;p&gt;HAVING → Works like WHERE, but it filters groups instead of individual rows.&lt;br&gt;
&lt;strong&gt;1. Students Count by Department&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;_SELECT Dept, COUNT(StudentID) AS Total_Students&lt;br&gt;
FROM Students&lt;br&gt;
GROUP BY Dept;_&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

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

&lt;p&gt;Working with SQL is not just about writing queries — it is about understanding how data can be structured, managed, and analyzed effectively. Through our Students and Courses example, we saw how to:&lt;/p&gt;

&lt;p&gt;Create and modify tables to match real-world needs&lt;/p&gt;

&lt;p&gt;Insert meaningful records into the database&lt;/p&gt;

&lt;p&gt;Enforce rules with constraints to protect data integrity&lt;/p&gt;

&lt;p&gt;Transform and analyze data using built-in SQL functions&lt;/p&gt;

&lt;p&gt;Summarize information with the GROUP BY clause&lt;/p&gt;

&lt;p&gt;Apply conditions on aggregated results using the HAVING clause&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%2Fep4dq8nab8iowq10e0kz.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%2Fep4dq8nab8iowq10e0kz.png" alt=" " width="800" height="450"&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%2Fmg0m9p1of2hsrxs1ljm7.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%2Fmg0m9p1of2hsrxs1ljm7.png" alt=" " width="800" height="450"&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%2F0eb3wdfnkaf3m7oe1f1t.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%2F0eb3wdfnkaf3m7oe1f1t.jpg" alt=" " width="800" height="450"&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%2F64w916fvwrgkbau5ku09.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%2F64w916fvwrgkbau5ku09.jpg" alt=" " width="800" height="450"&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%2Fdz7r8ivqgppu2hd3dzy6.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%2Fdz7r8ivqgppu2hd3dzy6.jpg" alt=" " width="800" height="450"&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%2Fcta2tddbfvikt6ks3zrw.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%2Fcta2tddbfvikt6ks3zrw.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;THANKYOU &lt;a class="mentioned-user" href="https://dev.to/santhoshnc"&gt;@santhoshnc&lt;/a&gt; FOR GUIDING AND SUPPORTING US !!!!&lt;/p&gt;

</description>
      <category>programming</category>
      <category>webdev</category>
      <category>sql</category>
      <category>learning</category>
    </item>
  </channel>
</rss>
