<?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: Gangeswara</title>
    <description>The latest articles on DEV Community by Gangeswara (@ganges07).</description>
    <link>https://dev.to/ganges07</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%2F3448087%2Fd0bc6ec4-db08-47da-a548-e9622cb92082.jpg</url>
      <title>DEV Community: Gangeswara</title>
      <link>https://dev.to/ganges07</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ganges07"/>
    <language>en</language>
    <item>
      <title>AWS Service – Amazon S3 Glacier</title>
      <dc:creator>Gangeswara</dc:creator>
      <pubDate>Thu, 18 Dec 2025 16:56:55 +0000</pubDate>
      <link>https://dev.to/ganges07/aws-service-amazon-s3-glacier-8e5</link>
      <guid>https://dev.to/ganges07/aws-service-amazon-s3-glacier-8e5</guid>
      <description>&lt;p&gt;&lt;strong&gt;🔹 1. Service Overview&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Amazon S3 Glacier is a secure, low-cost archival storage service.&lt;/p&gt;

&lt;p&gt;Used for rarely accessed data.&lt;/p&gt;

&lt;p&gt;Best for long-term data retention.&lt;/p&gt;

&lt;p&gt;Integrated with the Amazon S3 ecosystem.&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%2F9kdu23vwpkwyqm6f4k1o.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%2F9kdu23vwpkwyqm6f4k1o.png" alt=" " width="640" height="343"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;⭐ 2. Key Features&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;✔ Extremely low storage cost&lt;br&gt;
✔ Designed for long-term backups&lt;br&gt;
✔ High durability (99.999999999%)&lt;br&gt;
✔ Data encrypted at rest &amp;amp; in transit&lt;br&gt;
✔ Multiple storage classes (Glacier, Deep Archive)&lt;br&gt;
✔ Supports lifecycle policies from S3&lt;br&gt;
✔ Scalable for large volumes of data&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%2Fc85yxmfi10yo0bbzpa38.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc85yxmfi10yo0bbzpa38.webp" alt=" " width="800" height="696"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;☁️ 3. AWS Category / Cloud Domain&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AWS Category: Storage Services&lt;/p&gt;

&lt;p&gt;Cloud Domain:&lt;br&gt;
• Cloud Storage&lt;br&gt;
• Backup &amp;amp; Archival&lt;br&gt;
• Disaster 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%2F7ukue5urh5kgaftmnls8.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%2F7ukue5urh5kgaftmnls8.png" alt=" " width="800" height="301"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔄 4. Where It Fits in Cloud / DevOps Lifecycle&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;➤ Backup &amp;amp; restore stage&lt;br&gt;
➤ Disaster recovery planning&lt;br&gt;
➤ Storage of old application logs&lt;br&gt;
➤ Archiving CI/CD pipeline artifacts&lt;br&gt;
➤ Compliance &amp;amp; audit data storage&lt;br&gt;
➤ Cost optimization in cloud lifecycle&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%2F0jvhah1dqzyi2m7bk5ax.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%2F0jvhah1dqzyi2m7bk5ax.jpg" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;💻 5. Programming Language / Access Methods&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;• AWS Management Console&lt;br&gt;
• AWS Command Line Interface (CLI)&lt;br&gt;
• AWS SDKs support:&lt;/p&gt;

&lt;p&gt;Python (Boto3)&lt;/p&gt;

&lt;p&gt;Java&lt;/p&gt;

&lt;p&gt;Node.js&lt;/p&gt;

&lt;p&gt;Shell scripts&lt;br&gt;
• Infrastructure as Code tools (CloudFormation, Terraform)&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%2F4h3ntdq2g4kafh3419u3.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%2F4h3ntdq2g4kafh3419u3.png" alt=" " width="800" height="519"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;💰 6. Pricing Model&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🔹 Pay-as-you-go pricing&lt;br&gt;
🔹 Very low storage cost&lt;br&gt;
🔹 Retrieval cost depends on access speed&lt;br&gt;
🔹 Extra charges for early deletion&lt;br&gt;
🔹 No upfront or fixed cost&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%2Fjdi345wsee1142rh5g32.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%2Fjdi345wsee1142rh5g32.jpg" alt=" " width="800" height="498"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>awschallenge</category>
      <category>s3</category>
      <category>webdev</category>
    </item>
    <item>
      <title>🧪 Ga – GitHub Actions (DevOps Periodic Table Element)</title>
      <dc:creator>Gangeswara</dc:creator>
      <pubDate>Thu, 18 Dec 2025 16:10:56 +0000</pubDate>
      <link>https://dev.to/ganges07/ga-github-actions-devops-periodic-table-element-4jdl</link>
      <guid>https://dev.to/ganges07/ga-github-actions-devops-periodic-table-element-4jdl</guid>
      <description>&lt;p&gt;&lt;strong&gt;🔹 1. Overview of the Tool&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;GitHub Actions is a CI/CD automation tool.&lt;/p&gt;

&lt;p&gt;It automates build, test, and deploy processes.&lt;/p&gt;

&lt;p&gt;Works directly inside GitHub repositories. &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%2Fxrue5oneyqnslbu06a7a.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%2Fxrue5oneyqnslbu06a7a.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;⭐ 2. Key Features&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;✔ Event-based workflows (push, pull request, schedule)&lt;br&gt;
✔ YAML-based configuration&lt;br&gt;
✔ GitHub Marketplace actions support&lt;br&gt;
✔ GitHub-hosted &amp;amp; self-hosted runners&lt;br&gt;
✔ Easy integration with cloud services&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%2F98bchmo4adtii6ef0s8j.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%2F98bchmo4adtii6ef0s8j.png" alt=" " width="800" height="408"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔄 3. Role in DevOps / DevSecOps&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;➤ Enables Continuous Integration &amp;amp; Continuous Deployment&lt;br&gt;
➤ Automates pipelines without external tools&lt;br&gt;
➤ Supports security scans &amp;amp; code analysis&lt;br&gt;
➤ Helps shift security left in DevSecOps&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%2Flruw55l5x081aod8zsd0.gif" 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%2Flruw55l5x081aod8zsd0.gif" alt=" " width="800" height="473"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;💻 4. Programming Languages Used&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;• YAML (workflow configuration)&lt;br&gt;
• JavaScript&lt;br&gt;
• Python&lt;br&gt;
• Shell scripting&lt;br&gt;
• Docker&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%2F25u83utq4c5lchb33ljq.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F25u83utq4c5lchb33ljq.webp" alt=" " width="474" height="242"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🏢 5. Parent Company&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Developed by GitHub&lt;/p&gt;

