<?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>Forem: NISHANTH MOORTHI 24CB036</title>
    <description>The latest articles on Forem by NISHANTH MOORTHI 24CB036 (@nishanth_moorthi24cb036_).</description>
    <link>https://forem.com/nishanth_moorthi24cb036_</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%2F3554037%2F8767d6bd-9b12-445b-b7c0-ed5b7dc1116e.png</url>
      <title>Forem: NISHANTH MOORTHI 24CB036</title>
      <link>https://forem.com/nishanth_moorthi24cb036_</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/nishanth_moorthi24cb036_"/>
    <language>en</language>
    <item>
      <title>MongoDB CRUD</title>
      <dc:creator>NISHANTH MOORTHI 24CB036</dc:creator>
      <pubDate>Wed, 08 Oct 2025 14:48:37 +0000</pubDate>
      <link>https://forem.com/nishanth_moorthi24cb036_/mangodb-crud-5d28</link>
      <guid>https://forem.com/nishanth_moorthi24cb036_/mangodb-crud-5d28</guid>
      <description>&lt;p&gt;Getting Hands-On with MongoDB Atlas: CRUD Operations Made Simple&lt;br&gt;
Hey devs&lt;/p&gt;

&lt;p&gt;I recently dove into MongoDB Atlas to explore how CRUD operations work in a cloud-hosted NoSQL environment—and I wanted to share a few insights and screenshots from my journey. If you're just getting started with MongoDB or curious about how Atlas simplifies database management, this post is for you!&lt;/p&gt;

&lt;p&gt;What I Built&lt;br&gt;
I created a database named CRUD and a collection called students. Using the Atlas UI, I performed basic operations like:&lt;/p&gt;

&lt;p&gt;Insert: Added student records with fields like name, age, year, and department.&lt;/p&gt;

&lt;p&gt;Query: Filtered documents using operators like $gt, $or, and range queries with $gte and $lte.&lt;/p&gt;

&lt;p&gt;Update: Modified fields directly in the UI—super intuitive!&lt;/p&gt;

&lt;p&gt;Delete: Flagged documents for deletion with a simple click.&lt;/p&gt;

&lt;p&gt;Sample Queries I Used&lt;br&gt;
Here are a few examples of queries I ran:&lt;/p&gt;

&lt;p&gt;js&lt;br&gt;
// Find students with student_id greater than 5000&lt;br&gt;
{ "student_id": { "$gt": "5000" } }&lt;/p&gt;

&lt;p&gt;// Find students aged either 1 or 3&lt;br&gt;
{ "$or": [ { "age": 1 }, { "age": 3 } ] }&lt;/p&gt;

&lt;p&gt;// Find students aged between 1.5 and 7.5&lt;br&gt;
{ "age": { "$gte": 1.5, "$lte": 7.5 } }&lt;br&gt;
Screenshots&lt;br&gt;
I’ve included screenshots showing:&lt;/p&gt;

&lt;p&gt;How documents are structured in MongoDB Atlas&lt;/p&gt;

&lt;p&gt;How filters are applied and results are displayed&lt;/p&gt;

&lt;p&gt;How easy it is to modify or delete documents&lt;/p&gt;

&lt;p&gt;These visuals really help demystify the process for beginners.&lt;/p&gt;

&lt;p&gt;Why MongoDB Atlas?&lt;br&gt;
No setup headaches—just launch and go.&lt;/p&gt;

&lt;p&gt;Built-in UI for managing data without writing shell commands.&lt;/p&gt;

