<?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: Raksh !!</title>
    <description>The latest articles on DEV Community by Raksh !! (@raksh__e858eea76f8f29ed).</description>
    <link>https://dev.to/raksh__e858eea76f8f29ed</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%2F3449140%2F526555ad-d2ea-4024-a1e5-78a927784b3e.jpg</url>
      <title>DEV Community: Raksh !!</title>
      <link>https://dev.to/raksh__e858eea76f8f29ed</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/raksh__e858eea76f8f29ed"/>
    <language>en</language>
    <item>
      <title>Cursors &amp; Triggers in DBMS</title>
      <dc:creator>Raksh !!</dc:creator>
      <pubDate>Tue, 11 Nov 2025 17:56:19 +0000</pubDate>
      <link>https://dev.to/raksh__e858eea76f8f29ed/cursors-triggers-in-dbms-50pe</link>
      <guid>https://dev.to/raksh__e858eea76f8f29ed/cursors-triggers-in-dbms-50pe</guid>
      <description>&lt;h1&gt;
  
  
  dbms #powerautomate #cursors
&lt;/h1&gt;

&lt;h1&gt;
  
  
  data
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;br&gt;
Databases are the backbone of almost every software application today. From banking systems to e-commerce sites, managing and manipulating data efficiently is crucial. While SQL gives us powerful tools for querying and updating data, there are advanced features in DBMS like Cursors and Triggers that allow us to handle complex situations with ease.&lt;/p&gt;

&lt;p&gt;In this blog, we will explore:&lt;/p&gt;

&lt;p&gt;What Cursors are, why we need them, and how to use them.&lt;br&gt;
What Triggers are, how they help automate actions, and practical examples.&lt;br&gt;
Cursors in DBMS&lt;br&gt;
What is a Cursor?&lt;/p&gt;

&lt;p&gt;A Cursor in DBMS is a database object that allows us to fetch and process query results row by row. Normally, SQL works with sets of data all at once, but sometimes we need to handle each row individually. That’s where cursors come in.&lt;/p&gt;

&lt;p&gt;Think of it like a pointer that moves through the rows of a result set one at a time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Use Cursors?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When we need row-by-row processing.&lt;br&gt;
To perform custom logic on each record.&lt;br&gt;
To store results temporarily and use them later.&lt;br&gt;
Example: Cursor for High Salary Employees&lt;br&gt;
Suppose we have an Employee table:&lt;/p&gt;