&lt;p&gt;Owned by Microsoft&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%2Fig2zqvxvync2f4eo37x8.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%2Fig2zqvxvync2f4eo37x8.jpg" alt=" " width="800" height="544"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔓 6. Open Source / Paid&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🔹 Free tier available&lt;br&gt;
🔹 Paid plans for higher usage&lt;br&gt;
🔹 Many actions are open source&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%2Fh77eolfejequokju12ze.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh77eolfejequokju12ze.webp" alt=" " width="455" height="227"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devops</category>
      <category>githubactions</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Indexing, Hashing &amp; Query Optimization</title>
      <dc:creator>Gangeswara</dc:creator>
      <pubDate>Thu, 02 Oct 2025 08:56:10 +0000</pubDate>
      <link>https://dev.to/ganges07/indexing-hashing-query-optimization-26np</link>
      <guid>https://dev.to/ganges07/indexing-hashing-query-optimization-26np</guid>
      <description>&lt;p&gt;In this assignment, we’ll explore how to improve query performance in Oracle SQL using indexes. We’ll create a Students table, insert sample data, and perform optimized queries using B-Tree and B+ Tree indexes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Definition&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Indexing&lt;/strong&gt;: A database index is a data structure that improves the speed of data retrieval operations on a table at the cost of additional writes and storage space.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;B-Tree Index&lt;/strong&gt;: A balanced tree index used for equality and range searches.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;B+ Tree Index&lt;/strong&gt;: A type of B-Tree that stores all values at leaf nodes, optimized for range queries.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hash Index&lt;/strong&gt;: Uses a hash function for fast equality searches. (Note: Oracle only supports hash-like behavior through specific functions or clustering.)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Query Optimization&lt;/strong&gt;: Using indexes and proper SQL structures to reduce query execution time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Creating the Students Table&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;CREATE TABLE Students (
    roll_no INT PRIMARY KEY,
    name VARCHAR2(50),
    dept VARCHAR2(20),
    cgpa NUMBER(3,2)
);
&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%2Fu6999xv56irj0sfblmnm.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%2Fu6999xv56irj0sfblmnm.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Inserting Sample Records&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 (101, 'Arjun', 'CSBS', 8.5);
INSERT INTO Students VALUES (102, 'Priya', 'CSBS', 7.8);
INSERT INTO Students VALUES (103, 'Kiran', 'ECE', 9.0);
INSERT INTO Students VALUES (104, 'Anita', 'ME', 8.2);
INSERT INTO Students VALUES (105, 'Vikram', 'CSBS', 8.8);
INSERT INTO Students VALUES (106, 'Ravi', 'ECE', 7.5);
INSERT INTO Students VALUES (107, 'Sneha', 'ME', 8.7);
INSERT INTO Students VALUES (108, 'Nikhil', 'CSBS', 6.9);
INSERT INTO Students VALUES (109, 'Maya', 'ECE', 8.0);
INSERT INTO Students VALUES (110, 'Aditya', 'CSBS', 9.2);
INSERT INTO Students VALUES (111, 'Tanya', 'ME', 7.9);
INSERT INTO Students VALUES (112, 'Rohan', 'CSBS', 8.3);
INSERT INTO Students VALUES (113, 'Divya', 'ECE', 9.1);
INSERT INTO Students VALUES (114, 'Karthik', 'ME', 7.7);
INSERT INTO Students VALUES (115, 'Isha', 'CSBS', 8.6);
INSERT INTO Students VALUES (116, 'Suresh', 'ECE', 8.4);
INSERT INTO Students VALUES (117, 'Meena', 'ME', 8.0);
INSERT INTO Students VALUES (118, 'Aravind', 'CSBS', 7.6);
INSERT INTO Students VALUES (119, 'Pooja', 'ECE', 8.9);
INSERT INTO Students VALUES (120, 'Rahul', 'ME', 8.1);

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

&lt;p&gt;&lt;strong&gt;4. Creating a B-Tree Index on roll_no&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;CREATE INDEX idx_roll_no ON Students(roll_no);
&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%2Fxxfw46zv2sprqv6wq493.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%2Fxxfw46zv2sprqv6wq493.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
Query: Fetch student with roll_no = 110&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT * FROM Students WHERE roll_no = 110;
&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%2Fhtnrmydjfug78x429eb5.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%2Fhtnrmydjfug78x429eb5.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Creating a B+ Tree Index on cgpa&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Oracle automatically uses B+ Tree for numeric indexes.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CREATE INDEX idx_cgpa ON Students(cgpa);

&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%2F2zoa0vune1ww72t2gevk.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%2F2zoa0vune1ww72t2gevk.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
Query: Display all students with cgpa &amp;gt; 8.0&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT * FROM Students WHERE cgpa &amp;gt; 8.0;

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

&lt;p&gt;&lt;strong&gt;6. Creating an Index on dept for Fast Equality Search&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Oracle does not support direct hash indexes for normal tables. Instead, we use a regular index:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CREATE INDEX idx_dept ON Students(dept);

&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%2F49y54m8gounrdjwk3wxv.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%2F49y54m8gounrdjwk3wxv.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
Query: Retrieve all students from the CSBS department&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT * FROM Students WHERE dept = 'CSBS';


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

&lt;p&gt;&lt;strong&gt;7. Steps Summary&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Created the Students table with fields roll_no, name, dept, cgpa.&lt;/p&gt;

&lt;p&gt;Inserted 20 sample records.&lt;/p&gt;

&lt;p&gt;Created B-Tree index on roll_no for quick lookups.&lt;/p&gt;

&lt;p&gt;Created B+ Tree index on cgpa for optimized range queries.&lt;/p&gt;