&lt;p&gt;Great for prototyping and learning NoSQL concepts.&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%2Ftcxd00ocp00989fopsn9.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%2Ftcxd00ocp00989fopsn9.jpg" alt=" " width="800" height="355"&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%2F7i6dzecm3lagzhf7yjaa.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%2F7i6dzecm3lagzhf7yjaa.jpg" alt=" " width="800" height="350"&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%2Fi9upsb7d53s7l6ie92ed.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%2Fi9upsb7d53s7l6ie92ed.jpg" alt=" " width="800" height="381"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj5ojwafs7widtsv133x5.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%2Fj5ojwafs7widtsv133x5.jpg" alt=" " width="800" height="347"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>tutorial</category>
      <category>mongodb</category>
      <category>database</category>
    </item>
    <item>
      <title>TRANSACTION</title>
      <dc:creator>NISHANTH MOORTHI 24CB036</dc:creator>
      <pubDate>Wed, 08 Oct 2025 14:44:36 +0000</pubDate>
      <link>https://forem.com/nishanth_moorthi24cb036_/transaction-31p4</link>
      <guid>https://forem.com/nishanth_moorthi24cb036_/transaction-31p4</guid>
      <description>&lt;p&gt;Understanding MySQL Transactions with Row-Level Locking: A Hands-On Guide&lt;br&gt;
When working with relational databases, ensuring data consistency during concurrent operations is critical. MySQL offers powerful transaction control and row-level locking mechanisms that can help developers maintain integrity even in multi-user environments.&lt;/p&gt;

&lt;p&gt;In this post, I’ll walk through a few real-world examples using MySQL’s START TRANSACTION, SELECT ... FOR UPDATE, and ROLLBACK commands to demonstrate how locking and rollback work in practice.&lt;/p&gt;

&lt;p&gt;Scenario 1: Locking Rows with SELECT ... FOR UPDATE&lt;br&gt;
sql&lt;br&gt;
START TRANSACTION;&lt;/p&gt;

&lt;p&gt;-- Lock Alice's row&lt;br&gt;
SELECT * FROM Accounts WHERE name = 'Alice' FOR UPDATE;&lt;/p&gt;

&lt;p&gt;-- Update Bob's balance (allowed if not locked by another session)&lt;br&gt;
UPDATE Accounts SET balance = balance + 10 WHERE name = 'Bob';&lt;br&gt;
Insight: SELECT ... FOR UPDATE locks the selected row until the transaction is committed or rolled back. This prevents other sessions from modifying it, ensuring safe concurrent operations.&lt;/p&gt;

&lt;p&gt;Scenario 2: Rolling Back a Transaction&lt;br&gt;
sql&lt;br&gt;
START TRANSACTION;&lt;/p&gt;

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

&lt;p&gt;something went wrong? Roll it back!&lt;br&gt;
ROLLBACK;&lt;/p&gt;

&lt;p&gt;Verify balances&lt;br&gt;
SELECT * FROM Accounts;&lt;br&gt;
Insight: ROLLBACK undoes all changes made during the transaction. This is especially useful when an error occurs mid-operation or a condition fails validation.&lt;/p&gt;

&lt;p&gt;Scenario 3: Locking Bob, Updating Alice&lt;br&gt;
sql&lt;br&gt;
START TRANSACTION;&lt;/p&gt;

&lt;p&gt;Lock Bob's row&lt;br&gt;
SELECT * FROM Accounts WHERE name = 'Bob' FOR UPDATE;&lt;/p&gt;

&lt;p&gt;Update Alice's balance&lt;br&gt;
UPDATE Accounts SET balance = balance + 20 WHERE name = 'Alice';&lt;/p&gt;

&lt;p&gt;Insight: Locking one row doesn’t block updates to other rows unless explicitly locked. This allows for fine-grained concurrency control.&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%2F49mfnfkqsjr3wc2ctzwu.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%2F49mfnfkqsjr3wc2ctzwu.jpg" alt=" " width="800" height="471"&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%2Fqq3iczc0xbhpp0tl98qu.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%2Fqq3iczc0xbhpp0tl98qu.jpg" alt=" " width="800" height="332"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbmpqmgrqkexpe6uh6l04.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%2Fbmpqmgrqkexpe6uh6l04.jpg" alt=" " width="800" height="526"&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%2Fe9vpinpkewc6s1n6fbzr.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%2Fe9vpinpkewc6s1n6fbzr.jpg" alt=" " width="800" height="501"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>HASHING</title>
      <dc:creator>NISHANTH MOORTHI 24CB036</dc:creator>
      <pubDate>Wed, 08 Oct 2025 14:43:24 +0000</pubDate>
      <link>https://forem.com/nishanth_moorthi24cb036_/hashing-3p8d</link>
      <guid>https://forem.com/nishanth_moorthi24cb036_/hashing-3p8d</guid>
      <description>&lt;p&gt;Getting Hands-On with Oracle Live SQL: My Journey into Database Fundamentals&lt;br&gt;
