<?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: SRIRAM PG</title>
    <description>The latest articles on DEV Community by SRIRAM PG (@sriram_pg_91a5c6c4af2ce74).</description>
    <link>https://dev.to/sriram_pg_91a5c6c4af2ce74</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%2F3449737%2F3bff86b8-2a34-42a0-9d36-38751967f8d5.png</url>
      <title>DEV Community: SRIRAM PG</title>
      <link>https://dev.to/sriram_pg_91a5c6c4af2ce74</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sriram_pg_91a5c6c4af2ce74"/>
    <language>en</language>
    <item>
      <title>MONGO-DB</title>
      <dc:creator>SRIRAM PG</dc:creator>
      <pubDate>Tue, 07 Oct 2025 08:39:50 +0000</pubDate>
      <link>https://dev.to/sriram_pg_91a5c6c4af2ce74/mongo-db-553n</link>
      <guid>https://dev.to/sriram_pg_91a5c6c4af2ce74/mongo-db-553n</guid>
      <description>&lt;h1&gt;
  
  
  MongoDB CRUD Operations - Student Database
&lt;/h1&gt;

&lt;p&gt;In this assignment, we explored &lt;strong&gt;MongoDB CRUD (Create, Read, Update, Delete)&lt;/strong&gt; operations using a simple &lt;code&gt;students&lt;/code&gt; collection.&lt;/p&gt;




&lt;h2&gt;
  
  
  Schema
&lt;/h2&gt;

&lt;p&gt;Each student document follows this structure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"student_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"S001"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Santhosh"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"age"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"department"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"CSBS"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"year"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"cgpa"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Tasks Performed
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🔹 Create
&lt;/h3&gt;

&lt;p&gt;Inserted 5 student records using &lt;code&gt;insertMany()&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  🔹 Read
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Display all student records&lt;/li&gt;
&lt;li&gt;Find students with CGPA &amp;gt; 8&lt;/li&gt;
&lt;li&gt;Find students from &lt;strong&gt;CSE / CSBS&lt;/strong&gt; department&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🔹 Update
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Updated CGPA of a student (&lt;code&gt;S002&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Increased year of all 3rd year students by 1&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🔹 Delete
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Deleted one student by &lt;code&gt;student_id&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Deleted all students with CGPA &amp;lt; 7.5&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Output
&lt;/h2&gt;

&lt;p&gt;Screenshots were taken from MongoDB Atlas for execution results.&lt;br&gt;
Finally, the collection was exported in &lt;strong&gt;JSON/CSV format&lt;/strong&gt; for submission.&lt;/p&gt;




&lt;p&gt;✅ This assignment gave us hands-on practice with MongoDB’s &lt;strong&gt;document model&lt;/strong&gt; and CRUD operations.&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%2F8wmjdykw3knssapvfi6n.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%2F8wmjdykw3knssapvfi6n.jpg" alt=" " width="800" height="383"&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%2Frdn6qikfdgke3n41ud7b.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%2Frdn6qikfdgke3n41ud7b.jpg" alt=" " width="800" height="384"&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%2Flkmigeyz05vcdz5jules.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%2Flkmigeyz05vcdz5jules.jpg" alt=" " width="800" height="385"&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%2Fs5av3ai96zd4nf47mica.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%2Fs5av3ai96zd4nf47mica.jpg" alt=" " width="800" height="382"&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%2Ffgme5604m1at0qakov7h.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%2Ffgme5604m1at0qakov7h.jpg" alt=" " width="800" height="384"&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%2Fqk12fchqu5dixibjosee.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%2Fqk12fchqu5dixibjosee.jpg" alt=" " width="800" height="380"&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%2Fby3yecvsi5mcjc9g1byu.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%2Fby3yecvsi5mcjc9g1byu.jpg" alt=" " width="800" height="382"&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%2Fu5gs8eol8ud26mmdwzwl.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%2Fu5gs8eol8ud26mmdwzwl.jpg" alt=" " width="800" height="380"&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%2F18zodylzphcaprqa2i22.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%2F18zodylzphcaprqa2i22.jpg" alt=" " width="800" height="380"&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%2F3z7y84ctyjeamuetpzo9.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%2F3z7y84ctyjeamuetpzo9.jpg" alt=" " width="800" height="384"&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%2Fszwqi4hsn21xk72lbq9t.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%2Fszwqi4hsn21xk72lbq9t.jpg" alt=" " width="800" height="384"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>mongodb</category>
      <category>beginners</category>
      <category>database</category>
    </item>
    <item>
      <title>Indexing, Hashing &amp; Query Optimization</title>
      <dc:creator>SRIRAM PG</dc:creator>
      <pubDate>Mon, 06 Oct 2025 13:04:10 +0000</pubDate>
      <link>https://dev.to/sriram_pg_91a5c6c4af2ce74/indexing-hashing-query-optimization-4ik9</link>
      <guid>https://dev.to/sriram_pg_91a5c6c4af2ce74/indexing-hashing-query-optimization-4ik9</guid>
      <description>&lt;p&gt;Step-1: 1. Setting Up Your Table&lt;br&gt;
First, you'll create a simple table to store student information and fill it with some data.&lt;/p&gt;

&lt;p&gt;Create a table Students: You need a table with columns for roll number (roll_no), name, department (dept), and cgpa.&lt;/p&gt;

&lt;p&gt;Insert at least 20 sample records: You'll add 20 or more rows of fake student data into this table.&lt;/p&gt;

&lt;p&gt;This gives you a dataset to work with. Without any indexes, if you search for a student, the database has to look through every single row one by one, which is slow.&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%2Fq3a7b398ujykadbsrjvr.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%2Fq3a7b398ujykadbsrjvr.jpg" alt=" " width="800" height="387"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step-2:  B-Tree Index (For Specific Lookups)&lt;br&gt;
This part shows how to speed up searches for a single, specific record.&lt;/p&gt;

&lt;p&gt;Create a B-Tree index on the roll_no column: A B-Tree index is like the index at the back of a textbook. If you want to find a specific topic (like roll_no = 110), you don't read the whole book; you look it up in the index, which tells you the exact page number (or in this case, the row's location). This is very fast for finding unique values.&lt;/p&gt;