&lt;p&gt;CREATE TABLE Employee (&lt;br&gt;
    emp_id INT PRIMARY KEY,&lt;br&gt;
    emp_name VARCHAR(100),&lt;br&gt;
    salary DECIMAL(10,2)&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;INSERT INTO Employee VALUES&lt;br&gt;
(1, 'Bob Smith', 60000),&lt;br&gt;
(2, 'Charlie Brown', 55000),&lt;br&gt;
(3, 'Edward Wilson', 75000),&lt;br&gt;
(4, 'Fiona Davis', 52000),&lt;br&gt;
(5, 'Hannah Lee', 60000);&lt;br&gt;
(6,'naveens',67000);&lt;br&gt;
Now, let’s create a stored procedure with a cursor that selects employees earning more than 50,000.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DELIMITER $$&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;CREATE PROCEDURE get_high_salary_employees()&lt;br&gt;
BEGIN&lt;br&gt;
    DECLARE done INT DEFAULT 0;&lt;br&gt;
    DECLARE v_emp_name VARCHAR(100);&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DECLARE emp_cursor CURSOR FOR
    SELECT emp_name FROM Employee WHERE salary &amp;gt; 50000;

DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

CREATE TABLE IF NOT EXISTS high_salary_emp(emp_name VARCHAR(100));
TRUNCATE TABLE high_salary_emp;

OPEN emp_cursor;

read_loop: LOOP
    FETCH emp_cursor INTO v_emp_name;
    IF done = 1 THEN
        LEAVE read_loop;
    END IF;
    INSERT INTO high_salary_emp VALUES (v_emp_name);
END LOOP;

CLOSE emp_cursor;

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

&lt;/div&gt;

&lt;p&gt;END$$&lt;/p&gt;

&lt;p&gt;DELIMITER**** ;&lt;/p&gt;

&lt;p&gt;CALL get_high_salary_employees();&lt;br&gt;
Output:&lt;/p&gt;

&lt;p&gt;This shows how a cursor fetches each row one by one and stores it into another table.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Triggers in DBMS&lt;/strong&gt;&lt;br&gt;
A Trigger is a special type of stored program that automatically executes when a specific event occurs in a table. Events can be:&lt;/p&gt;

&lt;p&gt;INSERT&lt;br&gt;
UPDATE&lt;br&gt;
DELETE&lt;br&gt;
In simple words, triggers are rules that fire automatically when data changes.&lt;/p&gt;

&lt;p&gt;Why Use Triggers?&lt;/p&gt;

&lt;p&gt;To maintain data integrity.&lt;br&gt;
To automatically log changes.&lt;br&gt;
To enforce business rules.&lt;br&gt;
Example 1: AFTER INSERT Trigger (Audit Log)&lt;br&gt;
We want to keep track of all new employees added. So, we create an audit table:&lt;/p&gt;

&lt;p&gt;CREATE TABLE Employee_Audit (&lt;br&gt;
    audit_id INT AUTO_INCREMENT PRIMARY KEY,&lt;br&gt;
    emp_id INT,&lt;br&gt;
    emp_name VARCHAR(100),&lt;br&gt;
    salary DECIMAL(10,2),&lt;br&gt;
    action_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP&lt;br&gt;
);&lt;br&gt;
Now, the trigger:&lt;/p&gt;

&lt;p&gt;DELIMITER $$&lt;/p&gt;

&lt;p&gt;CREATE TRIGGER after_employee_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 (emp_id, emp_name, salary)&lt;br&gt;
    VALUES (NEW.emp_id, NEW.emp_name, NEW.salary);&lt;br&gt;
END$$&lt;/p&gt;

&lt;p&gt;DELIMITER ;&lt;br&gt;
Test it:&lt;/p&gt;

&lt;p&gt;INSERT INTO Employee VALUES (34, 'Meera', 72000);&lt;/p&gt;

&lt;p&gt;SELECT * FROM Employee_Audit;&lt;br&gt;
Output shows Meera automatically logged in Employee_Audit.&lt;/p&gt;

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

&lt;p&gt;Cursors let us handle query results row by row, useful for special operations.&lt;br&gt;
Triggers allow us to automatically enforce rules or log changes when data is inserted, updated, or deleted.&lt;br&gt;
Together, they give DBMS more power, automation, and data integrity.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Acid Properties in SQL</title>
      <dc:creator>Raksh !!</dc:creator>
      <pubDate>Tue, 11 Nov 2025 17:43:39 +0000</pubDate>
      <link>https://dev.to/raksh__e858eea76f8f29ed/acid-properties-in-sql-3gn8</link>
      <guid>https://dev.to/raksh__e858eea76f8f29ed/acid-properties-in-sql-3gn8</guid>
      <description>&lt;p&gt;Understanding ACID Properties in SQL Transactions&lt;/p&gt;

&lt;h1&gt;
  
  
  beginners #database #sql #architecture
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Intro&lt;/strong&gt;&lt;br&gt;
When working with databases, data integrity is everything. Imagine transferring money from one account to another — you wouldn’t want money to disappear or double by mistake, right?&lt;/p&gt;

&lt;p&gt;That’s where ACID properties come in. They ensure our transactions are reliable, safe, and consistent, even when things go wrong.&lt;/p&gt;

&lt;p&gt;In this blog, let’s break down ACID with SQL examples using a simple Accounts &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is ACID?&lt;/strong&gt;&lt;br&gt;
ACID stands for:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Atomicity&lt;/em&gt; → All or nothing (no partial transactions).&lt;br&gt;
&lt;em&gt;Consistency&lt;/em&gt; → Data must remain valid before and after a transaction.&lt;br&gt;
&lt;em&gt;Isolation&lt;/em&gt; → Transactions run independently of each other.&lt;br&gt;
&lt;em&gt;Durability&lt;/em&gt; → Once committed, changes are permanent (even after crash).&lt;br&gt;
Setting up a Table&lt;/p&gt;

&lt;p&gt;We’ll create an Accounts table with a balance check to avoid negative values.&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) -- ensures no negative balance&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;INSERT INTO Accounts VALUES&lt;br&gt;
(101, 'Santhosh', 5000),&lt;br&gt;
(102, 'Ganges', 3000),&lt;br&gt;
(103, 'Rakshanth', 7000),&lt;br&gt;
(104, 'Jaswant', 6000);&lt;br&gt;
&lt;strong&gt;Atomicity&lt;/strong&gt;&lt;br&gt;
Atomicity ensures that either the entire transaction happens or nothing happens.&lt;/p&gt;

