<?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: Divya _Sundarasekaran</title>
    <description>The latest articles on DEV Community by Divya _Sundarasekaran (@divya__sundarasekaran_459).</description>
    <link>https://dev.to/divya__sundarasekaran_459</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%2F3452734%2F6b4c2057-e3b1-4b54-b02f-6b904ab5af92.png</url>
      <title>DEV Community: Divya _Sundarasekaran</title>
      <link>https://dev.to/divya__sundarasekaran_459</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/divya__sundarasekaran_459"/>
    <language>en</language>
    <item>
      <title>AWS Service: Amazon DynamoDB</title>
      <dc:creator>Divya _Sundarasekaran</dc:creator>
      <pubDate>Thu, 18 Dec 2025 16:59:32 +0000</pubDate>
      <link>https://dev.to/divya__sundarasekaran_459/aws-service-amazon-dynamodb-3kpe</link>
      <guid>https://dev.to/divya__sundarasekaran_459/aws-service-amazon-dynamodb-3kpe</guid>
      <description>&lt;p&gt;&lt;strong&gt;Amazon DynamoDB&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Service Overview&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
Amazon DynamoDB is a fully managed NoSQL database service that provides fast and predictable performance with seamless scalability. It is designed for applications that need consistent, single-digit millisecond latency at any scale. DynamoDB handles the administrative burdens of operating and scaling a distributed database, so developers can focus on building applications.&lt;/p&gt;

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

&lt;p&gt;Managed NoSQL Database: Fully managed, serverless, and scalable.&lt;/p&gt;

&lt;p&gt;High Performance: Consistent single-digit millisecond latency.&lt;/p&gt;

&lt;p&gt;Automatic Scaling: Scales throughput and storage automatically based on application needs.&lt;/p&gt;

&lt;p&gt;Global Tables: Multi-region, fully replicated tables for high availability and disaster recovery.&lt;/p&gt;

&lt;p&gt;Integrated Security: Supports AWS IAM for fine-grained access control, encryption at rest, and TLS for data in transit.&lt;/p&gt;

&lt;p&gt;Streams &amp;amp; Triggers: Supports DynamoDB Streams to capture changes and integrate with AWS Lambda for event-driven architectures.&lt;/p&gt;

&lt;p&gt;Backup and Restore: On-demand and continuous backups for data protection.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS Category / Cloud Domain&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Category: Database / NoSQL&lt;/p&gt;

&lt;p&gt;Cloud Domain: Data Storage, Serverless Databases&lt;/p&gt;

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

&lt;p&gt;Application Layer: Used as the primary database for web, mobile, IoT, and gaming applications.&lt;/p&gt;

&lt;p&gt;DevOps Integration: Can be provisioned via Infrastructure as Code (IaC) tools like AWS CloudFormation or Terraform; integrates with CI/CD pipelines for automated deployments.&lt;/p&gt;

&lt;p&gt;Event-Driven Workflows: Works seamlessly with AWS Lambda, API Gateway, and other services for serverless architectures.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Programming Language / Access Methods&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;APIs / SDKs: Available for Python (boto3), Java, JavaScript (Node.js), .NET, Go, Ruby, PHP, and C++.&lt;/p&gt;

&lt;p&gt;Access Methods:&lt;/p&gt;

&lt;p&gt;AWS Management Console&lt;/p&gt;

&lt;p&gt;AWS CLI&lt;/p&gt;

&lt;p&gt;AWS SDKs&lt;/p&gt;

&lt;p&gt;REST API&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pricing Model&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;On-Demand Capacity Mode: Pay-per-request for read and write operations.&lt;/p&gt;

&lt;p&gt;Provisioned Capacity Mode: Predefine read/write capacity units; can scale manually or with auto-scaling.&lt;/p&gt;

&lt;p&gt;Storage Costs: Charged per GB-month of data stored.&lt;/p&gt;

&lt;p&gt;Optional Features: Additional costs for backups, streams, global tables, and data transfer. THANK YOU &lt;a class="mentioned-user" href="https://dev.to/santhoshnc"&gt;@santhoshnc&lt;/a&gt;  sir!!&lt;/p&gt;

</description>
      <category>aws</category>
      <category>dynamodb</category>
      <category>devops</category>
      <category>awsservice</category>
    </item>
    <item>
      <title>DevSecOps Periodic Table</title>
      <dc:creator>Divya _Sundarasekaran</dc:creator>
      <pubDate>Thu, 18 Dec 2025 16:42:54 +0000</pubDate>
      <link>https://dev.to/divya__sundarasekaran_459/devsecops-periodic-table-2o1l</link>
      <guid>https://dev.to/divya__sundarasekaran_459/devsecops-periodic-table-2o1l</guid>
      <description>&lt;p&gt;&lt;strong&gt;Digital.ai Intelligence in the DevSecOps Periodic Table&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In modern DevOps and DevSecOps environments, teams generate huge amounts of data from planning, build, security, testing, release, deployment, and operations tools. Without proper intelligence, this data often remains siloed and difficult to interpret.&lt;/p&gt;

&lt;p&gt;Digital.ai Intelligence is an AI-powered analytics and intelligence platform that helps organizations transform raw SDLC data into actionable insights.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Overview of Digital.ai Intelligence&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Digital.ai Intelligence unifies data from multiple sources, correlates it using AI/ML, and presents predictive and actionable insights to help teams improve delivery performance, reduce risk, and make better business decisions.&lt;br&gt;
It centralizes information from Digital.ai solutions and third-party tools, offering dashboards, predictive analytics, and KPIs tailored to DevOps and DevSecOps workflows.&lt;/p&gt;

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

&lt;p&gt;AI-Powered Analytics&lt;br&gt;
Automatically analyzes and correlates data from multiple DevOps tools to identify bottlenecks and trends.&lt;/p&gt;