Hey devs!&lt;/p&gt;

&lt;p&gt;I recently dove into Oracle Live SQL to sharpen my database skills, and I wanted to share some of the cool things I learned—especially around clusters, indexing, and querying data efficiently.&lt;/p&gt;

&lt;p&gt;Creating a Clustered Setup&lt;br&gt;
I started by experimenting with clusters, which allow related tables to be stored together physically. Here's a snippet of what I tried:&lt;/p&gt;

&lt;p&gt;sql&lt;br&gt;
CREATE CLUSTER emp_dept_cluster (&lt;br&gt;
deptno NUMBER(3)&lt;br&gt;
)&lt;br&gt;
SIZE 512;&lt;/p&gt;

&lt;p&gt;CREATE INDEX idx_emp_dept_cluster&lt;br&gt;
ON CLUSTER emp_dept_cluster;&lt;br&gt;
Then I created two tables—dept and emp—that share the deptno key and are clustered together:&lt;/p&gt;

&lt;p&gt;sql&lt;br&gt;
CREATE TABLE dept (&lt;br&gt;
deptno NUMBER(3),&lt;br&gt;
dname VARCHAR2(14),&lt;br&gt;
loc VARCHAR2(13)&lt;br&gt;
)&lt;br&gt;
CLUSTER emp_dept_cluster (deptno);&lt;/p&gt;

&lt;p&gt;CREATE TABLE emp (&lt;br&gt;
empno NUMBER(4),&lt;br&gt;
ename VARCHAR2(10),&lt;br&gt;
job VARCHAR2(9),&lt;br&gt;
mgr NUMBER(4),&lt;br&gt;
hiredate DATE,&lt;br&gt;
sal NUMBER(7,2),&lt;br&gt;
comm NUMBER(7,2),&lt;br&gt;
deptno NUMBER(3)&lt;br&gt;
)&lt;br&gt;
CLUSTER emp_dept_cluster (deptno);&lt;br&gt;
Pro tip: If you get ORA-00955: name is already used by an existing object, it means you’ve already created that object—just drop it or rename it before retrying.&lt;/p&gt;

&lt;p&gt;Building a Student Table and Querying Data&lt;br&gt;
Next, I created a simple student table and practiced inserting and retrieving data:&lt;/p&gt;