&lt;p&gt;Example: Money transfer (Rollback midway)&lt;/p&gt;

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

&lt;p&gt;-- Deduct ₹1000 from Alice&lt;br&gt;
UPDATE Accounts SET balance = balance - 1000 WHERE acc_no = 101;&lt;/p&gt;

&lt;p&gt;-- Add ₹1000 to Bob&lt;br&gt;
UPDATE Accounts SET balance = balance + 1000 WHERE acc_no = 102;&lt;/p&gt;

&lt;p&gt;-- Oops! Something went wrong&lt;br&gt;
ROLLBACK;&lt;/p&gt;

&lt;p&gt;-- Check balances (should remain unchanged)&lt;br&gt;
SELECT * FROM Accounts;&lt;br&gt;
Since we rolled back, no changes were applied. That’s Atomicity in action!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Consistency&lt;/strong&gt;&lt;br&gt;
Consistency ensures that a transaction brings the database from one valid to another.&lt;/p&gt;

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

&lt;p&gt;INSERT INTO Accounts VALUES (104, 'Naveens', -500);&lt;br&gt;
This fails because of our CHECK (balance &amp;gt;= 0) constraint.&lt;br&gt;
The database remains valid → Consistency maintained.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Isolation&lt;/strong&gt;&lt;br&gt;
Isolation ensures that transactions don’t interfere with each other.&lt;/p&gt;

&lt;p&gt;Imagine two sessions running at the same time:&lt;/p&gt;

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

&lt;p&gt;START TRANSACTION;&lt;br&gt;
UPDATE Accounts SET balance = balance - 2000 WHERE acc_no = 103;&lt;br&gt;
-- Don’t commit yet&lt;br&gt;
Session 2:&lt;/p&gt;

&lt;p&gt;SELECT * FROM Accounts WHERE acc_no = 103;&lt;br&gt;
On READ COMMITTED → Session 2 sees old balance.&lt;br&gt;
On READ UNCOMMITTED → Session 2 may see uncommitted changes (dirty read).&lt;br&gt;
On SERIALIZABLE → Session 2 waits until Session 1 commits.&lt;br&gt;
Different isolation levels decide how much transactions can "see" each other’s work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Durability&lt;/strong&gt;&lt;br&gt;
Durability ensures that once a transaction is committed, it survives crashes.&lt;/p&gt;

&lt;p&gt;START TRANSACTION;&lt;br&gt;
UPDATE Accounts SET balance = balance + 500 WHERE acc_no = 102;&lt;br&gt;
COMMIT;&lt;br&gt;
Now restart your database and run:&lt;/p&gt;

&lt;p&gt;SELECT * FROM Accounts WHERE acc_no = 102;&lt;br&gt;
You’ll still see the updated balance.&lt;br&gt;
That’s Durability — committed data is permanent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Final Thoughts&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The ACID properties are the backbone of reliable databases.&lt;/p&gt;