&lt;p&gt;Created index on dept to speed up equality searches.&lt;/p&gt;

&lt;p&gt;Executed queries to verify indexing and performance improvements.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;8. Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;By using indexes, query execution becomes faster and more efficient. Indexing is a vital part of query optimization in DBMS.&lt;/p&gt;

&lt;p&gt;Special thanks to &lt;a class="mentioned-user" href="https://dev.to/santhoshnc"&gt;@santhoshnc&lt;/a&gt;   Sir for guiding me through indexing and query optimization concepts.&lt;/p&gt;

&lt;h1&gt;
  
  
  SQL #Oracle #Indexing #BTree #BPlusTree #QueryOptimization #DBMS #Database
&lt;/h1&gt;

</description>
      <category>database</category>
      <category>beginners</category>
      <category>programming</category>
      <category>career</category>
    </item>
    <item>
      <title>MongoDB CRUD Operations</title>
      <dc:creator>Gangeswara</dc:creator>
      <pubDate>Thu, 02 Oct 2025 07:11:07 +0000</pubDate>
      <link>https://dev.to/ganges07/mongodb-crud-operations-537m</link>
      <guid>https://dev.to/ganges07/mongodb-crud-operations-537m</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In this assignment, I explored MongoDB CRUD operations to gain hands-on experience with a NoSQL database. The main objective was to create, read, update, and delete student records in a simple college student schema.&lt;/p&gt;

&lt;p&gt;MongoDB is a document-oriented database that stores data in JSON-like documents, making it flexible for dynamic data structures compared to traditional relational databases.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Create Cluster &amp;amp; Database&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
Before performing CRUD operations, we need to create a cluster and define the database:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Create Cluster&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In MongoDB Atlas, click “Create Deployment” → select Cluster.&lt;/p&gt;

&lt;p&gt;Choose a cloud provider and region.&lt;/p&gt;

&lt;p&gt;Enter Cluster Name: CollegeCluster&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Click Create Deployment.&lt;/em&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%2F0jivbo3f6njcjnlpdmz1.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%2F0jivbo3f6njcjnlpdmz1.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
**&lt;br&gt;
Create Database &amp;amp; Collection**&lt;/p&gt;

&lt;p&gt;After the cluster is ready, go to Browse Collections → Add My Own Data.&lt;/p&gt;

&lt;p&gt;Enter Database Name: college&lt;/p&gt;

&lt;p&gt;Enter Collection Name: students&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Student Schema&lt;/strong&gt;&lt;/p&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 plaintext"&gt;&lt;code&gt;{
  "student_id": "S001",
  "name": "Santhosh",
  "age": 20,
  "department": "CSBS",
  "year": 2,
  "cgpa": 9
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;student_id → Unique identifier for each student&lt;/p&gt;

&lt;p&gt;name → Student’s name&lt;/p&gt;

&lt;p&gt;age → Student’s age&lt;/p&gt;

&lt;p&gt;department → Department name&lt;/p&gt;

&lt;p&gt;year → Current academic year&lt;/p&gt;

&lt;p&gt;cgpa → Current grade point average&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1️⃣ Create (Insert)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We inserted 5 student records into the students collection using the insertMany command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;db.students.insertMany([
  { student_id: "S001", name: "Santhosh", age: 20, department: "CSBS", year: 2, cgpa: 9 },
  { student_id: "S002", name: "Anitha",  age: 19, department: "CSE",  year: 1, cgpa: 8.2 },
  { student_id: "S003", name: "Karthik",  age: 21, department: "ECE",  year: 3, cgpa: 7.8 },
  { student_id: "S004", name: "Meena",    age: 22, department: "IT",   year: 3, cgpa: 6.9 },
  { student_id: "S005", name: "Vikram",   age: 20, department: "CSBS", year: 2, cgpa: 8.9 }
]);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Explanation: insertMany allows inserting multiple documents at once into a MongoDB collection.&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%2Fc12kolc2n8o6r9767q7t.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%2Fc12kolc2n8o6r9767q7t.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%2Fa1wpvhf9r8y5izbtk82z.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%2Fa1wpvhf9r8y5izbtk82z.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%2Fziljc8ip9nvdgyf5rh89.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%2Fziljc8ip9nvdgyf5rh89.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2️⃣ Read (Query)&lt;/strong&gt;&lt;br&gt;
2.1 Display all student records&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;db.students.find().pretty();

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;find() → fetches all documents in the collection&lt;/p&gt;

&lt;p&gt;pretty() → formats output for readability&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%2Fszt4sl44u8qj9pt8b37z.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%2Fszt4sl44u8qj9pt8b37z.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2.2 Students with CGPA &amp;gt; 8&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;db.students.find({ cgpa: { $gt: 8 } }).pretty();
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;$gt → MongoDB operator for “greater than”&lt;/p&gt;

&lt;p&gt;Only students with CGPA greater than 8 are retrieved&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%2F40ex3iabybe80c4i3yyy.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%2F40ex3iabybe80c4i3yyy.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%2Flomd1oyfa29udttm1aze.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%2Flomd1oyfa29udttm1aze.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
2.3 Students in CSBS or CSE department&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;db.students.find({ department: { $in: ["CSBS","CSE"] } }).pretty();

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;$in → matches any value in the given array&lt;/p&gt;

&lt;p&gt;Retrieves students belonging to either CSBS or 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%2Fojm478kmiflntlyymzvg.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%2Fojm478kmiflntlyymzvg.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%2F3wx5glnuicss3vutfyec.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%2F3wx5glnuicss3vutfyec.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3️⃣ Update&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;3.1 Update CGPA of a specific student&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;db.students.updateOne(
  { student_id: "S002" },
  { $set: { cgpa: 8.5 } }
);

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;updateOne → updates a single document&lt;/p&gt;

&lt;p&gt;$set → sets a new value for the specified field&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%2Fxlnhbvk8llgp9q4eb8yv.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%2Fxlnhbvk8llgp9q4eb8yv.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%2Ff9dnvqdvhvt0al1kgznh.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%2Ff9dnvqdvhvt0al1kgznh.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3.2 Increase year for all 3rd-year students&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;db.students.updateMany(
  { year: 3 },
  { $inc: { year: 1 } }
);

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;updateMany → updates multiple documents matching the filter&lt;/p&gt;