&lt;p&gt;Predictive Insights&lt;br&gt;
Uses machine learning to forecast delivery risks, potential failures, and improvement opportunities.&lt;/p&gt;

&lt;p&gt;Flow &amp;amp; DORA Metrics&lt;br&gt;
Provides pre-built dashboards for Flow metrics, DORA metrics, and customizable KPIs to track performance across teams and portfolios.&lt;/p&gt;

&lt;p&gt;Customizable Dashboards&lt;br&gt;
Teams can define their own metrics, dashboards, and KPIs according to organizational needs.&lt;/p&gt;

&lt;p&gt;Enterprise Visibility&lt;br&gt;
Supports role-based views from individual contributors to executives, providing consistent insights into delivery and security.&lt;/p&gt;

&lt;p&gt;Seamless Integrations&lt;br&gt;
Integrates with popular tools like Jira, Git, Jenkins, ServiceNow, and other monitoring/security solutions.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;How Digital.ai Intelligence Fits into DevOps &amp;amp; DevSecOps&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
In DevOps:&lt;/p&gt;

&lt;p&gt;Improves visibility into delivery pipelines&lt;/p&gt;

&lt;p&gt;Helps detect bottlenecks and improve cycle times&lt;/p&gt;

&lt;p&gt;Provides predictive insights to reduce rework&lt;/p&gt;

&lt;p&gt;In DevSecOps:&lt;/p&gt;

&lt;p&gt;Correlates security, quality, and delivery signals&lt;/p&gt;

&lt;p&gt;Detects risky changes and potential vulnerabilities early&lt;/p&gt;

&lt;p&gt;Supports collaboration between Dev, Sec, and Ops teams&lt;/p&gt;

&lt;p&gt;Digital.ai Intelligence ensures continuous improvement and risk-aware software delivery, perfectly aligning with DevSecOps principles.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Programming Languages &amp;amp; Technology&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Core platform likely uses Python and Java for analytics and AI&lt;/p&gt;

&lt;p&gt;JavaScript/TypeScript for dashboards and UI&lt;/p&gt;

&lt;p&gt;SQL/NoSQL for data modeling and storage&lt;/p&gt;

&lt;p&gt;Cloud-native, scalable architecture with APIs for integration and automation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Parent Company&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Company Name: Digital.ai&lt;/p&gt;

&lt;p&gt;Focus: AI-powered DevOps and DevSecOps platform&lt;/p&gt;

&lt;p&gt;Headquarters: United States&lt;/p&gt;

&lt;p&gt;Type: Private company&lt;/p&gt;

&lt;p&gt;Digital.ai delivers enterprise-scale solutions for planning, security, testing, release orchestration, deployment, and predictive analytics.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open Source or Paid?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not Open Source&lt;/p&gt;

&lt;p&gt;Paid / Commercial SaaS Product&lt;br&gt;
Digital.ai Intelligence is a proprietary, enterprise-grade platform available through subscription or enterprise licensing.THANK YOU &lt;a class="mentioned-user" href="https://dev.to/santhoshnc"&gt;@santhoshnc&lt;/a&gt; sir!!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Simple College Student Schema in MongoDB</title>
      <dc:creator>Divya _Sundarasekaran</dc:creator>
      <pubDate>Fri, 03 Oct 2025 06:01:05 +0000</pubDate>
      <link>https://dev.to/divya__sundarasekaran_459/simple-college-student-schema-in-mongodb-3cn8</link>
      <guid>https://dev.to/divya__sundarasekaran_459/simple-college-student-schema-in-mongodb-3cn8</guid>
      <description>&lt;p&gt;Simple College Student Schema in MongoDB&lt;/p&gt;

&lt;p&gt;Introduction&lt;/p&gt;

&lt;p&gt;MongoDB is a popular NoSQL database that stores data in flexible JSON-like documents, making it easy to work with real-world data. Unlike traditional relational databases, MongoDB doesn’t require fixed table schemas, which is perfect for modern applications.&lt;/p&gt;

&lt;p&gt;In this blog, we’ll explore CRUD operations (Create, Read, Update, Delete) using a college student database. You’ll learn how to insert student records, query them, update information, and delete records efficiently.&lt;/p&gt;

&lt;p&gt;All examples are demonstrated on a MongoDB Atlas Cluster, so you can follow along with screenshots and see results live.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What You’ll Learn:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;How to insert multiple student records into a collection&lt;/p&gt;

&lt;p&gt;How to query records with conditions&lt;/p&gt;

&lt;p&gt;How to update single and multiple documents&lt;/p&gt;

&lt;p&gt;How to delete records selectively&lt;/p&gt;

&lt;p&gt;How CRUD applies in real-world projects&lt;/p&gt;

&lt;p&gt;Step 1: Setup MongoDB Cluster&lt;/p&gt;

&lt;p&gt;Sign up for a free MongoDB Atlas account.&lt;/p&gt;

&lt;p&gt;Create a cluster and a database called collegeDB.&lt;/p&gt;

&lt;p&gt;Inside the database, create a collection named students.&lt;/p&gt;

&lt;p&gt;Step 2: Insert Student Records&lt;/p&gt;

&lt;p&gt;We’ll add 5 student records using insertMany:&lt;/p&gt;

&lt;p&gt;db.students.insertMany([&lt;br&gt;
  { "student_id": "S001", "name": "Santhosh", "age": 20, "department": "CSBS", "year": 2, "cgpa": 9 },&lt;br&gt;
  { "student_id": "S002", "name": "Aishwarya", "age": 21, "department": "CSE", "year": 3, "cgpa": 8.5 },&lt;br&gt;
  { "student_id": "S003", "name": "Rahul", "age": 22, "department": "IT", "year": 3, "cgpa": 7.8 },&lt;br&gt;
  { "student_id": "S004", "name": "Priya", "age": 20, "department": "CSBS", "year": 1, "cgpa": 9.2 },&lt;br&gt;
  { "student_id": "S005", "name": "Karthik", "age": 23, "department": "CSE", "year": 4, "cgpa": 6.9 }&lt;br&gt;
])&lt;/p&gt;

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