&lt;p&gt;Atomicity → No partial updates&lt;br&gt;
Consistency → Always valid data&lt;br&gt;
Isolation → Independent transactions&lt;br&gt;
Durability → Permanent changes&lt;br&gt;
So next time you run a SQL transaction, remember: ACID is silently ensuring your data stays safe, even if things go wrong.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>database</category>
      <category>architecture</category>
      <category>sql</category>
    </item>
    <item>
      <title>Transactions , Deadlocks &amp; Log Based Recovery in SQL</title>
      <dc:creator>Raksh !!</dc:creator>
      <pubDate>Tue, 11 Nov 2025 17:27:00 +0000</pubDate>
      <link>https://dev.to/raksh__e858eea76f8f29ed/transactions-deadlocks-log-based-recovery-in-sql-1pci</link>
      <guid>https://dev.to/raksh__e858eea76f8f29ed/transactions-deadlocks-log-based-recovery-in-sql-1pci</guid>
      <description>&lt;p&gt;#acid #deadlock #logging #sql&lt;/p&gt;

&lt;p&gt;Intro&lt;br&gt;
In this blog, let’s explore three very important database concepts: Transactions, Deadlocks, and Log-Based Recovery. We’ll be using a simple Accounts table and running SQL queries to demonstrate these in action.&lt;/p&gt;

&lt;p&gt;Schema Setup&lt;br&gt;
First, let’s create a table Accounts and insert some sample data.&lt;/p&gt;

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

&lt;p&gt;INSERT INTO Accounts VALUES&lt;br&gt;
(1, 'Alice', 1000),&lt;br&gt;
(2, 'Bob', 1500),&lt;br&gt;
(3, 'Charlie', 2000);&lt;br&gt;
acc_no  name    balance&lt;br&gt;
1   Alice   1000&lt;br&gt;
2   Bob 1500&lt;br&gt;
3   Charlie 2000&lt;br&gt;
Transaction – Atomicity &amp;amp; Rollback&lt;br&gt;
Transactions are all-or-nothing operations. Either all changes are applied (commit) or none (rollback).&lt;/p&gt;

&lt;p&gt;Let’s try transferring 500 from Alice to Bob but roll it back before committing.&lt;/p&gt;

&lt;p&gt;-- Start transaction&lt;br&gt;
START TRANSACTION;&lt;/p&gt;

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

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

&lt;p&gt;-- Check balances before rollback&lt;br&gt;
SELECT * FROM Accounts;&lt;/p&gt;

&lt;p&gt;-- Rollback transaction&lt;br&gt;
ROLLBACK;&lt;/p&gt;

&lt;p&gt;-- Check balances after rollback&lt;br&gt;
SELECT * FROM Accounts;&lt;br&gt;
Result: Alice still has 1000, Bob has 1500.&lt;br&gt;
No partial update happened – this is Atomicity.&lt;/p&gt;

&lt;p&gt;Deadlock Simulation&lt;br&gt;
Deadlocks happen when two transactions are waiting for each other’s resources.&lt;/p&gt;

&lt;p&gt;We’ll simulate this using two sessions:&lt;/p&gt;

&lt;p&gt;Session 1&lt;br&gt;
START TRANSACTION;&lt;br&gt;
-- Lock Bob&lt;br&gt;
UPDATE Accounts SET balance = balance - 50 WHERE name = 'Bob';&lt;/p&gt;

&lt;p&gt;-- Now try updating Alice (but Alice is locked by Session 1)&lt;br&gt;
UPDATE Accounts SET balance = balance + 50 WHERE name = 'Alice';&lt;br&gt;
At this point, both sessions are waiting for each other → Deadlock occurs.&lt;br&gt;
The database will detect this automatically and kill one transaction, rolling it back.&lt;/p&gt;

&lt;p&gt;Log-Based Recovery&lt;br&gt;
Databases maintain logs (like binary log in MySQL or WAL in PostgreSQL) to ensure durability and recovery.&lt;/p&gt;

&lt;p&gt;Let’s test this:&lt;/p&gt;

&lt;p&gt;-- Start transaction&lt;br&gt;
START TRANSACTION;&lt;/p&gt;