&lt;p&gt;$inc → increments numeric field by a specified value&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%2Funzkmaldfdk9wy26rm6t.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%2Funzkmaldfdk9wy26rm6t.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%2Fgizdip5rerf4ncjf1cu2.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%2Fgizdip5rerf4ncjf1cu2.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%2F32igptca47nu1f7w525c.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%2F32igptca47nu1f7w525c.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;4️⃣ Delete&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;4.1 Delete one student by ID&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;db.students.deleteOne({ student_id: "S004" });
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;deleteOne → deletes a single document matching the filter&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%2F3h2cefsfs44hr744fo5w.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%2F3h2cefsfs44hr744fo5w.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%2Fs0j1ivfmslfstul7wwgq.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%2Fs0j1ivfmslfstul7wwgq.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;4.2 Delete all students with CGPA &amp;lt; 7.5&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;db.students.deleteMany({ cgpa: { $lt: 7.5 } });

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;deleteMany → deletes all documents matching the filter&lt;/p&gt;

&lt;p&gt;$lt → “less than” operator&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%2Fwnf3f7d8uk2lq5v34ax8.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%2Fwnf3f7d8uk2lq5v34ax8.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%2Fqrt8ze5widj9b0yn9ybg.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%2Fqrt8ze5widj9b0yn9ybg.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Final Collection Sample&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;[
  { "student_id": "S001", "name": "Santhosh", "age": 20, "department": "CSBS", "year": 2, "cgpa": 9 },
  { "student_id": "S002", "name": "Anitha",  "age": 19, "department": "CSE",  "year": 1, "cgpa": 8.5 },
  { "student_id": "S005", "name": "Vikram",   "age": 20, "department": "CSBS", "year": 2, "cgpa": 8.9 }
]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Through this assignment, I gained practical experience with MongoDB CRUD operations: inserting, querying, updating, deleting, and exporting data.&lt;br&gt;
It highlighted the flexibility of document-oriented databases for managing dynamic data, compared to traditional relational databases.&lt;/p&gt;

&lt;p&gt;Thanks to &lt;a class="mentioned-user" href="https://dev.to/santhoshnc"&gt;@santhoshnc&lt;/a&gt;   Sir   for   his guidance and support throughout this assignment. 🙏&lt;/p&gt;

&lt;h1&gt;
  
  
  mongodb #crud #nosql #students #dbms #atlas #assignment #learningbydoing
&lt;/h1&gt;

</description>
      <category>database</category>
      <category>career</category>
      <category>mongodb</category>
      <category>beginners</category>
    </item>
    <item>
      <title>DBMS – Transactions, Deadlocks &amp; Log-Based Recovery</title>
      <dc:creator>Gangeswara</dc:creator>
      <pubDate>Wed, 01 Oct 2025 16:02:56 +0000</pubDate>
      <link>https://dev.to/ganges07/dbms-transactions-deadlocks-log-based-recovery-1eo3</link>
      <guid>https://dev.to/ganges07/dbms-transactions-deadlocks-log-based-recovery-1eo3</guid>
      <description>&lt;p&gt;&lt;strong&gt;In this assignment, we will explore Transactions, Deadlocks, and Log-Based Recovery using SQL.&lt;br&gt;
We use the Accounts table as our base schema and demonstrate ACID concepts with rollback, simulate a deadlock, and discuss log-based recovery.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Create Table &amp;amp; Insert Data&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;CREATE TABLE CustomerAccounts (
    acc_no INT PRIMARY KEY,
    name VARCHAR2(50),
    balance INT
);

&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%2F6c083s8c4kfu9nfca7ty.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%2F6c083s8c4kfu9nfca7ty.png" alt=" " width="800" height="450"&gt;&lt;/a&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 CustomerAccounts VALUES (1, 'Alice', 1000);
INSERT INTO CustomerAccounts VALUES (2, 'Bob', 1500);
INSERT INTO CustomerAccounts VALUES (3, 'Charlie', 2000);

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT * FROM CustomerAccounts;

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

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

&lt;p&gt;Task: Transfer 500 from Alice to Bob, but rollback before committing.&lt;/p&gt;

&lt;p&gt;-- Deduct 500 from Alice&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;UPDATE CustomerAccounts
SET balance = balance - 500
WHERE name = 'Alice';
&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%2F7fzht3qr9z2km6j2usgk.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%2F7fzht3qr9z2km6j2usgk.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;-- Add 500 to Bob
UPDATE CustomerAccounts
SET balance = balance + 500
WHERE name = 'Bob';
&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%2Fe1y0rn5fohsrz8mf0c9f.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%2Fe1y0rn5fohsrz8mf0c9f.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
-- Rollback transaction&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ROLLBACK;

&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%2Foptm1fo4zi8inmq7tcog.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%2Foptm1fo4zi8inmq7tcog.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
-- Check balances&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT * FROM CustomerAccounts;
&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%2F75tuil3tcgd6igiai0rc.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%2F75tuil3tcgd6igiai0rc.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2️⃣ Deadlock Simulation (Conceptual)&lt;/p&gt;

&lt;p&gt;Session 1 (conceptual)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;-- Lock Alice
UPDATE CustomerAccounts SET balance = balance - 100 WHERE name = 'Alice';
-- Do NOT commit

Session 2 (conceptual)
-- Lock Bob
UPDATE CustomerAccounts SET balance = balance - 200 WHERE name = 'Bob';
-- Do NOT commit

Continuing Session 1
-- Try updating Bob (held by Session 2)
UPDATE CustomerAccounts SET balance = balance + 100 WHERE name = 'Bob';

Continuing Session 2
-- Try updating Alice (held by Session 1)
UPDATE CustomerAccounts SET balance = balance + 200 WHERE name = 'Alice';


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Expected in a real multi-session DB:&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ORA-00060: deadlock detected while waiting for resource


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

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