&lt;p&gt;Execute a query to fetch the details of a student with roll_no = 110: When you run this query, the database will use the B-Tree index you just created to instantly find the student with roll_no = 110 instead of scanning the whole 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%2Fack3359teutjy7wzup9x.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%2Fack3359teutjy7wzup9x.jpg" alt=" " width="800" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step-3: B+ Tree Index (For Range-Based Searches)&lt;br&gt;
This part focuses on searches that look for a range of values.&lt;/p&gt;

&lt;p&gt;Create a B+ Tree index on the cgpa column: A B+ Tree is a special type of B-Tree where all the final data pointers are stored at the bottom level (leaf nodes) and are linked to each other. This structure makes it extremely efficient to scan through a sequence of data.&lt;/p&gt;

&lt;p&gt;Write a query to display all students with cgpa &amp;gt; 8.0: This is a range query (you're not looking for one CGPA, but all CGPAs above a certain value). The B+ Tree allows the database to quickly find the first student with a CGPA of 8.0 and then just follow the linked list to get all the other students with higher CGPAs.&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%2Fmvwnfabgajrtnyy3d63u.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%2Fmvwnfabgajrtnyy3d63u.jpg" alt=" " width="800" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step-4:  Hash Index (For Exact Matches)&lt;br&gt;
This part demonstrates an index that is super fast for finding records based on an exact value.&lt;/p&gt;

&lt;p&gt;Create a Hash index on the dept column: A Hash index works like a dictionary or hash map in programming. It takes a value (e.g., 'CSBS'), converts it into a unique code (a "hash"), and uses that code to find the data's location directly.&lt;/p&gt;

&lt;p&gt;Run a query to retrieve all students from the 'CSBS' department: This is an equality query. The hash index will instantly find all students in the 'CSBS' department. However, a hash index is not good for range queries (e.g., dept &amp;gt; 'CSBS').&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%2F9kp1107nyr76c9fcj1a8.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%2F9kp1107nyr76c9fcj1a8.jpg" alt=" " width="800" height="390"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Transactions, Deadlocks &amp; Log Based Recovery</title>
      <dc:creator>SRIRAM PG</dc:creator>
      <pubDate>Sun, 05 Oct 2025 17:12:15 +0000</pubDate>
      <link>https://dev.to/sriram_pg_91a5c6c4af2ce74/transactions-deadlocks-log-based-recovery-388h</link>
      <guid>https://dev.to/sriram_pg_91a5c6c4af2ce74/transactions-deadlocks-log-based-recovery-388h</guid>
      <description>&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;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%2Fuhxwjzliat98i7w51646.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%2Fuhxwjzliat98i7w51646.jpg" alt=" " width="800" height="386"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step-1: Atomicity &amp;amp; Rollback&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%2Foj6q9mnayvbz5vj9hnra.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%2Foj6q9mnayvbz5vj9hnra.jpg" alt=" " width="800" height="384"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step-2: Deadlock Simulation&lt;br&gt;
Session 1&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;br&gt;
Session 2&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;&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%2F563nuhgmeojfb1khrryl.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%2F563nuhgmeojfb1khrryl.jpg" alt=" " width="800" height="383"&gt;&lt;/a&gt;&lt;br&gt;
One of the sessions will show:&lt;/p&gt;

&lt;p&gt;ORA-00060: deadlock detected while waiting for resource&lt;br&gt;
Step-3: Log-Based Recovery&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%2Fb9bfn4jwczpvak6t4rl5.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%2Fb9bfn4jwczpvak6t4rl5.jpg" alt=" " width="800" height="387"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>ACID property with SQL transactions</title>
      <dc:creator>SRIRAM PG</dc:creator>
      <pubDate>Sun, 05 Oct 2025 16:22:36 +0000</pubDate>
      <link>https://dev.to/sriram_pg_91a5c6c4af2ce74/acid-property-with-sql-transactions-49j3</link>
      <guid>https://dev.to/sriram_pg_91a5c6c4af2ce74/acid-property-with-sql-transactions-49j3</guid>
      <description>&lt;p&gt;ACID stands for:&lt;/p&gt;

&lt;p&gt;A – Atomicity: Ensures that a transaction is “all or nothing.”&lt;/p&gt;

&lt;p&gt;C – Consistency: Ensures data follows rules and constraints.&lt;/p&gt;

&lt;p&gt;I – Isolation: Ensures transactions run independently without interfering.&lt;/p&gt;

&lt;p&gt;D – Durability: Ensures committed changes are saved even after system failure&lt;/p&gt;

&lt;p&gt;Step-1 : Create Table and Insert Records&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%2Fci0ov5lcubngi3rbvq0q.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%2Fci0ov5lcubngi3rbvq0q.jpg" alt=" " width="800" height="383"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step-2: Atomicity – Transaction Rollback&lt;br&gt;
Simulate a transfer where you 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%2Fmd2h2c62wwlm536h4qap.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%2Fmd2h2c62wwlm536h4qap.jpg" alt=" " width="800" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step-3: Consistency – Reject Invalid Data&lt;br&gt;
Try inserting invalid data&lt;br&gt;
❌ You’ll get an error because of the CHECK(balance &amp;gt;= 0) constraint.&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%2Fki9h7bnucndcfzmks2nn.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%2Fki9h7bnucndcfzmks2nn.jpg" alt=" " width="800" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step-4: solation – Two Sessions&lt;/p&gt;

&lt;p&gt;In Oracle Live SQL, open two sessions:&lt;br&gt;
Session 1: Start a transaction and update balance but don’t commit.&lt;br&gt;
Session 2: Try reading the same row.&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%2Frjp5at9el8po4p091f7g.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%2Frjp5at9el8po4p091f7g.jpg" alt=" " width="800" height="378"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step-5: Durability – Commit and 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%2Fcqtm0hxys9ofsn8bmdxm.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%2Fcqtm0hxys9ofsn8bmdxm.jpg" alt=" " width="800" height="386"&gt;&lt;/a&gt;&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 CHECK(balance &amp;gt;= 0)&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;INSERT INTO Accounts VALUES (101, 'Ravi', 5000);&lt;br&gt;
INSERT INTO Accounts VALUES (102, 'Meena', 3000);&lt;br&gt;
INSERT INTO Accounts VALUES (103, 'Arun', 7000);&lt;/p&gt;

&lt;p&gt;SELECT * FROM Accounts;&lt;br&gt;
-- Start a transaction&lt;br&gt;
SAVEPOINT start_tx;&lt;/p&gt;

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

&lt;p&gt;-- Oops! Suppose error or cancellation occurs&lt;br&gt;
ROLLBACK TO start_tx;&lt;/p&gt;

&lt;p&gt;SELECT * FROM Accounts;&lt;br&gt;
INSERT INTO Accounts VALUES (104, 'Kiran', -2000);&lt;br&gt;
-- Session 1&lt;br&gt;
UPDATE Accounts SET balance = balance - 500 WHERE acc_no = 101;&lt;br&gt;
-- Don’t commit yet&lt;/p&gt;

&lt;p&gt;-- Session 2&lt;br&gt;
SELECT * FROM Accounts WHERE acc_no = 101;&lt;br&gt;
UPDATE Accounts SET balance = balance + 500 WHERE acc_no = 103;&lt;br&gt;
COMMIT;&lt;/p&gt;

</description>
      <category>database</category>
      <category>beginners</category>
      <category>tutorial</category>
      <category>sql</category>
    </item>
    <item>
      <title>CURSOR + TRIGGER</title>
      <dc:creator>SRIRAM PG</dc:creator>
      <pubDate>Sun, 05 Oct 2025 03:43:45 +0000</pubDate>
      <link>https://dev.to/sriram_pg_91a5c6c4af2ce74/cursor-trigger-5ejh</link>
      <guid>https://dev.to/sriram_pg_91a5c6c4af2ce74/cursor-trigger-5ejh</guid>
      <description>&lt;p&gt;Cursor example&lt;br&gt;
Step 1: Create a sample table (Employee)&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%2Fgugq3iu84301m3f4ey1m.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%2Fgugq3iu84301m3f4ey1m.jpg" alt=" " width="800" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 2: Insert some records.&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%2Fctm9w2v30hschrcmmqz3.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%2Fctm9w2v30hschrcmmqz3.jpg" alt=" " width="800" height="383"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 3: Write Cursor Program.&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%2Fafrce10u6dcsmmhwftdu.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%2Fafrce10u6dcsmmhwftdu.jpg" alt=" " width="800" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;TRIGGER EXAMPLE STEP BY STEP&lt;/p&gt;

&lt;p&gt;Step 4: Create an 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%2F67glslduag1heufqzor3.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%2F67glslduag1heufqzor3.jpg" alt=" " width="800" height="384"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 5: Create a 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%2Fetrtnzk2rckajbog7jrh.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%2Fetrtnzk2rckajbog7jrh.jpg" alt=" " width="800" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 6: Test the 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%2Fjn1ltbtyaup1adraqdhl.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%2Fjn1ltbtyaup1adraqdhl.jpg" alt=" " width="800" height="385"&gt;&lt;/a&gt;&lt;br&gt;
Now check&lt;br&gt;
SELECT * FROM Employee_Audit;&lt;br&gt;
Step 7:A cursor was used to fetch and display employee records satisfying a condition, while a trigger was created to automatically log insert operations into an audit table. This demonstrates how cursors help in handling query results row by row and how triggers ensure automatic enforcement of business rules. Together, they show the importance of procedural extensions in SQL for effective database management.&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%2Fxmxtpvew9hhxpo0maqmy.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%2Fxmxtpvew9hhxpo0maqmy.jpg" alt=" " width="800" height="288"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;-- Step 1: Create Employee table&lt;br&gt;
CREATE TABLE Employee (&lt;br&gt;
  emp_id   NUMBER,&lt;br&gt;
  emp_name VARCHAR2(50),&lt;br&gt;
  salary   NUMBER&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;-- Step 2: Insert sample records&lt;br&gt;
INSERT INTO Employee VALUES (1, 'Rahul', 60000);&lt;br&gt;
INSERT INTO Employee VALUES (2, 'Priya', 45000);&lt;br&gt;
INSERT INTO Employee VALUES (3, 'Kiran', 75000);&lt;br&gt;
COMMIT;&lt;/p&gt;

&lt;p&gt;-- Step 3: Cursor Program (fetch employees with salary &amp;gt; 50000)&lt;br&gt;
DECLARE&lt;br&gt;
  v_id   Employee.emp_id%TYPE;&lt;br&gt;
  v_name Employee.emp_name%TYPE;&lt;br&gt;
  v_sal  Employee.salary%TYPE;&lt;/p&gt;

&lt;p&gt;CURSOR c_emp IS&lt;br&gt;
    SELECT emp_id, emp_name, salary FROM Employee WHERE salary &amp;gt; 50000;&lt;br&gt;
BEGIN&lt;br&gt;
  OPEN c_emp;&lt;br&gt;
  LOOP&lt;br&gt;
    FETCH c_emp INTO v_id, v_name, v_sal;&lt;br&gt;
    EXIT WHEN c_emp%NOTFOUND;&lt;br&gt;
    DBMS_OUTPUT.PUT_LINE(v_id || ' | ' || v_name || ' | ' || v_sal);&lt;br&gt;
  END LOOP;&lt;br&gt;
  CLOSE c_emp;&lt;br&gt;
END;&lt;br&gt;
/&lt;/p&gt;

&lt;p&gt;-- Step 4: Create Employee_Audit table (for trigger)&lt;br&gt;
CREATE TABLE Employee_Audit (&lt;br&gt;
  emp_id   NUMBER,&lt;br&gt;
  action   VARCHAR2(20),&lt;br&gt;
  action_time DATE&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;-- Step 5: Create Trigger to log inserts&lt;br&gt;
CREATE OR REPLACE TRIGGER trg_emp_insert&lt;br&gt;
AFTER INSERT ON Employee&lt;br&gt;
FOR EACH ROW&lt;br&gt;
BEGIN&lt;br&gt;
  INSERT INTO Employee_Audit VALUES (:NEW.emp_id, 'INSERT', SYSDATE);&lt;br&gt;
END;&lt;br&gt;
/&lt;/p&gt;

&lt;p&gt;-- Step 6: Test the trigger&lt;br&gt;
INSERT INTO Employee VALUES (4, 'Sneha', 55000);&lt;br&gt;
COMMIT;&lt;/p&gt;

&lt;p&gt;-- Step 7: Check audit log&lt;br&gt;
SELECT * FROM Employee_Audit;&lt;/p&gt;

</description>
      <category>database</category>
      <category>sql</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>NORMALIZATION</title>
      <dc:creator>SRIRAM PG</dc:creator>
      <pubDate>Sat, 04 Oct 2025 14:52:41 +0000</pubDate>
      <link>https://dev.to/sriram_pg_91a5c6c4af2ce74/normalization-58kd</link>
      <guid>https://dev.to/sriram_pg_91a5c6c4af2ce74/normalization-58kd</guid>
      <description>&lt;p&gt;Step 1: Identify anomalies in the base table&lt;/p&gt;

&lt;p&gt;Base table:&lt;/p&gt;

&lt;p&gt;StudentID   StudentName CourseID    CourseName  Instructor  InstructorPhone&lt;br&gt;
S01 Arjun   C101    DBMS    Dr. Kumar   9876543210&lt;br&gt;
S01 Arjun   C102    Data Mining Dr. Mehta   9123456780&lt;br&gt;
S02 Priya   C101    DBMS    Dr. Kumar   9876543210&lt;br&gt;
S03 Kiran   C103    AI  Dr. Rao 9988776655&lt;/p&gt;

&lt;p&gt;Anomalies:&lt;/p&gt;

&lt;p&gt;Insertion anomaly: Cannot insert a new instructor without assigning a student.&lt;/p&gt;

&lt;p&gt;Update anomaly: Updating InstructorPhone requires multiple rows to be updated (e.g., Dr. Kumar’s phone).&lt;/p&gt;

&lt;p&gt;Deletion anomaly: Deleting the last student in a course deletes course &amp;amp; instructor info.&lt;/p&gt;

&lt;p&gt;Step 2: Convert to 1NF&lt;/p&gt;

&lt;p&gt;1NF Rule: Remove repeating groups and make all attributes atomic.&lt;/p&gt;

&lt;p&gt;Our table already has atomic values, so 1NF is essentially the same table. But for clarity, we define a primary key on StudentID + CourseID.&lt;br&gt;
CREATE TABLE StudentCourse_1NF (&lt;br&gt;
    StudentID VARCHAR2(10),&lt;br&gt;
    StudentName VARCHAR2(50),&lt;br&gt;
    CourseID VARCHAR2(10),&lt;br&gt;
    CourseName VARCHAR2(50),&lt;br&gt;
    Instructor VARCHAR2(50),&lt;br&gt;
    InstructorPhone VARCHAR2(15),&lt;br&gt;
    PRIMARY KEY (StudentID, CourseID)&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;Step 3: Convert to 2NF&lt;/p&gt;

&lt;p&gt;2NF Rule: Remove partial dependency. Here, StudentName depends only on StudentID and CourseName &amp;amp; Instructor info depends only on CourseID.&lt;br&gt;
CREATE TABLE Students (&lt;br&gt;
    StudentID VARCHAR2(10) PRIMARY KEY,&lt;br&gt;
    StudentName VARCHAR2(50)&lt;br&gt;
);&lt;br&gt;
CREATE TABLE Courses (&lt;br&gt;
    CourseID VARCHAR2(10) PRIMARY KEY,&lt;br&gt;
    CourseName VARCHAR2(50),&lt;br&gt;
    Instructor VARCHAR2(50),&lt;br&gt;
    InstructorPhone VARCHAR2(15)&lt;br&gt;
);&lt;br&gt;
CREATE TABLE Enrollments (&lt;br&gt;
    StudentID VARCHAR2(10),&lt;br&gt;
    CourseID VARCHAR2(10),&lt;br&gt;
    PRIMARY KEY (StudentID, CourseID)&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;Step 4: Convert to 3NF&lt;/p&gt;

&lt;p&gt;3NF Rule: Remove transitive dependency. InstructorPhone depends on Instructor, so create a separate Instructors table&lt;br&gt;
CREATE TABLE Students (&lt;br&gt;
    StudentID VARCHAR2(10) PRIMARY KEY,&lt;br&gt;
    StudentName VARCHAR2(50)&lt;br&gt;
);&lt;br&gt;
CREATE TABLE Instructors (&lt;br&gt;
    InstructorID VARCHAR2(10) PRIMARY KEY,&lt;br&gt;
    InstructorName VARCHAR2(50),&lt;br&gt;
    InstructorPhone VARCHAR2(15)&lt;br&gt;
);&lt;br&gt;
CREATE TABLE Courses (&lt;br&gt;
    CourseID VARCHAR2(10) PRIMARY KEY,&lt;br&gt;
    CourseName VARCHAR2(50),&lt;br&gt;
    InstructorID VARCHAR2(10),&lt;br&gt;
    FOREIGN KEY (InstructorID) REFERENCES Instructors(InstructorID)&lt;br&gt;
);&lt;br&gt;
CREATE TABLE Enrollments (&lt;br&gt;
    StudentID VARCHAR2(10),&lt;br&gt;
    CourseID VARCHAR2(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;Step 5: Insert sample data into 3NF tables&lt;br&gt;
-- Students&lt;br&gt;
INSERT INTO Students VALUES ('S01', 'Arjun');&lt;br&gt;
INSERT INTO Students VALUES ('S02', 'Priya');&lt;br&gt;
INSERT INTO Students VALUES ('S03', 'Kiran');&lt;/p&gt;

&lt;p&gt;-- Instructors&lt;br&gt;
INSERT INTO Instructors VALUES ('I01', 'Dr. Kumar', '9876543210');&lt;br&gt;
INSERT INTO Instructors VALUES ('I02', 'Dr. Mehta', '9123456780');&lt;br&gt;
INSERT INTO Instructors VALUES ('I03', 'Dr. Rao', '9988776655');&lt;/p&gt;

&lt;p&gt;-- Courses&lt;br&gt;
INSERT INTO Courses VALUES ('C101', 'DBMS', 'I01');&lt;br&gt;
INSERT INTO Courses VALUES ('C102', 'Data Mining', 'I02');&lt;br&gt;
INSERT INTO Courses VALUES ('C103', 'AI', 'I03');&lt;/p&gt;

&lt;p&gt;-- Enrollments&lt;br&gt;
INSERT INTO Enrollments VALUES ('S01', 'C101');&lt;br&gt;
INSERT INTO Enrollments VALUES ('S01', 'C102');&lt;br&gt;
INSERT INTO Enrollments VALUES ('S02', 'C101');&lt;br&gt;
INSERT INTO Enrollments VALUES ('S03', 'C103');&lt;/p&gt;

&lt;p&gt;Step 6: Query to list all students with courses and instructor names&lt;/p&gt;

&lt;p&gt;SELECT s.StudentName, c.CourseName, i.InstructorName&lt;br&gt;
FROM Enrollments e&lt;br&gt;
JOIN Students s ON e.StudentID = s.StudentID&lt;br&gt;
JOIN Courses c ON e.CourseID = c.CourseID&lt;br&gt;
JOIN Instructors i ON c.InstructorID = i.Instruct&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%2Feuwq13ypofji289wkhi0.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%2Feuwq13ypofji289wkhi0.jpg" alt=" " width="800" height="381"&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%2F6ycnlgxhyoxig5e81jj6.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%2F6ycnlgxhyoxig5e81jj6.jpg" alt=" " width="800" height="385"&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%2Fvxq7pqsk20ancv0rvwso.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%2Fvxq7pqsk20ancv0rvwso.jpg" alt=" " width="800" height="380"&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%2Fy450zrqi5uia3rsj3egg.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%2Fy450zrqi5uia3rsj3egg.jpg" alt=" " width="800" height="382"&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%2Fkcvxw67gc2nvfo3sz97w.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%2Fkcvxw67gc2nvfo3sz97w.jpg" alt=" " width="800" height="384"&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%2Fy8ln2exg02suk1524d8a.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%2Fy8ln2exg02suk1524d8a.jpg" alt=" " width="800" height="388"&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%2F6q4trz6lemdyikif4m9e.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%2F6q4trz6lemdyikif4m9e.jpg" alt=" " width="800" height="385"&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%2Frgs3erretoq3g8dt3ptn.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%2Frgs3erretoq3g8dt3ptn.jpg" alt=" " width="800" height="382"&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%2Fa1ixglq5bpkrezjiumpk.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%2Fa1ixglq5bpkrezjiumpk.jpg" alt=" " width="800" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>database</category>
      <category>tutorial</category>
      <category>beginners</category>
      <category>computerscience</category>
    </item>
    <item>
      <title>ORACLE-LIVE SQL</title>
      <dc:creator>SRIRAM PG</dc:creator>
      <pubDate>Mon, 25 Aug 2025 17:50:32 +0000</pubDate>
      <link>https://dev.to/sriram_pg_91a5c6c4af2ce74/oracle-live-sql-l94</link>
      <guid>https://dev.to/sriram_pg_91a5c6c4af2ce74/oracle-live-sql-l94</guid>
      <description>&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%2Few1lsggtergg9d27jftk.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%2Few1lsggtergg9d27jftk.jpg" alt=" " width="800" height="384"&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%2Fdj65xrsemv5flgktfpzj.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%2Fdj65xrsemv5flgktfpzj.jpg" alt=" " width="800" height="386"&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%2F1zt5e6i0ed9lpfocrfd5.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%2F1zt5e6i0ed9lpfocrfd5.jpg" alt=" " width="800" height="387"&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%2F79u43506ileguykg6qro.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%2F79u43506ileguykg6qro.jpg" alt=" " width="800" height="388"&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%2F9a1h8pfg6kabzw1rcm14.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%2F9a1h8pfg6kabzw1rcm14.jpg" alt=" " width="800" height="387"&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%2Fjjocakkcj2ozo4rwt4q6.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%2Fjjocakkcj2ozo4rwt4q6.jpg" alt=" " width="800" height="403"&gt;&lt;/a&gt;&lt;br&gt;
-- Drop old tables if already exist&lt;br&gt;
BEGIN&lt;br&gt;
   EXECUTE IMMEDIATE 'DROP TABLE Enrollments_KPR';&lt;br&gt;
EXCEPTION WHEN OTHERS THEN NULL;&lt;br&gt;
END;&lt;br&gt;
/&lt;/p&gt;

&lt;p&gt;BEGIN&lt;br&gt;
   EXECUTE IMMEDIATE 'DROP TABLE Courses_KPR';&lt;br&gt;
EXCEPTION WHEN OTHERS THEN NULL;&lt;br&gt;
END;&lt;br&gt;
/&lt;/p&gt;

&lt;p&gt;BEGIN&lt;br&gt;
   EXECUTE IMMEDIATE 'DROP TABLE Students_KPR';&lt;br&gt;
EXCEPTION WHEN OTHERS THEN NULL;&lt;br&gt;
END;&lt;br&gt;
/&lt;/p&gt;

&lt;p&gt;-- Create Students table&lt;br&gt;
CREATE TABLE Students_KPR (&lt;br&gt;
    StudentID   NUMBER PRIMARY KEY,&lt;br&gt;
    StudentName VARCHAR2(50),&lt;br&gt;
    Dept        VARCHAR2(30),&lt;br&gt;
    Age         NUMBER&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;-- Create Courses table&lt;br&gt;
CREATE TABLE Courses_KPR (&lt;br&gt;
    CourseID    NUMBER PRIMARY KEY,&lt;br&gt;
    CourseName  VARCHAR2(50),&lt;br&gt;
    Credits     NUMBER&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;-- Create Enrollments table&lt;br&gt;
CREATE TABLE Enrollments_KPR (&lt;br&gt;
    EnrollID   NUMBER PRIMARY KEY,&lt;br&gt;
    StudentID  NUMBER,&lt;br&gt;
    CourseID   NUMBER,&lt;br&gt;
    Grade      CHAR(1),&lt;br&gt;
    FOREIGN KEY (StudentID) REFERENCES Students_KPR(StudentID),&lt;br&gt;
    FOREIGN KEY (CourseID) REFERENCES Courses_KPR(CourseID)&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;-- Insert sample students&lt;br&gt;
INSERT INTO Students_KPR VALUES (114, 'Ram', 'CSE', 19);&lt;br&gt;
INSERT INTO Students_KPR VALUES (116, 'Sri', 'IT', 18);&lt;/p&gt;

&lt;p&gt;-- Insert sample courses&lt;br&gt;
INSERT INTO Courses_KPR VALUES (201, 'DBMS', 4);&lt;br&gt;
INSERT INTO Courses_KPR VALUES (202, 'Networking', 3);&lt;br&gt;
INSERT INTO Courses_KPR VALUES (203, 'Python', 5);&lt;/p&gt;

&lt;p&gt;-- Insert enrollments&lt;br&gt;
INSERT INTO Enrollments_KPR VALUES (301, 114, 201, 'A');&lt;br&gt;
INSERT INTO Enrollments_KPR VALUES (302, 116, 202, 'B');&lt;br&gt;
INSERT INTO Enrollments_KPR VALUES (303, 114, 203, 'A');&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