&lt;p&gt;-- Update a record&lt;br&gt;
UPDATE Accounts SET balance = balance + 200 WHERE name = 'Charlie';&lt;/p&gt;

&lt;p&gt;-- Rollback&lt;br&gt;
&lt;strong&gt;ROLLBACK&lt;/strong&gt;;&lt;br&gt;
Even though the update was rolled back, the log will record both the update and the undo operation.&lt;br&gt;
This ensures that if the system crashes, recovery can undo uncommitted transactions and redo committed ones.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Takeaways&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Atomicity: All or nothing – rollback prevents partial updates.&lt;br&gt;
Deadlock: Two transactions waiting for each other’s lock → system resolves it.&lt;br&gt;
Log-Based Recovery: Every change is logged so the DB can recover from crashes.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>tutorial</category>
      <category>database</category>
      <category>sql</category>
    </item>
    <item>
      <title>Indexing, Hashing &amp; Query Optimization in SQL</title>
      <dc:creator>Raksh !!</dc:creator>
      <pubDate>Tue, 11 Nov 2025 17:20:33 +0000</pubDate>
      <link>https://dev.to/raksh__e858eea76f8f29ed/indexing-hashing-query-optimization-in-sql-4fho</link>
      <guid>https://dev.to/raksh__e858eea76f8f29ed/indexing-hashing-query-optimization-in-sql-4fho</guid>
      <description>&lt;h1&gt;
  
  
  database #performance #algorithms
&lt;/h1&gt;

&lt;p&gt;sql&lt;br&gt;
Intro&lt;br&gt;
When working with large databases, retrieving data efficiently becomes a big challenge. SQL provides indexing and hashing techniques to speed up query execution. In this blog, we’ll explore B-Tree, B+ Tree, and Hash indexes with hands-on SQL examples using a Students table.&lt;/p&gt;

&lt;p&gt;Create the Students Table&lt;/p&gt;

&lt;p&gt;CREATE TABLE Students (&lt;br&gt;
    roll_no INT PRIMARY KEY,&lt;br&gt;
    name VARCHAR(50),&lt;br&gt;
    dept VARCHAR(20),&lt;br&gt;
    cgpa DECIMAL(3,2)&lt;br&gt;
);&lt;br&gt;
Insert Sample Records&lt;/p&gt;

&lt;p&gt;INSERT INTO Students VALUES&lt;br&gt;
(101, 'Aarav', 'CSBS', 8.5),&lt;br&gt;
(102, 'Meera', 'ECE', 7.2),&lt;br&gt;
(103, 'Rohan', 'MECH', 6.9),&lt;br&gt;
(104, 'Sita', 'CIVIL', 8.1),&lt;br&gt;
(105, 'Vikram', 'CSE', 9.0),&lt;br&gt;
(106, 'Priya', 'IT', 8.3),&lt;br&gt;
(107, 'Arjun', 'CSBS', 7.5),&lt;br&gt;
(108, 'Neha', 'ECE', 8.7),&lt;br&gt;
(109, 'Kiran', 'CSE', 6.8),&lt;br&gt;
(110, 'Rahul', 'CSBS', 9.2),&lt;br&gt;
(111, 'Sneha', 'MECH', 7.9),&lt;br&gt;
(112, 'Dev', 'CIVIL', 8.4),&lt;br&gt;
(113, 'Pooja', 'CSE', 7.3),&lt;br&gt;
(114, 'Varun', 'IT', 8.6),&lt;br&gt;
(115, 'Isha', 'ECE', 9.1),&lt;br&gt;
(116, 'Nikhil', 'MECH', 7.6),&lt;br&gt;
(117, 'Ritu', 'CIVIL', 6.5),&lt;br&gt;
(118, 'Sameer', 'CSE', 8.8),&lt;br&gt;
(119, 'Tina', 'CSBS', 7.8),&lt;br&gt;
(120, 'Yash', 'IT', 9.3);&lt;br&gt;
Now we have 20 student records.&lt;/p&gt;