&lt;p&gt;Task: Show rollback and explain internal logs (undo/redo).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;-- Update Charlie
UPDATE CustomerAccounts SET balance = balance + 300 WHERE name = 'Charlie';

-- Rollback
ROLLBACK;

-- Verify balances
SELECT * FROM CustomerAccounts;
&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%2Fvvx0aeddira3r2do9hfo.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%2Fvvx0aeddira3r2do9hfo.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%2Ff1tjwjv19ub4k7czjjzq.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%2Ff1tjwjv19ub4k7czjjzq.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%2F1roplb2bc6yl88mirn72.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%2F1roplb2bc6yl88mirn72.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;_&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Atomicity: Rollback prevents partial updates.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Deadlock: Occurs when two sessions wait for each other (conceptual in LiveSQL).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Log-Based Recovery: Oracle maintains undo/redo logs for safe recovery.&lt;br&gt;
_&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Special thanks to &lt;a class="mentioned-user" href="https://dev.to/santhoshnc"&gt;@santhoshnc&lt;/a&gt;   Sir for guidance throughout this assignment.&lt;/p&gt;

&lt;h1&gt;
  
  
  dbms #oracle #sql #transactions #deadlock #recovery #assignment
&lt;/h1&gt;

</description>
      <category>dbms</category>
      <category>oracl</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>DBMS : ACID Properties with SQL Transactions</title>
      <dc:creator>Gangeswara</dc:creator>
      <pubDate>Wed, 01 Oct 2025 10:06:50 +0000</pubDate>
      <link>https://dev.to/ganges07/dbms-acid-properties-with-sql-transactions-22kf</link>
      <guid>https://dev.to/ganges07/dbms-acid-properties-with-sql-transactions-22kf</guid>
      <description>&lt;p&gt;&lt;strong&gt;ACID properties ensure reliability and correctness of database transactions.&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Step 1: Create Accounts Table&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CREATE TABLE Accounts (
    acc_no INT PRIMARY KEY,
    name VARCHAR2(50),
    balance INT
);
&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%2Fropp9zm15e2s4gsugph4.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%2Fropp9zm15e2s4gsugph4.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Insert Sample Data&lt;/em&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 Accounts (acc_no, name, balance) VALUES (101, 'Ravi', 5000);
INSERT INTO Accounts (acc_no, name, balance) VALUES (102, 'Meena', 7000);
INSERT INTO Accounts (acc_no, name, balance) VALUES (103, 'Kumar', 6000);

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

&lt;p&gt;&lt;strong&gt;1️⃣ Atomicity:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A transaction is all-or-nothing.&lt;/p&gt;

&lt;p&gt;Either all operations in a transaction are executed successfully, or none are applied.&lt;/p&gt;

&lt;p&gt;Ensures no partial updates occur in case of errors.&lt;/p&gt;

&lt;p&gt;Scenario: Transfer ₹1000 from Ravi to Meena. If an error occurs, rollback to prevent partial updates.&lt;/p&gt;

&lt;p&gt;_&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;-- Deduct ₹1000 from Ravi_
UPDATE Accounts
SET balance = balance - 1000
WHERE acc_no = 101;

_-- Simulate an error_
INSERT INTO Accounts (acc_no, name, balance) VALUES (101, 'ErrorTest', 1000);

-_- Add ₹1000 to Meena_
UPDATE Accounts
SET balance = balance + 1000
WHERE acc_no = 102;

_-- Rollback transaction_
ROLLBACK;

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

&lt;p&gt;_Explanation:&lt;br&gt;
_&lt;br&gt;
If an error occurs during transfer, ROLLBACK ensures no partial changes remain.&lt;/p&gt;

&lt;p&gt;Atomicity ensures transactions are all-or-nothing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2️⃣Consistency:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A transaction must bring the database from one valid state to another.&lt;/p&gt;

&lt;p&gt;Database rules (constraints, triggers) are preserved.&lt;/p&gt;

&lt;p&gt;Prevents invalid data like negative balances or duplicate primary keys.&lt;/p&gt;

&lt;p&gt;Scenario: Database should reject invalid data like negative balance.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;-- Fix existing negative balances if any
UPDATE Accounts
SET balance = 0
WHERE balance &amp;lt; 0;
&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%2Fy58kaupxck5md1488uiw.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%2Fy58kaupxck5md1488uiw.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;-- Add CHECK constraint
ALTER TABLE Accounts
ADD CONSTRAINT chk_balance CHECK (balance &amp;gt;= 0);

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;-- Test invalid insert
INSERT INTO Accounts (acc_no, name, balance) VALUES (104, 'Anita', -500);

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

&lt;p&gt;_Explanation:&lt;br&gt;
_&lt;br&gt;
Constraint prevents negative balances, maintaining data consistency.&lt;/p&gt;

&lt;p&gt;Anita’s balance is set to 0 to satisfy the constraint.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3️⃣Isolation:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Transactions operate independently of each other.&lt;/p&gt;

&lt;p&gt;Changes made in one transaction are not visible to others until committed.&lt;/p&gt;

&lt;p&gt;Ensures concurrent transactions do not interfere incorrectly.&lt;/p&gt;

&lt;p&gt;Scenario: Observe concurrent transactions.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;_Session 1: Update Kumar’s balance_

UPDATE Accounts
SET balance = balance + 500
WHERE acc_no = 103;
-- Do not commit yet

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;_Session 2: Read Kumar’s balance_

SELECT * FROM Accounts
WHERE acc_no = 103;

&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%2Fnfepiu4c1l78vc9gkxpk.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%2Fnfepiu4c1l78vc9gkxpk.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
Explanation:&lt;/p&gt;

&lt;p&gt;Session 2 does not see uncommitted changes from Session 1.&lt;/p&gt;

&lt;p&gt;Isolation ensures concurrent transactions do not interfere incorrectly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4️⃣Durability:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Once a transaction is committed, its changes are permanent, even in the event of a system crash or failure.&lt;/p&gt;

&lt;p&gt;Guarantees the persistence of committed data.&lt;/p&gt;

&lt;p&gt;Scenario: Commit a transaction and ensure changes persist after DB restart.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;UPDATE Accounts
SET balance = balance + 200
WHERE acc_no = 101;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;-- After reconnecting/restarting DB
SELECT * FROM Accounts;

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