&lt;p&gt;sql&lt;br&gt;
CREATE TABLE student (&lt;br&gt;
roll_no NUMBER,&lt;br&gt;
name VARCHAR2(20),&lt;br&gt;
dept VARCHAR2(10),&lt;br&gt;
cgpa NUMBER&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;INSERT INTO student VALUES (101, 'Alice', 'CS', 8.5);&lt;br&gt;
INSERT INTO student VALUES (110, 'Bob', 'IT', 7.8);&lt;br&gt;
-- more inserts...&lt;br&gt;
SELECT * FROM student;&lt;br&gt;
This helped me understand how to structure data and run basic queries.&lt;/p&gt;

&lt;p&gt;Indexing for Performance&lt;br&gt;
I also explored how indexes improve query performance:&lt;/p&gt;

&lt;p&gt;sql&lt;br&gt;
-- Primary key index is implicit&lt;br&gt;
CREATE TABLE student (&lt;br&gt;
roll_no NUMBER PRIMARY KEY,&lt;br&gt;
name VARCHAR2(50),&lt;br&gt;
dept VARCHAR2(50),&lt;br&gt;
cgpa NUMBER(3,2)&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;-- Explicit index on name&lt;br&gt;
CREATE INDEX idx_name ON student(name);&lt;/p&gt;

&lt;p&gt;-- Composite index&lt;br&gt;
CREATE INDEX idx_dept_cgpa ON student(dept, cgpa);&lt;br&gt;
Using these indexes, I ran queries like:&lt;/p&gt;

&lt;p&gt;sql&lt;br&gt;
SELECT * FROM student WHERE name = 'Jack';&lt;br&gt;
SELECT * FROM student WHERE dept = 'CSE' AND cgpa = 9.5;&lt;br&gt;
The results were fast and efficient—Oracle Live SQL even shows you which indexes are being used!&lt;/p&gt;

&lt;p&gt;Categorizing with CASE Statements&lt;br&gt;
Finally, I played with the CASE clause to categorize products based on price:&lt;/p&gt;

&lt;p&gt;sql&lt;br&gt;
SELECT product_id, product_name,&lt;br&gt;
CASE&lt;br&gt;
WHEN list_price &amp;lt; 200 THEN 'Low'&lt;br&gt;
WHEN list_price BETWEEN 200 AND 500 THEN 'Medium'&lt;br&gt;
ELSE 'High'&lt;br&gt;
END AS cost&lt;br&gt;
FROM products&lt;br&gt;
ORDER BY cost;&lt;br&gt;
This is a great way to add logic directly into your queries.&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%2F1k01rrqswhcitmlb2lqu.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%2F1k01rrqswhcitmlb2lqu.jpg" alt=" " width="800" height="370"&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%2F15ljyxrz58zbsnh8syyi.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%2F15ljyxrz58zbsnh8syyi.jpg" alt=" " width="800" height="370"&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%2F5gtivap4avmxsjtzvsh5.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%2F5gtivap4avmxsjtzvsh5.jpg" alt=" " width="800" height="375"&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%2Ftqhtju833ah9p3h5l824.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%2Ftqhtju833ah9p3h5l824.jpg" alt=" " width="800" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>oracle</category>
      <category>sql</category>
      <category>tutorial</category>
      <category>database</category>
    </item>
    <item>
      <title>ACID</title>
      <dc:creator>NISHANTH MOORTHI 24CB036</dc:creator>
      <pubDate>Wed, 08 Oct 2025 14:39:18 +0000</pubDate>
      <link>https://forem.com/nishanth_moorthi24cb036_/acid-kjj</link>
      <guid>https://forem.com/nishanth_moorthi24cb036_/acid-kjj</guid>
      <description>&lt;p&gt;Demystifying SQL Constraints with Oracle Live SQL&lt;br&gt;
Hey Devs&lt;/p&gt;

&lt;p&gt;I’ve been diving into Oracle Live SQL lately, and it’s been a fascinating ride through the world of data integrity and transaction control. Thought I’d share a few nuggets from my journey—especially around constraints and how they shape reliable databases.&lt;/p&gt;

&lt;p&gt;Why Constraints Matter&lt;br&gt;
When designing tables, constraints are your first line of defense against bad data. Here's a simple example I used:&lt;/p&gt;

&lt;p&gt;sql&lt;br&gt;
CREATE TABLE ACCOUNTS (&lt;br&gt;
account_id NUMBER,&lt;br&gt;
account_type VARCHAR2(20),&lt;br&gt;
balance NUMBER,&lt;br&gt;
CONSTRAINT acc_pk PRIMARY KEY (account_id),&lt;br&gt;
CONSTRAINT acc_balance_ck CHECK (balance &amp;gt;= 0) -- No negative balances!&lt;br&gt;
);&lt;br&gt;
This ensures:&lt;/p&gt;

&lt;p&gt;Every account has a unique ID.&lt;/p&gt;

&lt;p&gt;No one can sneak in a negative balance (because chaos isn’t a valid business model).&lt;/p&gt;

&lt;p&gt;Transactions: Merge or Mayhem?&lt;br&gt;
I also played around with inserting duplicate records and wrapping them in a transaction block. It’s a great way to test how your logic handles real-world scenarios like merging balances or rejecting duplicates.&lt;/p&gt;

&lt;p&gt;sql&lt;br&gt;
BEGIN&lt;br&gt;
INSERT INTO Accounts VALUES ('David', 3000);&lt;br&gt;
INSERT INTO Accounts VALUES ('David', 4000);&lt;br&gt;
END;&lt;br&gt;
Depending on your schema design, this could either:&lt;/p&gt;

&lt;p&gt;Merge balances intelligently&lt;/p&gt;

&lt;p&gt;Or throw a constraint violation&lt;/p&gt;

&lt;p&gt;Pro Tip: Test Minimal Inserts&lt;br&gt;
Try inserting a record without all required fields and see how your constraints react:&lt;/p&gt;

&lt;p&gt;sql&lt;br&gt;
INSERT INTO Accounts (acc_no, name)&lt;br&gt;
VALUES (101, 'Pranav');&lt;br&gt;
If your table requires a balance, this should fail—or default—depending on how you've set it up.&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%2Fa6wpudvh02068u9fhg2r.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%2Fa6wpudvh02068u9fhg2r.jpg" alt=" " width="800" height="325"&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%2Ft2ecjlz5dawr6dgeuv92.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%2Ft2ecjlz5dawr6dgeuv92.jpg" alt=" " width="800" height="340"&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%2Fkiqvycbpmr2s6bqtf8jf.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%2Fkiqvycbpmr2s6bqtf8jf.jpg" alt=" " width="800" height="329"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi3m82vblugf4x9j07a3r.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%2Fi3m82vblugf4x9j07a3r.jpg" alt=" " width="800" height="321"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>oracle</category>
      <category>sql</category>
      <category>tutorial</category>
      <category>database</category>
    </item>
    <item>
      <title>Cursor And Trigger</title>
      <dc:creator>NISHANTH MOORTHI 24CB036</dc:creator>
      <pubDate>Wed, 08 Oct 2025 14:37:31 +0000</pubDate>
      <link>https://forem.com/nishanth_moorthi24cb036_/cursor-and-trigger-45o8</link>
      <guid>https://forem.com/nishanth_moorthi24cb036_/cursor-and-trigger-45o8</guid>
      <description>&lt;p&gt;My SQL Learning Journey: From Tables to Triggers&lt;br&gt;
Hi Devs! I’m Nishanth Moorthi, and over the past few weeks, I’ve been diving deep into SQL using platforms like Oracle Live SQL and W3Schools. What started as curiosity quickly turned into a full-blown passion for understanding how data flows through relational databases. In this post, I’ll walk you through some of the key concepts I’ve learned—complete with code snippets and real examples.&lt;/p&gt;

&lt;p&gt;Creating Tables Like a Pro&lt;br&gt;
One of the first things I tackled was table creation. Here's a simple example:&lt;/p&gt;

&lt;p&gt;sql&lt;br&gt;
CREATE TABLE STUDENT (&lt;br&gt;
    StudentName VARCHAR(50),&lt;br&gt;
    StudentRollNo NUMBER(5),&lt;br&gt;
    StudentMarks NUMBER(5),&lt;br&gt;
    StudentGrade VARCHAR(2),&lt;br&gt;
    StudentResult VARCHAR(10)&lt;br&gt;
);&lt;br&gt;
Seeing “Table STUDENT created” in the output gave me a real sense of accomplishment!&lt;/p&gt;

&lt;p&gt;Understanding Relationships with Foreign Keys&lt;br&gt;
I then moved on to creating related tables:&lt;/p&gt;

&lt;p&gt;sql&lt;br&gt;
CREATE TABLE Students (&lt;br&gt;
    StudentID NUMBER PRIMARY KEY,&lt;br&gt;
    Name VARCHAR2(50),&lt;br&gt;
    Age NUMBER&lt;br&gt;
);&lt;/p&gt;

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

&lt;p&gt;CREATE TABLE Enrollments (&lt;br&gt;
    EnrollmentID NUMBER PRIMARY KEY,&lt;br&gt;
    StudentID NUMBER,&lt;br&gt;
    CourseID NUMBER,&lt;br&gt;
    FOREIGN KEY (StudentID) REFERENCES Students(StudentID),&lt;br&gt;
    FOREIGN KEY (CourseID) REFERENCES Courses(CourseID)&lt;br&gt;
);&lt;br&gt;
This helped me understand how relational databases maintain integrity across tables.&lt;/p&gt;

&lt;p&gt;Filtering Data with Date Ranges&lt;br&gt;
I also learned how to filter records using BETWEEN and TO_DATE:&lt;/p&gt;

&lt;p&gt;sql&lt;br&gt;
SELECT auditid, studentname, actiondate&lt;br&gt;
FROM student_audit&lt;br&gt;
WHERE actiondate BETWEEN TO_DATE('01-OCT-2015','DD-MON-YYYY')&lt;br&gt;
AND TO_DATE('05-OCT-2015','DD-MON-YYYY');&lt;br&gt;
This query gave me a filtered view of student actions within a specific timeframe.&lt;/p&gt;

&lt;p&gt;Auditing with Triggers&lt;br&gt;
One of the coolest things I built was a trigger to audit changes in the STUDENTS table:&lt;/p&gt;

&lt;p&gt;sql&lt;br&gt;
CREATE OR REPLACE TRIGGER trg_student_audit&lt;br&gt;
AFTER INSERT OR UPDATE OR DELETE ON STUDENTS&lt;br&gt;
FOR EACH ROW&lt;br&gt;
BEGIN&lt;br&gt;
  IF INSERTING THEN&lt;br&gt;
    INSERT INTO STUDENT_AUDIT (...) VALUES (...);&lt;br&gt;
  ELSIF UPDATING THEN&lt;br&gt;
    INSERT INTO STUDENT_AUDIT (...) VALUES (...);&lt;br&gt;
  ELSIF DELETING THEN&lt;br&gt;
    INSERT INTO STUDENT_AUDIT (...) VALUES (...);&lt;br&gt;
  END IF;&lt;br&gt;
END;&lt;br&gt;
This gave me a behind-the-scenes look at how changes are tracked in real-world systems.&lt;/p&gt;

&lt;p&gt;Using Cursors in Procedures&lt;br&gt;
Finally, I explored PL/SQL and created a procedure with a cursor:&lt;/p&gt;

&lt;p&gt;sql&lt;br&gt;
CREATE OR REPLACE PROCEDURE emp_proc IS&lt;br&gt;
  CURSOR emp_cursor IS SELECT empno, ename, sal FROM emp;&lt;br&gt;
  emp_record emp_cursor%ROWTYPE;&lt;br&gt;
BEGIN&lt;br&gt;
  OPEN emp_cursor;&lt;br&gt;
  LOOP&lt;br&gt;
    FETCH emp_cursor INTO emp_record;&lt;br&gt;
    EXIT WHEN emp_cursor%NOTFOUND;&lt;br&gt;
    DBMS_OUTPUT.PUT_LINE('Empno: ' || emp_record.empno || ' Name: ' || emp_record.ename || ' Salary: ' || emp_record.sal);&lt;br&gt;
  END LOOP;&lt;br&gt;
  CLOSE emp_cursor;&lt;br&gt;
END;&lt;br&gt;
/&lt;br&gt;
EXEC emp_proc;&lt;br&gt;
Running this felt like unlocking&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%2Fxlkt1uag085x3fnyd1rf.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%2Fxlkt1uag085x3fnyd1rf.jpg" alt=" " width="800" height="377"&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%2F62z68euwhbue8me0nodb.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%2F62z68euwhbue8me0nodb.jpg" alt=" " width="800" height="367"&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%2Fbysss7ljb1k1g6940gy3.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%2Fbysss7ljb1k1g6940gy3.jpg" alt=" " width="800" height="397"&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%2Fa7ukhr625c6o4eg6d426.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%2Fa7ukhr625c6o4eg6d426.jpg" alt=" " width="800" height="376"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>sql</category>
      <category>tutorial</category>
      <category>database</category>
      <category>beginners</category>
    </item>
    <item>
      <title>NORMALIZATION</title>
      <dc:creator>NISHANTH MOORTHI 24CB036</dc:creator>
      <pubDate>Wed, 08 Oct 2025 14:31:45 +0000</pubDate>
      <link>https://forem.com/nishanth_moorthi24cb036_/normali-4c29</link>
      <guid>https://forem.com/nishanth_moorthi24cb036_/normali-4c29</guid>
      <description>&lt;p&gt;Getting Started with SQL: My Journey from Zero to Table Hero&lt;br&gt;
Hey Devs! I recently dove into the world of SQL, and I wanted to share some insights, tips, and code snippets that helped me grasp the fundamentals of relational databases. Whether you're a total beginner or brushing up your skills, I hope this post gives you a solid starting point.&lt;/p&gt;

&lt;p&gt;Why Learn SQL?&lt;br&gt;
SQL (Structured Query Language) is the backbone of data manipulation. Whether you're building apps, analyzing data, or just curious about how databases work, SQL is a must-have skill.&lt;/p&gt;

&lt;p&gt;Tools I Used&lt;br&gt;
Oracle Live SQL: A free, browser-based platform to write and execute SQL scripts.&lt;/p&gt;

&lt;p&gt;W3Schools SQL Editor: Great for quick practice and tutorials.&lt;/p&gt;

&lt;p&gt;Both platforms offer interactive environments and instant feedback, which made learning super intuitive.&lt;/p&gt;

&lt;p&gt;Sample Tables I Created&lt;br&gt;
Here’s a snippet from one of my practice sessions:&lt;/p&gt;

&lt;p&gt;sql&lt;br&gt;
-- Creating an Employee table&lt;br&gt;
CREATE TABLE Employee (&lt;br&gt;
    EmployeeID NUMBER PRIMARY KEY,&lt;br&gt;
    FirstName VARCHAR2(50),&lt;br&gt;
    LastName VARCHAR2(50),&lt;br&gt;
    Department VARCHAR2(50),&lt;br&gt;
    Salary NUMBER&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;-- Inserting sample data&lt;br&gt;
INSERT INTO Employee VALUES (1, 'John', 'Doe', 'HR', 50000);&lt;br&gt;
INSERT INTO Employee VALUES (2, 'Jane', 'Smith', 'Finance', 60000);&lt;/p&gt;

&lt;p&gt;Joining Tables Like a Pro&lt;br&gt;
Once I got comfortable with basic queries, I explored JOINs to combine data across tables. Here's a query that pulls student info along with course and instructor details:&lt;/p&gt;

&lt;p&gt;sql&lt;br&gt;
SELECT STUDENTID, STUDENTNAME, COURSEID, COURSENAME, INSTRUCTORNAME&lt;br&gt;
FROM STUDENT S&lt;br&gt;
JOIN COURSE C ON S.COURSEID = C.COURSEID&lt;br&gt;
JOIN INSTRUCTOR I ON C.INSTRUCTORID = I&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%2Fa49kvrm3bg2z54lrl187.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%2Fa49kvrm3bg2z54lrl187.jpg" alt=" " width="800" height="328"&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%2Frez3dpeq575nw6lc1syn.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%2Frez3dpeq575nw6lc1syn.jpg" alt=" " width="800" height="383"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh9yk10g8iuet6knk60zm.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%2Fh9yk10g8iuet6knk60zm.jpg" alt=" " width="800" height="378"&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%2Fh7mfqkzzp58h831h512r.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%2Fh7mfqkzzp58h831h512r.jpg" alt=" " width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

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