&lt;p&gt;Create a B-Tree Index on roll_no&lt;br&gt;
B-Tree indexes are default in most RDBMS. They make searching on primary/unique columns faster.&lt;/p&gt;

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

&lt;p&gt;The DBMS uses the B-Tree index to find roll_no = 110 quickly without scanning the whole table.&lt;/p&gt;

&lt;p&gt;Create a B+ Tree Index on cgpa&lt;br&gt;
B+ Trees are widely used for range queries.&lt;/p&gt;

&lt;p&gt;CREATE INDEX idx_cgpa_bplustree ON Students(cgpa);&lt;/p&gt;

&lt;p&gt;Instead of checking each row, the B+ Tree index helps to traverse efficiently for CGPA values greater than 8.5 .&lt;/p&gt;

&lt;p&gt;Create a Hash Index on dept&lt;br&gt;
Hash indexes are best for equality lookups (e.g., = condition).&lt;/p&gt;

&lt;p&gt;CREATE INDEX idx_dept_hash ON Students(dept) USING HASH;&lt;/p&gt;

&lt;p&gt;Query Optimization&lt;/p&gt;

&lt;p&gt;Without indexes → Full Table Scan (slow for large datasets).&lt;br&gt;
With indexes → Optimized Execution Plan (quick lookup).&lt;br&gt;
Use EXPLAIN to check whether your query uses the index.&lt;br&gt;
Final Thoughts&lt;/p&gt;

&lt;p&gt;B-Tree Index → Best for unique lookups &amp;amp; ordering.&lt;br&gt;
B+ Tree Index → Best for range queries.&lt;br&gt;
Hash Index → Best for equality lookups.&lt;br&gt;
By using indexes wisely, we can reduce query execution time drastically in real-world applications.&lt;/p&gt;

</description>
      <category>algorithms</category>
      <category>performance</category>
      <category>database</category>
      <category>sql</category>
    </item>
    <item>
      <title>Crud Operations in Mongodb</title>
      <dc:creator>Raksh !!</dc:creator>
      <pubDate>Tue, 11 Nov 2025 17:14:58 +0000</pubDate>
      <link>https://dev.to/raksh__e858eea76f8f29ed/crud-operations-in-mongodb-3kj2</link>
      <guid>https://dev.to/raksh__e858eea76f8f29ed/crud-operations-in-mongodb-3kj2</guid>
      <description>&lt;p&gt;CRUD OPERATIONS IN MONGODB&lt;/p&gt;

&lt;p&gt;mongodb&lt;/p&gt;

&lt;p&gt;database&lt;/p&gt;

&lt;p&gt;data&lt;/p&gt;

&lt;p&gt;coding&lt;br&gt;
INTRODUCTION&lt;br&gt;
MongoDB is one of the most popular NoSQL databases, widely used for its flexibility and scalability. Unlike relational databases, MongoDB stores data in collections as JSON-like documents.&lt;/p&gt;

&lt;p&gt;In this blog, we’ll perform CRUD (Create, Read, Update, Delete) operations on a simple college student schema to understand MongoDB basics hands-on.&lt;/p&gt;

&lt;p&gt;Here we are using MongoDB Shell for scripting in MongoDB Compass&lt;br&gt;
run all the commands in MongoDB Shell. this will work great. &lt;/p&gt;

&lt;p&gt;Student Schema&lt;br&gt;
We’ll use a collection called students, and each document follows this basic structure:&lt;/p&gt;