&lt;p&gt;&lt;em&gt;Explanation:&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Changes persist permanently after commit.&lt;/p&gt;

&lt;p&gt;Durability ensures committed data survives failures.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;_Atomicity: _Transactions are “all or nothing”.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Consistency:&lt;/em&gt; Database enforces valid data.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Isolation:&lt;/em&gt; Concurrent transactions do not interfere.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Durability:&lt;/em&gt; Committed changes are permanent.&lt;/p&gt;

&lt;p&gt;I would like to thank &lt;a class="mentioned-user" href="https://dev.to/santhoshnc"&gt;@santhoshnc&lt;/a&gt;   for his guidance and support in completing this DBMS assignment.&lt;/p&gt;

&lt;h1&gt;
  
  
  dbms #sql #oracle #plsql #transactions #acid #database #assignment #learning
&lt;/h1&gt;

</description>
      <category>database</category>
      <category>acid</category>
      <category>sql</category>
      <category>oracle</category>
    </item>
    <item>
      <title>DBMS : Cursor &amp; Trigger</title>
      <dc:creator>Gangeswara</dc:creator>
      <pubDate>Wed, 01 Oct 2025 09:12:28 +0000</pubDate>
      <link>https://dev.to/ganges07/dbms-cursor-trigger-3k3j</link>
      <guid>https://dev.to/ganges07/dbms-cursor-trigger-3k3j</guid>
      <description>&lt;p&gt;&lt;strong&gt;1️⃣ Cursor in DBMS&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Definition:&lt;/strong&gt;&lt;br&gt;
A cursor is a database object used to retrieve and process rows from a result set one at a time. It allows row-by-row processing of query results, unlike normal SQL queries that work on the entire set at once.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Cursor Example – Display Employees with Salary &amp;gt; ₹50,000&lt;br&gt;
_&lt;br&gt;
_Step 1: Create Employee Table&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CREATE TABLE Employee (
    Emp_ID NUMBER PRIMARY KEY,
    Emp_Name VARCHAR2(50),
    Salary NUMBER
);
&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%2Fhsudf8egr5i79rhu8t49.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%2Fhsudf8egr5i79rhu8t49.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Step 2: Insert Sample Data&lt;/em&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 Employee (Emp_ID, Emp_Name, Salary) VALUES (1, 'Ramesh', 60000);
INSERT INTO Employee (Emp_ID, Emp_Name, Salary) VALUES (2, 'Suresh', 45000);
INSERT INTO Employee (Emp_ID, Emp_Name, Salary) VALUES (3, 'Anita', 75000);
INSERT INTO Employee (Emp_ID, Emp_Name, Salary) VALUES (4, 'Kavya', 50000);
&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%2Funu6q35fciw143udps7v.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%2Funu6q35fciw143udps7v.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Step 3: Create and Process Cursor&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DECLARE
    CURSOR emp_cursor IS
        SELECT Emp_Name, Salary FROM Employee WHERE Salary &amp;gt; 50000;
    v_EmpName Employee.Emp_Name%TYPE;
    v_Salary Employee.Salary%TYPE;
BEGIN
    OPEN emp_cursor;
    LOOP
        FETCH emp_cursor INTO v_EmpName, v_Salary;
        EXIT WHEN emp_cursor%NOTFOUND;
        DBMS_OUTPUT.PUT_LINE('Employee: ' || v_EmpName || ', Salary: ₹' || v_Salary);
    END LOOP;
    CLOSE emp_cursor;
END;
/
&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%2Fth2y1hlyh2obtghzndoz.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%2Fth2y1hlyh2obtghzndoz.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Explanation:&lt;/p&gt;

&lt;p&gt;The cursor emp_cursor selects employees earning more than 50,000.&lt;/p&gt;

&lt;p&gt;DBMS_OUTPUT.PUT_LINE prints each employee’s name and salary.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2️⃣ Trigger in DBMS&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Definition:&lt;/strong&gt;&lt;br&gt;
A trigger is a stored procedure that automatically executes in response to certain events on a table or view.&lt;/p&gt;

&lt;p&gt;trigger Example – AFTER INSERT on Students Table&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Step 1: Create Students Table&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CREATE TABLE Students (
    Student_ID NUMBER PRIMARY KEY,
    Student_Name VARCHAR2(50),
    Course VARCHAR2(50)
);
&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%2Fx89ztj5pitg5grpajwrw.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%2Fx89ztj5pitg5grpajwrw.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;_Step 2: Create Student_Audit Table&lt;br&gt;
_&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CREATE TABLE Student_Audit (
    Audit_ID NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
    Student_ID NUMBER,
    Student_Name VARCHAR2(50),
    Action VARCHAR2(50),
    Action_Time TIMESTAMP
);

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

&lt;p&gt;&lt;em&gt;Step 3: Create AFTER INSERT Trigger&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CREATE OR REPLACE TRIGGER trg_after_student_insert
AFTER INSERT ON Students
FOR EACH ROW
BEGIN
    INSERT INTO Student_Audit (Student_ID, Student_Name, Action, Action_Time)
    VALUES (:NEW.Student_ID, :NEW.Student_Name, 'INSERT', SYSTIMESTAMP);
END;
/
&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%2Focduqo81b48go150yth0.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%2Focduqo81b48go150yth0.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Explanation:&lt;/p&gt;

&lt;p&gt;Trigger automatically logs new students into Student_Audit.&lt;/p&gt;

&lt;p&gt;:NEW references the inserted row, and SYSTIMESTAMP captures insertion time.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Step 4: Test Trigger&lt;/em&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 (Student_ID, Student_Name, Course) VALUES (1, 'Ravi', 'Computer Science');
INSERT INTO Students (Student_ID, Student_Name, Course) VALUES (2, 'Meena', 'Electrical Engineering');

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

&lt;p&gt;&lt;em&gt;Step 5: Verify Audit Table&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;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%2Fwyob2d86a7ctiwxa55yj.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%2Fwyob2d86a7ctiwxa55yj.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;✅ Conclusion&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
Cursors allow row-by-row processing based on conditions.&lt;/p&gt;