&lt;p&gt;Step 3: Read (Query) Data&lt;/p&gt;

&lt;p&gt;Display all student records:&lt;/p&gt;

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

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

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

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

&lt;p&gt;Find students in the Computer Science department:&lt;/p&gt;

&lt;p&gt;db.students.find({ department: "CSE" })&lt;/p&gt;

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

&lt;p&gt;Step 4: Update Records&lt;/p&gt;

&lt;p&gt;Update the CGPA of a specific student (S005):&lt;/p&gt;

&lt;p&gt;db.students.updateOne(&lt;br&gt;
  { student_id: "S005" },&lt;br&gt;
  { $set: { cgpa: 7.5 } }&lt;br&gt;
)&lt;/p&gt;

&lt;p&gt;Increase the year of all 3rd-year students by 1:&lt;/p&gt;

&lt;p&gt;db.students.updateMany(&lt;br&gt;
  { year: 3 },&lt;br&gt;
  { $inc: { year: 1 } }&lt;br&gt;
)&lt;/p&gt;

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

&lt;p&gt;Step 5: Delete Records&lt;/p&gt;

&lt;p&gt;Delete a student by student_id:&lt;/p&gt;

&lt;p&gt;db.students.deleteOne({ student_id: "S005" }&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%2F8vng2bzzt45imjwyz0c4.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%2F8vng2bzzt45imjwyz0c4.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%2Fwub1kh4668vm84u2lrel.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%2Fwub1kh4668vm84u2lrel.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;In this tutorial, we’ve covered CRUD operations in MongoDB using a student database example.&lt;/p&gt;

&lt;p&gt;From inserting records, querying, updating, to deleting data, these operations form the foundation of almost every modern application.&lt;/p&gt;

&lt;p&gt;This hands-on approach helps you understand NoSQL database workflows and prepares you for real-world projects like user management systems, e-commerce apps, or academic databases.&lt;/p&gt;

</description>
      <category>database</category>
      <category>tutorial</category>
      <category>mongodb</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Indexing, Hashing &amp; Query Optimization</title>
      <dc:creator>Divya _Sundarasekaran</dc:creator>
      <pubDate>Thu, 02 Oct 2025 15:44:29 +0000</pubDate>
      <link>https://dev.to/divya__sundarasekaran_459/indexing-hashing-query-optimization-3ido</link>
      <guid>https://dev.to/divya__sundarasekaran_459/indexing-hashing-query-optimization-3ido</guid>
      <description>&lt;p&gt;Indexing, Hashing &amp;amp; Query Optimization in SQL&lt;/p&gt;

&lt;p&gt;When working with large datasets, searching for data efficiently is crucial. Indexing and Hashing help databases retrieve data faster, improving performance for queries.&lt;/p&gt;

&lt;p&gt;In this post, we’ll demonstrate B-Tree, B+ Tree, and Hash indexes using a Students table.&lt;/p&gt;

&lt;p&gt;Create Database and Students Table&lt;br&gt;
CREATE DATABASE college;&lt;br&gt;
USE college;&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;/p&gt;

&lt;p&gt;Insert Sample Records&lt;br&gt;
INSERT INTO Students VALUES&lt;br&gt;
(101, 'Alice', 'CSBS', 9.1),&lt;br&gt;
(102, 'Bob', 'ECE', 7.5),&lt;br&gt;
(103, 'Charlie', 'MECH', 8.2),&lt;br&gt;
(104, 'David', 'CIVIL', 6.9),&lt;br&gt;
(105, 'Emma', 'CSBS', 8.7),&lt;br&gt;
(106, 'Frank', 'IT', 7.8),&lt;br&gt;
(107, 'Grace', 'ECE', 8.5),&lt;br&gt;
(108, 'Helen', 'MECH', 7.2),&lt;br&gt;
(109, 'Ivy', 'CIVIL', 8.9),&lt;br&gt;
(110, 'Jack', 'CSBS', 9.3),&lt;br&gt;
(111, 'Karan', 'IT', 6.8),&lt;br&gt;
(112, 'Leo', 'ECE', 8.0),&lt;br&gt;
(113, 'Mia', 'MECH', 7.9),&lt;br&gt;
(114, 'Nina', 'CSBS', 9.0),&lt;br&gt;
(115, 'Owen', 'CIVIL', 8.3),&lt;br&gt;
(116, 'Paul', 'IT', 7.4),&lt;br&gt;
(117, 'Queen', 'ECE', 8.6),&lt;br&gt;
(118, 'Ravi', 'CSBS', 8.8),&lt;br&gt;
(119, 'Sophia', 'MECH', 7.6),&lt;br&gt;
(120, 'Tom', 'CIVIL', 8.1);&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%2Fbujzvhs2s27ihp7a2glh.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%2Fbujzvhs2s27ihp7a2glh.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;B-Tree Index on roll_no&lt;br&gt;
CREATE INDEX idx_rollno_btree&lt;br&gt;
ON Students(roll_no);&lt;/p&gt;

&lt;p&gt;SELECT * FROM Students&lt;br&gt;
WHERE roll_no = 110;&lt;/p&gt;

&lt;p&gt;B-Tree indexes are ideal for equality and range 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%2Fe91hosqp8ef5i3kky6r6.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%2Fe91hosqp8ef5i3kky6r6.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;B+ Tree Index on cgpa&lt;br&gt;
CREATE INDEX idx_cgpa_bplustree&lt;br&gt;
ON Students(cgpa);&lt;/p&gt;

&lt;p&gt;SELECT * FROM Students&lt;br&gt;
WHERE cgpa &amp;gt; 8.0;&lt;/p&gt;

&lt;p&gt;✔ B+ Tree indexes are optimized for range queries, making it fast to find all students with CGPA above 8.0.&lt;/p&gt;

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

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

&lt;p&gt;SELECT * FROM Students&lt;br&gt;
WHERE dept = 'CSBS';&lt;/p&gt;

&lt;p&gt;Hash indexes are perfect for equality lookups, such as fetching all students from a specific department.&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%2F2asr3kzjlzykhlmblk9g.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%2F2asr3kzjlzykhlmblk9g.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Summary&lt;/p&gt;

&lt;p&gt;B-Tree Index (roll_no) → Fast equality and range queries.&lt;/p&gt;

&lt;p&gt;B+ Tree Index (cgpa) → Efficient for range queries (cgpa &amp;gt; 8.0).&lt;/p&gt;

&lt;p&gt;Hash Index (dept) → Best for exact-match queries (dept = 'CSBS').&lt;/p&gt;

&lt;p&gt;Indexes improve query performance significantly, especially when datasets are large. Using the right type of index based on your query patterns is key to database optimization.&lt;/p&gt;

</description>
      <category>database</category>
      <category>performance</category>
      <category>algorithms</category>
      <category>sql</category>
    </item>
    <item>
      <title>Transactions, Deadlocks &amp; Log-Based Recovery</title>
      <dc:creator>Divya _Sundarasekaran</dc:creator>
      <pubDate>Thu, 02 Oct 2025 07:50:08 +0000</pubDate>
      <link>https://dev.to/divya__sundarasekaran_459/transactions-deadlocks-log-based-recovery-2ga3</link>
      <guid>https://dev.to/divya__sundarasekaran_459/transactions-deadlocks-log-based-recovery-2ga3</guid>
      <description>&lt;p&gt;Transactions, Deadlocks &amp;amp; Log-Based Recovery in SQL&lt;/p&gt;

&lt;p&gt;In this tutorial, we’ll explore transactions, deadlocks, and log-based recovery in SQL using a simple BankAccounts table. These are key concepts in database management for ensuring data consistency, integrity, and recoverability.&lt;/p&gt;

&lt;p&gt;Schema Setup&lt;br&gt;
CREATE DATABASE BankDB;&lt;/p&gt;

&lt;p&gt;USE BankDB;&lt;/p&gt;

&lt;p&gt;CREATE TABLE BankAccounts (&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 BankAccounts VALUES&lt;br&gt;
(1, 'Alice', 1000),&lt;br&gt;
(2, 'Bob', 1500),&lt;br&gt;
(3, 'Charlie', 2000);&lt;/p&gt;

&lt;p&gt;SELECT * FROM BankAccounts;&lt;/p&gt;

&lt;p&gt;acc_no  name    balance&lt;br&gt;
1   Alice   1000&lt;br&gt;
2   Bob 1500&lt;br&gt;
3   Charlie 2000&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%2Fz55wg92odk06iga7ax1c.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%2Fz55wg92odk06iga7ax1c.png" alt=" " width="800" height="422"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Transaction – Atomicity &amp;amp; Rollback&lt;br&gt;
BEGIN;&lt;/p&gt;

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

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

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

&lt;p&gt;SELECT * FROM BankAccounts;&lt;/p&gt;

&lt;p&gt;Expected Result:&lt;br&gt;
Balances remain unchanged:&lt;/p&gt;

&lt;p&gt;acc_no  name    balance&lt;br&gt;
1   Alice   1000&lt;br&gt;
2   Bob 1500&lt;br&gt;
3   Charlie 2000&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%2F3p595zx77t7t7mplh9gu.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%2F3p595zx77t7t7mplh9gu.png" alt=" " width="800" height="425"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Deadlock Simulation&lt;/p&gt;

&lt;p&gt;Deadlocks occur when two transactions wait for each other’s locks indefinitely. No SELECT queries are needed; updates are enough.&lt;/p&gt;

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

&lt;p&gt;BEGIN;&lt;br&gt;
UPDATE BankAccounts SET balance = balance + 100 WHERE name='Alice';&lt;/p&gt;

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

&lt;p&gt;BEGIN;&lt;br&gt;
UPDATE BankAccounts SET balance = balance + 200 WHERE name='Bob';&lt;/p&gt;

&lt;p&gt;Then each session tries to update the other’s row:&lt;/p&gt;

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

&lt;p&gt;UPDATE BankAccounts SET balance = balance - 50 WHERE name='Bob';&lt;/p&gt;

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

&lt;p&gt;UPDATE BankAccounts SET balance = balance - 50 WHERE name='Alice';&lt;/p&gt;

&lt;p&gt;At this point, both sessions wait for the other’s lock → deadlock occurs, and the database will abort one transaction.&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%2F277bibv9twakbgv6wdby.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%2F277bibv9twakbgv6wdby.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tip: Always acquire locks in the same order to prevent deadlocks.&lt;/p&gt;

&lt;p&gt;Log-Based Recovery&lt;/p&gt;

&lt;p&gt;Databases maintain transaction logs to recover from failures. Even if a transaction is rolled back, the log records the operations and their undo.&lt;/p&gt;

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

&lt;p&gt;SELECT * FROM BankAccounts;&lt;/p&gt;

&lt;p&gt;Result:&lt;/p&gt;

&lt;p&gt;acc_no  name    balance&lt;br&gt;
1   Alice   1000&lt;br&gt;
2   Bob 1500&lt;br&gt;
3   Charlie 2000&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%2F4wplpwggbzdzh4mkx4tj.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%2F4wplpwggbzdzh4mkx4tj.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The rollback undid the changes. Internally, the database logs contain both the attempted update and its undo operation.&lt;/p&gt;

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

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

&lt;p&gt;Deadlocks: Can occur in concurrent transactions; careful lock ordering prevents them.&lt;/p&gt;

&lt;p&gt;Log-Based Recovery: Guarantees durability and consistency even after rollbacks or crashes.&lt;/p&gt;

</description>
      <category>database</category>
      <category>tutorial</category>
      <category>computerscience</category>
      <category>sql</category>
    </item>
    <item>
      <title>ACID Properties</title>
      <dc:creator>Divya _Sundarasekaran</dc:creator>
      <pubDate>Thu, 02 Oct 2025 06:15:24 +0000</pubDate>
      <link>https://dev.to/divya__sundarasekaran_459/acid-properties-42pd</link>
      <guid>https://dev.to/divya__sundarasekaran_459/acid-properties-42pd</guid>
      <description>&lt;p&gt;Demonstrating ACID Properties in MySQL with Accounts Table&lt;/p&gt;

&lt;p&gt;In this blog, we’ll explore the ACID properties—Atomicity, Consistency, Isolation, and Durability—using a simple Accounts table in MySQL.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Setting Up the Table&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We start by creating a database and the Accounts table with three sample records.&lt;/p&gt;

&lt;p&gt;CREATE DATABASE IF NOT EXISTS BankDB;&lt;br&gt;
USE BankDB;&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 (acc_no, name, balance) VALUES&lt;br&gt;
(101, 'Alice', 5000),&lt;br&gt;
(102, 'Bob', 3000),&lt;br&gt;
(103, 'Charlie', 7000);&lt;/p&gt;

&lt;p&gt;SELECT * FROM Accounts;&lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt;Atomicity&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Atomicity ensures that a transaction is all or nothing. Let’s transfer money between accounts:&lt;/p&gt;

&lt;p&gt;USE BankDB;&lt;/p&gt;

&lt;p&gt;BEGIN;&lt;/p&gt;

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

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

&lt;p&gt;SELECT * FROM Accounts;&lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt;Consistency&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Consistency ensures that invalid data cannot be inserted. We enforce a rule that balance cannot be negative.&lt;/p&gt;

&lt;p&gt;USE BankDB;&lt;/p&gt;

&lt;p&gt;ALTER TABLE Accounts&lt;br&gt;
ADD CONSTRAINT chk_balance CHECK (balance &amp;gt;= 0);&lt;/p&gt;

&lt;p&gt;INSERT INTO Accounts (acc_no, name, balance) VALUES (104, 'David', -500);&lt;/p&gt;

&lt;p&gt;Observation:&lt;/p&gt;

&lt;p&gt;MySQL rejects the insert because it violates the constraint:&lt;/p&gt;

&lt;p&gt;ERROR 3819 (HY000): Check constraint 'chk_balance' is violated.&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%2Fx40fiul93ci0eugp7u03.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%2Fx40fiul93ci0eugp7u03.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Isolation&lt;/li&gt;
&lt;/ol&gt;

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

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

&lt;p&gt;USE BankDB;&lt;/p&gt;

&lt;p&gt;BEGIN;&lt;/p&gt;

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

&lt;p&gt;Session 2 – Reading concurrently:&lt;/p&gt;

&lt;p&gt;USE BankDB;&lt;/p&gt;

&lt;p&gt;SELECT * FROM Accounts WHERE acc_no = 101;&lt;/p&gt;

&lt;p&gt;Observation:&lt;/p&gt;

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

&lt;p&gt;After committing Session 1, Session 2 will see the updated balance.&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%2F7ai99mak2gyuxclglv5j.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%2F7ai99mak2gyuxclglv5j.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Durability&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Durability ensures that committed data persists even after a crash or restart.&lt;/p&gt;

&lt;p&gt;USE BankDB;&lt;/p&gt;

&lt;p&gt;BEGIN;&lt;/p&gt;

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

&lt;p&gt;COMMIT;&lt;/p&gt;

&lt;p&gt;SELECT * FROM Accounts;&lt;/p&gt;

&lt;p&gt;Observation:&lt;/p&gt;

&lt;p&gt;After committing and restarting the database, the updated balance remains.&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%2F42w6r6az4zxs3s7vwulo.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%2F42w6r6az4zxs3s7vwulo.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;We have successfully demonstrated all ACID properties in MySQL using the Accounts table:&lt;/p&gt;

&lt;p&gt;Atomicity: Transactions are all-or-nothing.&lt;/p&gt;

&lt;p&gt;Consistency: Database rules prevent invalid data.&lt;/p&gt;

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

&lt;p&gt;Durability: Committed data persists.&lt;/p&gt;

&lt;p&gt;Deliverables: SQL scripts and screenshots are included above for reference.&lt;/p&gt;

</description>
      <category>database</category>
      <category>tutorial</category>
      <category>mysql</category>
      <category>sql</category>
    </item>
    <item>
      <title>Cursor and Trigger</title>
      <dc:creator>Divya _Sundarasekaran</dc:creator>
      <pubDate>Thu, 02 Oct 2025 05:39:55 +0000</pubDate>
      <link>https://dev.to/divya__sundarasekaran_459/cursor-and-trigger-1g90</link>
      <guid>https://dev.to/divya__sundarasekaran_459/cursor-and-trigger-1g90</guid>
      <description>&lt;p&gt;Cursor: Display Employees with Salary &amp;gt; 50,000&lt;/p&gt;

&lt;p&gt;A cursor allows you to go row by row through a query result. Here, we will display employee names whose salary is greater than 50,000.&lt;/p&gt;

&lt;p&gt;CREATE DATABASE school;&lt;br&gt;
USE school;&lt;/p&gt;

&lt;p&gt;CREATE TABLE Employee (&lt;br&gt;
    EmpID INT PRIMARY KEY,&lt;br&gt;
    EmpName VARCHAR(50),&lt;br&gt;
    Salary DECIMAL(10,2)&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;INSERT INTO Employee VALUES (1, 'Alice', 60000);&lt;br&gt;
INSERT INTO Employee VALUES (2, 'Bob', 45000);&lt;br&gt;
INSERT INTO Employee VALUES (3, 'Charlie', 70000);&lt;/p&gt;

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

&lt;p&gt;CREATE PROCEDURE EmployeeCursorProc()&lt;br&gt;
BEGIN&lt;br&gt;
    DECLARE done INT DEFAULT 0;&lt;br&gt;
    DECLARE emp_name VARCHAR(50);&lt;br&gt;
    DECLARE cur CURSOR FOR SELECT EmpName FROM Employee WHERE Salary &amp;gt; 50000;&lt;br&gt;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;&lt;/p&gt;

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

read_loop: LOOP
    FETCH cur INTO emp_name;
    IF done THEN
        LEAVE read_loop;
    END IF;
    SELECT emp_name;
END LOOP;

CLOSE cur;
&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 EmployeeCursorProc();&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%2Fvy0z91pio0xcxf2u4g7g.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%2Fvy0z91pio0xcxf2u4g7g.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Trigger: AFTER INSERT on Students Table&lt;/p&gt;

&lt;p&gt;A trigger automatically executes an action when a specific event happens in the database. Here, we will log student registrations.&lt;/p&gt;

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

&lt;p&gt;CREATE TABLE Student_Audit (&lt;br&gt;
    AuditID INT AUTO_INCREMENT PRIMARY KEY,&lt;br&gt;
    StudentID INT,&lt;br&gt;
    Action VARCHAR(50),&lt;br&gt;
    ActionDate DATETIME&lt;br&gt;
);&lt;/p&gt;

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

&lt;p&gt;CREATE TRIGGER trg_Student_Insert&lt;br&gt;
AFTER INSERT ON Students&lt;br&gt;
FOR EACH ROW&lt;br&gt;
BEGIN&lt;br&gt;
    INSERT INTO Student_Audit (StudentID, Action, ActionDate)&lt;br&gt;
    VALUES (NEW.StudentID, 'Inserted', NOW());&lt;br&gt;
END$$&lt;/p&gt;

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

&lt;p&gt;INSERT INTO Students (StudentID, StudentName, Course)&lt;br&gt;
VALUES (1, 'John Doe', 'Mathematics');&lt;/p&gt;

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

&lt;p&gt;Summary:&lt;/p&gt;

&lt;p&gt;Cursors let you process each row of a query result individually. In this example, it helps display only employees with salary above 50,000.&lt;/p&gt;

&lt;p&gt;Triggers automate database tasks. Here, the AFTER INSERT trigger automatically logs student registrations into Student_Audit without manual effort.&lt;/p&gt;

&lt;p&gt;Using cursors and triggers together helps maintain data integrity and reduces repetitive work in a database.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Cursor and Trigger</title>
      <dc:creator>Divya _Sundarasekaran</dc:creator>
      <pubDate>Thu, 02 Oct 2025 05:34:34 +0000</pubDate>
      <link>https://dev.to/divya__sundarasekaran_459/cursor-and-trigger-ep</link>
      <guid>https://dev.to/divya__sundarasekaran_459/cursor-and-trigger-ep</guid>
      <description>&lt;p&gt;Cursor: Display Employees with Salary &amp;gt; 50,000&lt;/p&gt;

&lt;p&gt;A cursor allows you to go row by row through a query result. Here, we will display employee names whose salary is greater than 50,000.&lt;/p&gt;

&lt;p&gt;CREATE DATABASE school;&lt;br&gt;
USE school;&lt;/p&gt;

&lt;p&gt;CREATE TABLE Employee (&lt;br&gt;
    EmpID INT PRIMARY KEY,&lt;br&gt;
    EmpName VARCHAR(50),&lt;br&gt;
    Salary DECIMAL(10,2)&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;INSERT INTO Employee VALUES (1, 'Alice', 60000);&lt;br&gt;
INSERT INTO Employee VALUES (2, 'Bob', 45000);&lt;br&gt;
INSERT INTO Employee VALUES (3, 'Charlie', 70000);&lt;/p&gt;

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

&lt;p&gt;CREATE PROCEDURE EmployeeCursorProc()&lt;br&gt;
BEGIN&lt;br&gt;
    DECLARE done INT DEFAULT 0;&lt;br&gt;
    DECLARE emp_name VARCHAR(50);&lt;br&gt;
    DECLARE cur CURSOR FOR SELECT EmpName FROM Employee WHERE Salary &amp;gt; 50000;&lt;br&gt;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;&lt;/p&gt;

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

read_loop: LOOP
    FETCH cur INTO emp_name;
    IF done THEN
        LEAVE read_loop;
    END IF;
    SELECT emp_name;
END LOOP;

CLOSE cur;
&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 EmployeeCursorProc();&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%2Faqduqzi7cjp2ckgxlepq.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%2Faqduqzi7cjp2ckgxlepq.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Trigger: AFTER INSERT on Students Table&lt;/p&gt;

&lt;p&gt;A trigger automatically executes an action when a specific event happens in the database. Here, we will log student registrations.&lt;/p&gt;

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

&lt;p&gt;CREATE TABLE Student_Audit (&lt;br&gt;
    AuditID INT AUTO_INCREMENT PRIMARY KEY,&lt;br&gt;
    StudentID INT,&lt;br&gt;
    Action VARCHAR(50),&lt;br&gt;
    ActionDate DATETIME&lt;br&gt;
);&lt;/p&gt;

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

&lt;p&gt;CREATE TRIGGER trg_Student_Insert&lt;br&gt;
AFTER INSERT ON Students&lt;br&gt;
FOR EACH ROW&lt;br&gt;
BEGIN&lt;br&gt;
    INSERT INTO Student_Audit (StudentID, Action, ActionDate)&lt;br&gt;
    VALUES (NEW.StudentID, 'Inserted', NOW());&lt;br&gt;
END$$&lt;/p&gt;

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

&lt;p&gt;INSERT INTO Students (StudentID, StudentName, Course)&lt;br&gt;
VALUES (1, 'John Doe', 'Mathematics');&lt;/p&gt;

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

&lt;p&gt;Summary:&lt;/p&gt;

&lt;p&gt;Cursors let you process each row of a query result individually. In this example, it helps display only employees with salary above 50,000.&lt;/p&gt;

&lt;p&gt;Triggers automate database tasks. Here, the AFTER INSERT trigger automatically logs student registrations into Student_Audit without manual effort.&lt;/p&gt;

&lt;p&gt;Using cursors and triggers together helps maintain data integrity and reduces repetitive work in a database.&lt;/p&gt;

</description>
      <category>database</category>
      <category>tutorial</category>
      <category>mysql</category>
      <category>sql</category>
    </item>
    <item>
      <title>Normalization</title>
      <dc:creator>Divya _Sundarasekaran</dc:creator>
      <pubDate>Thu, 02 Oct 2025 05:05:55 +0000</pubDate>
      <link>https://dev.to/divya__sundarasekaran_459/normalization-505f</link>
      <guid>https://dev.to/divya__sundarasekaran_459/normalization-505f</guid>
      <description>&lt;p&gt;Database Normalization in SQL – From 1NF to 3NF&lt;br&gt;
Introduction:&lt;/p&gt;

&lt;p&gt;In this blog, we will explore Database Normalization with a practical SQL example. We’ll start with an unnormalized student-course table, identify anomalies, and then normalize the table step by step into 1NF, 2NF, and 3NF. Finally, we’ll use SQL JOIN queries to retrieve meaningful information.&lt;/p&gt;

&lt;p&gt;Step 1: Data Anomalies in Unnormalized Tables&lt;/p&gt;

&lt;p&gt;When data is not properly organized, we face:&lt;/p&gt;

&lt;p&gt;Insertion Anomaly – Can’t add a course without assigning it to a student.&lt;/p&gt;

&lt;p&gt;Update Anomaly – Updating instructor details in multiple rows creates redundancy.&lt;/p&gt;

&lt;p&gt;Deletion Anomaly – Deleting a student might accidentally remove course information too.&lt;/p&gt;

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

&lt;p&gt;In 1NF, data must be atomic, with no repeating groups.&lt;/p&gt;

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

&lt;p&gt;Step 3: Second Normal Form (2NF)&lt;/p&gt;

&lt;p&gt;In 2NF, we remove partial dependencies. We separate students and courses.&lt;/p&gt;

&lt;p&gt;Tables created:&lt;/p&gt;

&lt;p&gt;CREATE TABLE Course_2NF (&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;CREATE TABLE StudentCourse_2NF (&lt;br&gt;
    StudentName VARCHAR(50),&lt;br&gt;
    CourseID VARCHAR(10),&lt;br&gt;
    FOREIGN KEY (CourseID) REFERENCES Course_2NF(CourseID)&lt;br&gt;
);&lt;/p&gt;

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

&lt;p&gt;Step 4: Third Normal Form (3NF)&lt;/p&gt;

&lt;p&gt;In 3NF, we remove transitive dependencies. Instructor details are moved into a new table.&lt;/p&gt;

&lt;p&gt;Tables created:&lt;/p&gt;

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

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

&lt;p&gt;CREATE TABLE StudentCourse_3NF (&lt;br&gt;
    StudentName VARCHAR(50),&lt;br&gt;
    CourseID VARCHAR(10),&lt;br&gt;
    FOREIGN KEY (CourseID) REFERENCES Course_3NF(CourseID)&lt;br&gt;
);&lt;/p&gt;

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

&lt;p&gt;Step 5: Inserting Data&lt;/p&gt;

&lt;p&gt;We then inserted sample data into the normalized tables using INSERT INTO.&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%2F3eq1kao7kdygdc7g4ome.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%2F3eq1kao7kdygdc7g4ome.png" alt=" " width="800" height="506"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 6: JOIN Query&lt;/p&gt;

&lt;p&gt;Finally, we retrieved the data using JOINs to display students with their courses and instructors:&lt;/p&gt;

&lt;p&gt;SELECT s.StudentName, c.CourseName, i.Instructor&lt;br&gt;
FROM StudentCourse_3NF s&lt;br&gt;
JOIN Course_3NF c ON s.CourseID = c.CourseID&lt;br&gt;
JOIN Instructor_3NF i ON c.Instructor = i.Instructor;&lt;/p&gt;

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

&lt;p&gt;We successfully normalized a student-course table from 1NF → 2NF → 3NF. Along the way, we eliminated redundancy, avoided data anomalies, and ensured data integrity.&lt;/p&gt;

&lt;p&gt;With proper JOINs, we could easily retrieve clean and consistent information from the database.&lt;/p&gt;

&lt;p&gt;Normalization ensures our databases are efficient, reliable, and scalable.&lt;/p&gt;

</description>
      <category>database</category>
      <category>sql</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>COLLEGE STUDENT &amp; COURSE MANAGEMENT SYSTEM.</title>
      <dc:creator>Divya _Sundarasekaran</dc:creator>
      <pubDate>Fri, 22 Aug 2025 13:36:14 +0000</pubDate>
      <link>https://dev.to/divya__sundarasekaran_459/college-student-course-management-system-je3</link>
      <guid>https://dev.to/divya__sundarasekaran_459/college-student-course-management-system-je3</guid>
      <description>&lt;p&gt;In this blog we are going to creating tables, inserting data, and running some useful queries with Oracle SQL.&lt;/p&gt;

&lt;p&gt;Step 1: Create the Students Table&lt;br&gt;
We’ll start by creating a table for students. This table holds student details along with a unique email ID.&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) 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;StudentID is the primary key (unique for each student).&lt;/p&gt;

&lt;p&gt;Email must be unique.&lt;/p&gt;

&lt;p&gt;We’ll add phone numbers later.&lt;/p&gt;

&lt;p&gt;Step 2: Create the Courses Table&lt;br&gt;
Next, we build a table for courses:&lt;/p&gt;

&lt;p&gt;sql&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;Credits will later have a constraint (between 1 and 5).&lt;/p&gt;

&lt;p&gt;Step 3: Create the Enrollments Table&lt;br&gt;
Since students can enroll in multiple courses, we need a join table:&lt;/p&gt;

&lt;p&gt;sql&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;br&gt;
Here:&lt;br&gt;
Enrollments connects StudentID ↔ CourseID.&lt;/p&gt;

&lt;p&gt;We can also store the student’s grade.&lt;/p&gt;

&lt;p&gt;Step 4: Insert Sample Data&lt;br&gt;
Let’s add a few student records:&lt;/p&gt;

&lt;p&gt;sql&lt;br&gt;
INSERT INTO Students (StudentID, Name, Dept, DOB, Email)&lt;br&gt;
VALUES (2, 'DIVYA','AIDS', TO_DATE('11/22/2007', 'MM/DD/YYYY'), '&lt;a href="mailto:divya12ad@gmail.com"&gt;divya12ad@gmail.com&lt;/a&gt;');&lt;/p&gt;

&lt;p&gt;INSERT INTO Students (StudentID, Name, Dept, DOB, Email)&lt;br&gt;
VALUES (3, 'DIKSHA', 'IT', TO_DATE('7/9/2008', 'MM/DD/YYYY'), '&lt;a href="mailto:diksha11it@gmail.com"&gt;diksha11it@gmail.com&lt;/a&gt;');&lt;/p&gt;

&lt;p&gt;INSERT INTO Students (StudentID, Name, Dept, DOB, Email)&lt;br&gt;
VALUES (1, 'HARINI', 'Computer Science', TO_DATE('3/15/2007', 'MM/DD/YYYY'), '&lt;a href="mailto:harini16cs@gmail.com"&gt;harini16cs@gmail.com&lt;/a&gt;');&lt;/p&gt;

&lt;p&gt;Step 5: Altering the Table (Adding Columns + Constraints)&lt;br&gt;
Suppose we forgot to add phone numbers. Let’s fix that:&lt;/p&gt;

&lt;p&gt;sql&lt;br&gt;
ALTER TABLE Students&lt;br&gt;
ADD PhoneNo VARCHAR2(10);&lt;br&gt;
Also, ensure course credits are between 1 and 5:&lt;/p&gt;

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

&lt;p&gt;Step 6: Insert Courses&lt;br&gt;
sql&lt;br&gt;
INSERT INTO Courses (CourseID, CourseName, Credits)&lt;br&gt;
VALUES (101, 'MACHINE LEARNING', 3);&lt;/p&gt;

&lt;p&gt;INSERT INTO Courses (CourseID, CourseName, Credits)&lt;br&gt;
VALUES (102, 'OPERATING SYSTEMS', 4);&lt;/p&gt;

&lt;p&gt;INSERT INTO Courses (CourseID, CourseName, Credits)&lt;br&gt;
VALUES (103, 'Data Structures', 5);&lt;/p&gt;

&lt;p&gt;Step 7: Committing Data&lt;br&gt;
Always save your changes:&lt;/p&gt;

&lt;p&gt;sql&lt;br&gt;
COMMIT;&lt;/p&gt;

&lt;p&gt;Step 8: Querying the Database&lt;br&gt;
Now, let’s run some useful queries:&lt;/p&gt;

&lt;p&gt;Show student names in uppercase &amp;amp; length of their email address:&lt;/p&gt;

&lt;p&gt;sql&lt;br&gt;
SELECT&lt;br&gt;
    UPPER(Name) AS Student_Name,&lt;br&gt;
    LENGTH(Email) AS Email_Length&lt;br&gt;
FROM Students;&lt;br&gt;
Check available courses:&lt;/p&gt;

&lt;p&gt;sql&lt;br&gt;
SELECT CourseID, CourseName, Credits&lt;br&gt;
FROM Courses;&lt;br&gt;
View all student details:&lt;/p&gt;

&lt;p&gt;sql&lt;br&gt;
SELECT StudentID, Name, Dept, DOB, Email, PhoneNo&lt;br&gt;
FROM Students;&lt;/p&gt;

&lt;p&gt;we have created a database which includes the insertion of data,altering&lt;br&gt;
and showing the output.&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%2Fmiwuk5d5d39qhweq5alv.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%2Fmiwuk5d5d39qhweq5alv.png" alt=" " width="800" height="407"&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%2Fab7hu2usz2u1wpan2rv9.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%2Fab7hu2usz2u1wpan2rv9.png" alt=" " width="800" height="402"&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%2F0hl2rzq7zffn34c37xj0.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%2F0hl2rzq7zffn34c37xj0.png" alt=" " width="800" height="400"&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%2Fhyxquu1kss4xxgwswjp1.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%2Fhyxquu1kss4xxgwswjp1.png" alt=" " width="800" height="401"&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%2Fyqhovn2t9trxrmp6zaj7.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%2Fyqhovn2t9trxrmp6zaj7.png" alt=" " width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;THANK YOU SIR &lt;a class="mentioned-user" href="https://dev.to/santhoshnc"&gt;@santhoshnc&lt;/a&gt; for supporting and guiding me.&lt;/p&gt;

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