&lt;p&gt;{&lt;/p&gt;

&lt;p&gt;Create (Insert)&lt;br&gt;
Inserting 5 student records:&lt;/p&gt;

&lt;p&gt;This will create 5 documents in the students collection.&lt;/p&gt;

&lt;p&gt;Read (Query)&lt;br&gt;
Display all student records:&lt;/p&gt;

&lt;p&gt;db.students.find()&lt;/p&gt;

&lt;p&gt;Find all students with CGPA &amp;gt; 8:&lt;/p&gt;

&lt;p&gt;db.students.find({ cgpa: { $gt: 8 } })&lt;/p&gt;

</description>
    </item>
    <item>
      <title>1NF , 2NF, 3NF in DBMS...</title>
      <dc:creator>Raksh !!</dc:creator>
      <pubDate>Wed, 08 Oct 2025 05:12:20 +0000</pubDate>
      <link>https://dev.to/raksh__e858eea76f8f29ed/1nf-2nf-3nf-in-dbms-5789</link>
      <guid>https://dev.to/raksh__e858eea76f8f29ed/1nf-2nf-3nf-in-dbms-5789</guid>
      <description>&lt;p&gt;//1 NF&lt;br&gt;
CREATE TABLE StudentCourses (&lt;br&gt;
    StudentID VARCHAR(10),&lt;br&gt;
    StudentName VARCHAR(50),&lt;br&gt;
    CourseID VARCHAR(10),&lt;br&gt;
    CourseName VARCHAR(50),&lt;br&gt;
    Instructor VARCHAR(50),&lt;br&gt;
    InstructorPhone VARCHAR(15)&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;INSERT INTO StudentCourses VALUES ('S01', 'Arjun', 'C101', 'DBMS', 'Dr. Kumar', '9876543210');&lt;br&gt;
INSERT INTO StudentCourses VALUES ('S01', 'Arjun', 'C102', 'Data Mining', 'Dr. Mehta', '9123456780');&lt;br&gt;
INSERT INTO StudentCourses VALUES ('S02', 'Priya', 'C101', 'DBMS', 'Dr. Kumar', '9876543210');&lt;br&gt;
INSERT INTO StudentCourses VALUES ('S03', 'Kiran', 'C103', 'AI', 'Dr. Rao', '9988776655');&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%2Fl9vjtj4nrfh1oyst9jwk.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%2Fl9vjtj4nrfh1oyst9jwk.jpg" alt=" " width="800" height="262"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;///2 NF&lt;br&gt;
CREATE TABLE Student (&lt;br&gt;
    StudentID VARCHAR(10) PRIMARY KEY,&lt;br&gt;
    StudentName VARCHAR(50)&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;INSERT INTO Student VALUES ('S01', 'Arjun');&lt;br&gt;
INSERT INTO Student VALUES ('S02', 'Priya');&lt;br&gt;
INSERT INTO Student VALUES ('S03', 'Kiran');&lt;/p&gt;

&lt;p&gt;CREATE TABLE Course (&lt;br&gt;
    CourseID VARCHAR(10) PRIMARY KEY,&lt;br&gt;
    CourseName VARCHAR(50),&lt;br&gt;
    Instructor VARCHAR(50),&lt;br&gt;
    InstructorPhone VARCHAR(15)&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;INSERT INTO Course VALUES ('C101', 'DBMS', 'Dr. Kumar', '9876543210');&lt;br&gt;
INSERT INTO Course VALUES ('C102', 'Data Mining', 'Dr. Mehta', '9123456780');&lt;br&gt;
INSERT INTO Course VALUES ('C103', 'AI', 'Dr. Rao', '9988776655');&lt;/p&gt;

&lt;p&gt;CREATE TABLE StudentCourse (&lt;br&gt;
    StudentID VARCHAR(10),&lt;br&gt;
    CourseID VARCHAR(10),&lt;br&gt;
    PRIMARY KEY (StudentID, CourseID),&lt;br&gt;
    FOREIGN KEY (StudentID) REFERENCES Student(StudentID),&lt;br&gt;
    FOREIGN KEY (CourseID) REFERENCES Course(CourseID)&lt;br&gt;
);&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fagow0p9rn56eti8gsu3e.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%2Fagow0p9rn56eti8gsu3e.jpg" alt=" " width="800" height="262"&gt;&lt;/a&gt; &lt;br&gt;
////3 NF&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%2F9cqgt0a9bjlz1oyrbirl.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%2F9cqgt0a9bjlz1oyrbirl.jpg" alt=" " width="800" height="262"&gt;&lt;/a&gt;&lt;br&gt;
CREATE TABLE Student (&lt;br&gt;
    StudentID VARCHAR(10) PRIMARY KEY,&lt;br&gt;
    StudentName VARCHAR(50)&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;INSERT INTO Student VALUES ('S01', 'Arjun');&lt;br&gt;
INSERT INTO Student VALUES ('S02', 'Priya');&lt;br&gt;
INSERT INTO Student VALUES ('S03', 'Kiran');&lt;/p&gt;

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

&lt;p&gt;INSERT INTO Course VALUES ('C101', 'DBMS', 'Dr. Kumar');&lt;br&gt;
INSERT INTO Course VALUES ('C102', 'Data Mining', 'Dr. Mehta');&lt;br&gt;
INSERT INTO Course VALUES ('C103', 'AI', 'Dr. Rao');&lt;/p&gt;

&lt;p&gt;CREATE TABLE Instructor (&lt;br&gt;
    Instructor VARCHAR(50) PRIMARY KEY,&lt;br&gt;
    InstructorPhone VARCHAR(15)&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;INSERT INTO Instructor VALUES ('Dr. Kumar', '9876543210');&lt;br&gt;
INSERT INTO Instructor VALUES ('Dr. Mehta', '9123456780');&lt;br&gt;
INSERT INTO Instructor VALUES ('Dr. Rao', '9988776655');&lt;/p&gt;

&lt;p&gt;CREATE TABLE StudentCourse (&lt;br&gt;
    StudentID VARCHAR(10),&lt;br&gt;
    CourseID VARCHAR(10),&lt;br&gt;
    PRIMARY KEY (StudentID, CourseID),&lt;br&gt;
    FOREIGN KEY (StudentID) REFERENCES Student(StudentID),&lt;br&gt;
    FOREIGN KEY (CourseID) REFERENCES Course(CourseID)&lt;br&gt;
);&lt;/p&gt;

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

</description>
      <category>dbms</category>
    </item>
    <item>
      <title>College Student and course management system</title>
      <dc:creator>Raksh !!</dc:creator>
      <pubDate>Mon, 25 Aug 2025 17:27:27 +0000</pubDate>
      <link>https://dev.to/raksh__e858eea76f8f29ed/college-student-and-course-management-system-5254</link>
      <guid>https://dev.to/raksh__e858eea76f8f29ed/college-student-and-course-management-system-5254</guid>
      <description>&lt;p&gt;&lt;a href="https://dev.tourl"&gt;&lt;/a&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;INSERT INTO Students (StudentID, Name, Dept, DOB, Email)&lt;br&gt;
VALUES (1, 'Arun Kumar', 'CSE', DATE '2003-05-14', '&lt;a href="mailto:arun.k@college.edu"&gt;arun.k@college.edu&lt;/a&gt;');&lt;/p&gt;

&lt;p&gt;INSERT INTO Students (StudentID, Name, Dept, DOB, Email)&lt;br&gt;
VALUES (2, 'Priya Sharma', 'ECE', DATE '2002-08-20', '&lt;a href="mailto:priya.s@college.edu"&gt;priya.s@college.edu&lt;/a&gt;');&lt;/p&gt;

&lt;p&gt;INSERT INTO Students (StudentID, Name, Dept, DOB, Email)&lt;br&gt;
VALUES (3, 'Rahul Verma', 'MECH', DATE '2001-12-10', '&lt;a href="mailto:rahul.v@college.edu"&gt;rahul.v@college.edu&lt;/a&gt;');&lt;/p&gt;

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

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

&lt;p&gt;SELECT Name AS StudentName,&lt;br&gt;
       UPPER(Name) AS UpperCaseName,&lt;br&gt;
       LENGTH(Email) AS EmailLength&lt;br&gt;
FROM Students;&lt;/p&gt;

&lt;p&gt;SELECT AVG(Credits) AS AvgCredits,&lt;br&gt;
       (SELECT COUNT(*) FROM Students) AS TotalStudents&lt;br&gt;
FROM Courses;&lt;/p&gt;

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

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

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

&lt;p&gt;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 Course&lt;/p&gt;

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