&lt;p&gt;Triggers automate actions like logging new entries without manual intervention.&lt;/p&gt;

&lt;p&gt;Both are essential tools for advanced database management.&lt;/p&gt;

&lt;p&gt;I would like to thank &lt;a class="mentioned-user" href="https://dev.to/santhoshnc"&gt;@santhoshnc&lt;/a&gt;   Sir for his guidance and support in completing this DBMS assignment.&lt;/p&gt;

&lt;h1&gt;
  
  
  dbms #sql #oracle #plsql #database #cursors #triggers #programming #assignment #learning
&lt;/h1&gt;

</description>
      <category>dbms</category>
      <category>oracle</category>
      <category>cursors</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Database Normalization</title>
      <dc:creator>Gangeswara</dc:creator>
      <pubDate>Wed, 01 Oct 2025 08:27:00 +0000</pubDate>
      <link>https://dev.to/ganges07/database-normalization-53h6</link>
      <guid>https://dev.to/ganges07/database-normalization-53h6</guid>
      <description>&lt;p&gt;&lt;strong&gt;Database normalization is a crucial process in designing efficient and reliable databases. In this tutorial, I’ll show you how to normalize a sample table from 1NF to 3NF using Oracle Live SQL, with clear explanations and examples&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;1. The Base Table&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We start with an unnormalized table that contains students, courses, instructors, and grades&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%2Fo09ax03b0ry7jqn5d5nl.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%2Fo09ax03b0ry7jqn5d5nl.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;2. Identifying Anomalies&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Before normalization, it’s important to understand the potential anomalies in the table:&lt;/p&gt;

&lt;p&gt;Insertion anomaly: You can’t add a new course without adding a student.&lt;/p&gt;

&lt;p&gt;Update anomaly: Updating a course name requires changing multiple rows.&lt;/p&gt;

&lt;p&gt;Deletion anomaly: Deleting a student might remove important course information if that student was the only one enrolled.&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%2Fuxvudlk69qmt0mbnsghx.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%2Fuxvudlk69qmt0mbnsghx.png" alt=" " width="800" height="228"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;3. Converting to 1NF&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;Each column must contain atomic (indivisible) values.&lt;/p&gt;

&lt;p&gt;Each row must be unique.&lt;/p&gt;

&lt;p&gt;Steps taken:&lt;/p&gt;

&lt;p&gt;Split multivalued fields into separate rows.&lt;/p&gt;

&lt;p&gt;Ensured each column contains a single value.&lt;/p&gt;

&lt;p&gt;SQL Table in 1NF:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CREATE TABLE Students_1NF (
    Student_ID INT,
    Student_Name VARCHAR2(100),
    Course_ID INT,
    Course_Name VARCHAR2(100),
    Instructor VARCHAR2(100),
    Grade CHAR(2),
    PRIMARY KEY (Student_ID, Course_ID)
);
&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%2F0e39hh8hxe2aejp6r3n6.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%2F0e39hh8hxe2aejp6r3n6.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;4. Conversion to 2NF&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;2NF Rule: Eliminate partial dependency (non-prime attributes must depend on the whole primary key).&lt;/p&gt;

&lt;p&gt;Observations:&lt;/p&gt;

&lt;p&gt;Student_Name depends only on Student_ID.&lt;/p&gt;

&lt;p&gt;Course_Name, Instructor, Instructor_Phone depend only on Course_ID.&lt;/p&gt;

&lt;p&gt;Grade (if existed) would depend on both Student_ID + Course_ID.&lt;/p&gt;

&lt;p&gt;Solution: Split into three tables:&lt;/p&gt;

&lt;p&gt;Students → Student_ID, Student_Name&lt;/p&gt;

&lt;p&gt;Courses → Course_ID, Course_Name, Instructor, Instructor_Phone&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Enrollments → Student_ID, Course_ID
CREATE TABLE Students (
    StudentID VARCHAR2(10) PRIMARY KEY,
    StudentName VARCHAR2(100)
);

CREATE TABLE Courses (
    CourseID VARCHAR2(10) PRIMARY KEY,
    CourseName VARCHAR2(100),
    Instructor VARCHAR2(100),
    InstructorPhone VARCHAR2(15)
);

CREATE TABLE Enrollments (
    StudentID VARCHAR2(10),
    CourseID VARCHAR2(10),
    PRIMARY KEY (StudentID, CourseID),
    FOREIGN KEY (StudentID) REFERENCES Student(StudentID),
    FOREIGN KEY (CourseID) REFERENCES Course(CourseID)
);


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;SQL Create Tables (2NF):&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%2Fwkc6dznk7d60hislqo7m.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%2Fwkc6dznk7d60hislqo7m.png" 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%2F923bl6mbb91swzm149gd.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%2F923bl6mbb91swzm149gd.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;5. Conversion to 3NF&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;3NF Rule: Remove transitive dependencies (non-prime attributes must depend only on primary key).&lt;/p&gt;

&lt;p&gt;Instructor’s phone depends on Instructor, not Course_ID → we can split Courses into:&lt;/p&gt;

&lt;p&gt;Courses → Course_ID, Course_Name, Instructor_ID&lt;/p&gt;

&lt;p&gt;Instructors → Instructor_ID, Instructor_Name, Instructor_Phone&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CREATE TABLE Instructors (
    InstructorID VARCHAR2(10) PRIMARY KEY,
    InstructorName VARCHAR2(100),
    InstructorPhone VARCHAR2(15)
);

CREATE TABLE Courses3NF (
    CourseID VARCHAR2(10) PRIMARY KEY,
    CourseName VARCHAR2(100),
    InstructorID VARCHAR2(10),
    FOREIGN KEY (InstructorID) REFERENCES Instructor(InstructorID)
);

CREATE TABLE Students3NF (
    StudentID VARCHAR2(10) PRIMARY KEY,
    StudentName VARCHAR2(100)
);

CREATE TABLE Enrollments3NF (
    StudentID VARCHAR2(10),
    CourseID VARCHAR2(10),
    PRIMARY KEY (StudentID, CourseID),
    FOREIGN KEY (StudentID) REFERENCES Student3NF(StudentID),
    FOREIGN KEY (CourseID) REFERENCES Course3NF(CourseID)
);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;SQL Create Tables (3NF):&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%2Fo2gfp4q22s3vb2ubyqxg.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%2Fo2gfp4q22s3vb2ubyqxg.png" 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%2F5mhi0xt261ulzvcvm44e.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%2F5mhi0xt261ulzvcvm44e.png" 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%2F0n120m0k03jrolz4e0hk.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%2F0n120m0k03jrolz4e0hk.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;6: Insert Sample Data&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;-- Instructors
INSERT INTO Instructor VALUES ('I01', 'Dr. Kumar', '9876543210');
INSERT INTO Instructor VALUES ('I02', 'Dr. Mehta', '9123456780');
INSERT INTO Instructor VALUES ('I03', 'Dr. Rao', '9988776655');

-- Courses
INSERT INTO Course3NF VALUES ('C101', 'DBMS', 'I01');
INSERT INTO Course3NF VALUES ('C102', 'Data Mining', 'I02');
INSERT INTO Course3NF VALUES ('C103', 'AI', 'I03');

-- Students
INSERT INTO Student3NF VALUES ('S01', 'Arjun');
INSERT INTO Student3NF VALUES ('S02', 'Priya');
INSERT INTO Student3NF VALUES ('S03', 'Kiran');

-- Enrollment
INSERT INTO Enrollment3NF VALUES ('S01', 'C101');
INSERT INTO Enrollment3NF VALUES ('S01', 'C102');
INSERT INTO Enrollment3NF VALUES ('S02', 'C101');
INSERT INTO Enrollment3NF VALUES ('S03', 'C103');
&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%2Fced43lk418ue4jwfhdnh.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%2Fced43lk418ue4jwfhdnh.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;7. Query with JOINs&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT s.StudentName, c.CourseName, i.InstructorName
FROM Enrollment3NF e
JOIN Student3NF s ON e.StudentID = s.StudentID
JOIN Course3NF c ON e.CourseID = c.CourseID
JOIN Instructor i ON c.InstructorID = i.InstructorID;
&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%2Flnsgiakncfjr9o9t7z49.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%2Flnsgiakncfjr9o9t7z49.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Conclusion&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Normalization ensures:&lt;/p&gt;

&lt;p&gt;Minimal data redundancy&lt;br&gt;
Data integrity&lt;br&gt;
Easier maintenance and updates&lt;/p&gt;

&lt;p&gt;Using 1NF → 2NF → 3NF in Oracle SQL allows building scalable and efficient database designs.&lt;/p&gt;

&lt;p&gt;Special thanks to &lt;a class="mentioned-user" href="https://dev.to/santhoshnc"&gt;@santhoshnc&lt;/a&gt; for guiding me through database normalization concepts.&lt;/p&gt;

&lt;p&gt;#SQL #Oracle #DBMS #DatabaseNormalization #1NF #2NF #3NF #DataModeling&lt;/p&gt;

</description>
      <category>programming</category>
      <category>sql</category>
      <category>oracle</category>
      <category>dbms</category>
    </item>
    <item>
      <title>College Student &amp; Course Management System</title>
      <dc:creator>Gangeswara</dc:creator>
      <pubDate>Thu, 21 Aug 2025 04:26:52 +0000</pubDate>
      <link>https://dev.to/ganges07/college-student-course-management-system-1j90</link>
      <guid>https://dev.to/ganges07/college-student-course-management-system-1j90</guid>
      <description>&lt;p&gt;Introduction &lt;/p&gt;

&lt;p&gt;In this post, I am sharing a simple Database Management System (DBMS) mini project using SQL (Oracle).&lt;br&gt;
I designed a database schema for a college system that manages Students, Faculty, Courses, and Enrollments.&lt;br&gt;
Then I implemented different queries step by step — from table creation to stored procedures.&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%2Ftsz37qlgislv93q0sa21.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%2Ftsz37qlgislv93q0sa21.png" 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%2Fg9372nv4f3g5v68181vi.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%2Fg9372nv4f3g5v68181vi.png" 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%2Fhi4nx156bsqyijckgshi.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%2Fhi4nx156bsqyijckgshi.png" 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%2Fd635bqd7n7i1dzz5v0v1.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%2Fd635bqd7n7i1dzz5v0v1.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🗂 Database Schema&lt;/p&gt;

&lt;p&gt;Students table → stores student details&lt;/p&gt;

&lt;p&gt;Faculty table → stores faculty details&lt;/p&gt;

&lt;p&gt;Courses table → stores courses offered&lt;/p&gt;

&lt;p&gt;Enrollments table → connects students and courses (many-to-many relationship)&lt;/p&gt;

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

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

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

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

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

&lt;p&gt;INSERT INTO Students (StudentID, Name, Dept, DOB, Email)&lt;br&gt;
VALUES (2, 'Priya Sharma', 'ECE', TO_DATE('2003-07-22','YYYY-MM-DD'), '&lt;a href="mailto:priya.sharma@example.com"&gt;priya.sharma@example.com&lt;/a&gt;');&lt;/p&gt;

&lt;p&gt;INSERT INTO Students (StudentID, Name, Dept, DOB, Email)&lt;br&gt;
VALUES (3, 'Rahul Raj', 'MECH', TO_DATE('2004-11-10','YYYY-MM-DD'), '&lt;a href="mailto:rahul.raj@example.com"&gt;rahul.raj@example.com&lt;/a&gt;');&lt;/p&gt;

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

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

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

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;COMMIT;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;END;&lt;br&gt;
/&lt;br&gt;
🎯 Conclusion&lt;/p&gt;

&lt;p&gt;Through this mini-project, I practiced DDL, DML, Constraints, Joins, Group By, Views, and Stored Procedures in SQL.&lt;br&gt;
This step-by-step approach gave me a solid understanding of how a database schema works in real-world academic systems.&lt;/p&gt;

&lt;p&gt;Thanks to &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>webdev</category>
      <category>programming</category>
      <category>beginners</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
