<?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: TERERA FAITH TANAKA 24CB070</title>
    <description>The latest articles on DEV Community by TERERA FAITH TANAKA 24CB070 (@terera_faithtanaka24cb0).</description>
    <link>https://dev.to/terera_faithtanaka24cb0</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%2F3458141%2F29ad4476-925c-47fe-9276-3d443e45d74a.png</url>
      <title>DEV Community: TERERA FAITH TANAKA 24CB070</title>
      <link>https://dev.to/terera_faithtanaka24cb0</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/terera_faithtanaka24cb0"/>
    <language>en</language>
    <item>
      <title>ACID property with SQL transactions</title>
      <dc:creator>TERERA FAITH TANAKA 24CB070</dc:creator>
      <pubDate>Tue, 07 Oct 2025 13:57:35 +0000</pubDate>
      <link>https://dev.to/terera_faithtanaka24cb0/acid-property-with-sql-transactions-3ejp</link>
      <guid>https://dev.to/terera_faithtanaka24cb0/acid-property-with-sql-transactions-3ejp</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;When working with databases, ensuring the reliability and correctness of transactions is essential. This is where the ACID properties come into play. ACID stands for Atomicity, Consistency, Isolation, and Durability which are the core principles that guarantee trustworthy database transactions.&lt;br&gt;
In this blog we are to focus on these ACID properties:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;we will start by creating a database called acid_test then create a table named Accounts with the following structure:&lt;/strong&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%2Fiw15tz0lj25854twerli.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%2Fiw15tz0lj25854twerli.png" alt=" " width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

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

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

&lt;p&gt;&lt;strong&gt;Insert 3 Sample Rows&lt;/strong&gt;&lt;br&gt;
INSERT INTO Accounts VALUES (1, 'Alice', 5000);&lt;br&gt;
INSERT INTO Accounts VALUES (2, 'Bob', 3000);&lt;br&gt;
INSERT INTO Accounts VALUES (3, 'Charlie', 7000);&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%2F2pmoc9edno6i7g0dtek4.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%2F2pmoc9edno6i7g0dtek4.png" alt=" " width="800" height="449"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Displaying the data&lt;/strong&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%2F4ddnecve9aixfjln8lag.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%2F4ddnecve9aixfjln8lag.png" alt=" " width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Exploring ACID Properties
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Atomicity: All or Nothing Transaction&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;UPDATE Accounts SET balance = balance - 1000 WHERE acc_no = 1;&lt;br&gt;
-- Suppose an error happens here or we decide to rollback&lt;br&gt;
UPDATE Accounts SET balance = balance + 1000 WHERE acc_no = 2;&lt;/p&gt;

&lt;p&gt;ROLLBACK;  -- Cancel the transaction midway&lt;/p&gt;

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

&lt;p&gt;Both updates are part of one transaction.&lt;br&gt;
If any step fails or we explicitly roll back, no partial update remains.&lt;br&gt;
Balances for Alice and Bob remain unchanged.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Consistency: Data Integrity Constraints
&lt;/h2&gt;

&lt;p&gt;INSERT INTO Accounts VALUES (4, 'David', -500);&lt;/p&gt;

&lt;p&gt;The database rejects the insert due to the CHECK (balance &amp;gt;= 0) constraint.&lt;br&gt;
This enforces consistency, ensuring data adheres to business rules.&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%2Fd4mxfwv3erve9f026n76.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%2Fd4mxfwv3erve9f026n76.png" alt=" " width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Isolation: Concurrent Transactions
&lt;/h2&gt;

&lt;p&gt;Open two database sessions:&lt;/p&gt;

&lt;p&gt;Session 1: Update Alice's balance.&lt;br&gt;
BEGIN TRANSACTION;&lt;br&gt;
UPDATE Accounts SET balance = balance - 500 WHERE acc_no = 1;&lt;br&gt;
-- Do NOT commit yet&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%2F3uayqudehosk9vkve288.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%2F3uayqudehosk9vkve288.png" alt=" " width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Session 2: Read Alice's balance.&lt;br&gt;
&lt;strong&gt;SELECT balance FROM Accounts WHERE acc_no = 1;&lt;/strong&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%2Fwct0tsc9i7mi7t916jph.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%2Fwct0tsc9i7mi7t916jph.png" alt=" " width="800" height="449"&gt;&lt;/a&gt;&lt;br&gt;
Session 2 may see the old balance (before update), depending on the isolation level.&lt;br&gt;
This prevents dirty reads and shows how isolation controls concurrent transaction visibility.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Durability: Persisting Committed Data
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;After committing a transaction:&lt;/strong&gt;&lt;br&gt;
BEGIN TRANSACTION;&lt;br&gt;
UPDATE Accounts SET balance = balance + 1000 WHERE acc_no = 2;&lt;br&gt;
COMMIT;&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%2Fo6uu4t8y3asporj8d59q.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%2Fo6uu4t8y3asporj8d59q.png" alt=" " width="800" height="449"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Now, restart the database server.&lt;br&gt;
Query the Accounts table again:&lt;/strong&gt;&lt;br&gt;
SELECT * FROM Accounts WHERE acc_no = 3;&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%2F1sxql99cprsq3tlp5u0s.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%2F1sxql99cprsq3tlp5u0s.png" alt=" " width="800" height="449"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;The data can still be viewed.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In conclusion ACID &lt;br&gt;
By understanding and leveraging these principles, developers and database administrators can build applications that maintain data integrity even under complex and concurrent operations .Huge thanks to &lt;a class="mentioned-user" href="https://dev.to/santhoshnc"&gt;@santhoshnc&lt;/a&gt; for the guidance.&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>database</category>
      <category>sql</category>
      <category>computerscience</category>
    </item>
    <item>
      <title>MongoDB</title>
      <dc:creator>TERERA FAITH TANAKA 24CB070</dc:creator>
      <pubDate>Sun, 05 Oct 2025 19:37:25 +0000</pubDate>
      <link>https://dev.to/terera_faithtanaka24cb0/mongodb-2oo3</link>
      <guid>https://dev.to/terera_faithtanaka24cb0/mongodb-2oo3</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;In this blog, we will gain practical experience performing CRUD (Create, Read, Update, Delete) operations in MongoDB. We will use a simple college student schema in a students collection and run queries on MongoDB Atlas.&lt;br&gt;
&lt;strong&gt;Schema (Collection: students)&lt;/strong&gt;&lt;br&gt;
Each student document should follow the structure below:&lt;br&gt;
{&lt;br&gt;
  "student_id": "S001",&lt;br&gt;
  "name": "Santhosh",&lt;br&gt;
  "age": 20,&lt;br&gt;
  "department": "CSBS",&lt;br&gt;
  "year": 2,&lt;br&gt;
  "cgpa": 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%2Frot5dck0vw4rf7bmm1a5.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%2Frot5dck0vw4rf7bmm1a5.png" alt=" " width="800" height="431"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Create (Insert)&lt;/strong&gt;&lt;br&gt;
CREATE A DATABASE CALLED COLLEGE_STUDENTS AND A COLLECTION CALLED STUDENTS&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%2Ftfse41vc3w5tmkp70lr0.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%2Ftfse41vc3w5tmkp70lr0.png" alt=" " width="800" height="449"&gt;&lt;/a&gt;&lt;br&gt;
Insert at least 5 student records into the students collection.&lt;/p&gt;

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

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

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

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn0d5s7hmhxaygzsge2ym.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%2Fn0d5s7hmhxaygzsge2ym.png" alt=" " width="800" height="422"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Find all students with CGPA &amp;gt; 8.&lt;/strong&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%2F9sermmf7ma3kdr9e6cw5.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%2F9sermmf7ma3kdr9e6cw5.png" alt=" " width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Find students belonging to the Computer Science department.&lt;/strong&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%2Frlxdb2ov7wn5w7n7cede.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%2Frlxdb2ov7wn5w7n7cede.png" alt=" " width="800" height="400"&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%2Fkdp63rhs09rhusu6vgii.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%2Fkdp63rhs09rhusu6vgii.png" alt=" " width="800" height="393"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Update
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Update the CGPA of a specific student.&lt;/strong&gt;&lt;br&gt;
modify cgpa of Faith to 8.3&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%2Fek37crackw05qqow7g2j.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%2Fek37crackw05qqow7g2j.png" alt=" " width="800" height="398"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Increase the year of study for all 3rd year students by 1&lt;/strong&gt;&lt;br&gt;
before&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%2Fnpxm821876pheda40zok.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%2Fnpxm821876pheda40zok.png" alt=" " width="800" height="398"&gt;&lt;/a&gt;&lt;br&gt;
after&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%2Fmgw444b0435knww8ttop.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%2Fmgw444b0435knww8ttop.png" alt=" " width="800" height="398"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Delete
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Delete one student record by student_id.&lt;/strong&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%2Ful2n6ow2k6x1wes0b45e.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%2Ful2n6ow2k6x1wes0b45e.png" alt=" " width="800" height="422"&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%2F3ox2rlkon0xsf2pye36b.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%2F3ox2rlkon0xsf2pye36b.png" alt=" " width="800" height="395"&gt;&lt;/a&gt;&lt;br&gt;
*&lt;em&gt;Delete all students having CGPA &amp;lt; 7.5.&lt;br&gt;
*&lt;/em&gt;&lt;/p&gt;

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

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

&lt;p&gt;Mastering CRUD operations in MongoDB is fundamental for building efficient and scalable applications that rely on flexible, document-based data storage. By understanding how to Create, Read, Update, and Delete data effectively, developers can leverage MongoDB’s powerful querying capabilities and schema flexibility to manage data in real-time applications with ease. Whether you’re building a small project or a complex system, a solid grasp of these operations ensures that your data management is both robust and performant.Thanks to &lt;a class="mentioned-user" href="https://dev.to/santhoshnc"&gt;@santhoshnc&lt;/a&gt; for the guidance.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>tutorial</category>
      <category>cloud</category>
      <category>node</category>
    </item>
    <item>
      <title>Cursor + Trigger</title>
      <dc:creator>TERERA FAITH TANAKA 24CB070</dc:creator>
      <pubDate>Sun, 05 Oct 2025 19:01:07 +0000</pubDate>
      <link>https://dev.to/terera_faithtanaka24cb0/cursor-trigger-3a3f</link>
      <guid>https://dev.to/terera_faithtanaka24cb0/cursor-trigger-3a3f</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;In this blog we will explore two powerful SQL concepts, Cursors and Triggers. These tools help you handle row-by-row processing and automate actions in response to data changes, respectively.&lt;/p&gt;

&lt;p&gt;A cursor allows you to fetch and process rows returned by a query one at a time, which is useful for row-level operations that cannot be done in a single SQL statement.&lt;/p&gt;

&lt;p&gt;CREATE TABLE Employee (&lt;br&gt;
    emp_id INT PRIMARY KEY,&lt;br&gt;
    emp_name VARCHAR(50),&lt;br&gt;
    salary INT&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%2Fkls0rv3p9q8frz9pslny.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%2Fkls0rv3p9q8frz9pslny.png" alt=" " width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;INSERT INTO Employee VALUES(1, 'John Doe', 60000);&lt;br&gt;
INSERT INTO Employee VALUES(2, 'Jane Brown', 45000);&lt;br&gt;
INSERT INTO Employee VALUES(3, 'Jim Brown', 52000);&lt;br&gt;
INSERT INTO Employee VALUES(4, 'Lisa White', 48000);&lt;br&gt;
INSERT INTO Employee VALUES(5, 'Mike Black', 75000);&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%2Fa4j268yyyvb4aushli40.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%2Fa4j268yyyvb4aushli40.png" alt=" " width="800" height="399"&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%2F5pktbsbehmja7x9pdjlk.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%2F5pktbsbehmja7x9pdjlk.png" alt=" " width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Create a cursor that displays employee names whose salary is greater than 50,000 from the Employee table.&lt;/p&gt;

&lt;p&gt;DECLARE emp_cursor CURSOR FOR&lt;br&gt;
SELECT emp_name FROM Employee WHERE salary &amp;gt; 50000;&lt;/p&gt;

&lt;p&gt;DECLARE @emp_name VARCHAR(50);&lt;/p&gt;

&lt;p&gt;OPEN emp_cursor;&lt;/p&gt;

&lt;p&gt;FETCH NEXT FROM emp_cursor INTO @emp_name;&lt;/p&gt;

&lt;p&gt;WHILE @@FETCH_STATUS = 0&lt;br&gt;
BEGIN&lt;br&gt;
    PRINT @emp_name;  -- or use SELECT in some systems&lt;br&gt;
    FETCH NEXT FROM emp_cursor INTO @emp_name;&lt;br&gt;
END;&lt;/p&gt;

&lt;p&gt;CLOSE emp_cursor;&lt;br&gt;
DEALLOCATE emp_cursor;&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%2Fxu5m85nvhnjvryzeitez.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%2Fxu5m85nvhnjvryzeitez.png" alt=" " width="800" height="397"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Trigger&lt;/strong&gt; &lt;br&gt;
AFTER INSERT Trigger (Student Table)&lt;br&gt;
Whenever a new student is added to the Students table, we want to automatically insert a log entry into the Student_Audit table to keep track of the registration.&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%2Ftwygcky441mbd7aibu1f.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%2Ftwygcky441mbd7aibu1f.png" alt=" " width="800" height="398"&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%2Flhnaaxi123ihy9hazoh5.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%2Flhnaaxi123ihy9hazoh5.png" 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%2Fred60ri0sv7xy19rm47e.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%2Fred60ri0sv7xy19rm47e.png" alt=" " width="800" height="397"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;summary&lt;/strong&gt;&lt;br&gt;
Cursors help process data row-by-row when set-based operations don’t suffice.&lt;/p&gt;

&lt;p&gt;Triggers automate actions in response to table changes, great for audit logging or enforcing business rules.Thanks to &lt;a class="mentioned-user" href="https://dev.to/santhoshnc"&gt;@santhoshnc&lt;/a&gt; for the guidance&lt;/p&gt;

</description>
      <category>database</category>
      <category>learning</category>
      <category>sql</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Transactions, Deadlocks &amp; Log Based Recovery Schema</title>
      <dc:creator>TERERA FAITH TANAKA 24CB070</dc:creator>
      <pubDate>Sun, 05 Oct 2025 18:29:05 +0000</pubDate>
      <link>https://dev.to/terera_faithtanaka24cb0/transactions-deadlocks-log-based-recoveryschema-2149</link>
      <guid>https://dev.to/terera_faithtanaka24cb0/transactions-deadlocks-log-based-recoveryschema-2149</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Managing data integrity and concurrency is critical in any database system. In this blog, we are going to explore key database concepts ie transactions with atomicity and rollback, deadlock simulation, and log-based recovery &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Schema used&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Accounts table&lt;/strong&gt;&lt;br&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;&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%2Fmh1dnz80opm2t6wwp8a9.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%2Fmh1dnz80opm2t6wwp8a9.png" alt=" " width="800" height="342"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;INSERT INTO Accounts VALUES&lt;br&gt;
(1, 'Alice', 1000),&lt;br&gt;
(2, 'Bob', 1500),&lt;br&gt;
(3, 'Charlie', 2000);&lt;/p&gt;

&lt;p&gt;&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%2Frgq4osknwrem0d06x0e3.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%2Frgq4osknwrem0d06x0e3.png" alt=" " width="800" height="395"&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%2Fljr5wykxqntb8dtm5qnk.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%2Fljr5wykxqntb8dtm5qnk.png" alt=" " width="800" height="401"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Transactions: Atomicity &amp;amp; Rollback&lt;/strong&gt;&lt;br&gt;
A transaction is a sequence of operations performed as a single logical unit of work. It ensures atomicity, meaning all operations succeed or none at all.&lt;/p&gt;

&lt;p&gt;BEGIN;&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;br&gt;
ROLLBACK;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvdbxbw4nmpoocfqykd84.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%2Fvdbxbw4nmpoocfqykd84.png" alt=" " width="800" height="398"&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%2F1j37cb7u3eo76xxzhwz5.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%2F1j37cb7u3eo76xxzhwz5.png" alt=" " width="800" height="399"&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%2Fhh0i3picnndswk9i4pea.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%2Fhh0i3picnndswk9i4pea.png" alt=" " width="800" height="397"&gt;&lt;/a&gt;&lt;br&gt;
After applying rollback&lt;br&gt;
The balances remain unchanged because the rollback undid the updates, demonstrating atomicity ie no partial updates happened.&lt;br&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%2F73uwnccimvkv9ftsj1le.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%2F73uwnccimvkv9ftsj1le.png" alt=" " width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deadlock Simulation&lt;/strong&gt;&lt;br&gt;
A deadlock happens when two sessions wait for each other’s locked resources indefinitely.&lt;br&gt;
Open two separate sessions (e.g., two terminal windows connected to the database).&lt;br&gt;
&lt;u&gt;Session 1&lt;/u&gt;&lt;br&gt;
BEGIN;&lt;br&gt;
UPDATE Accounts SET balance = balance + 0 WHERE name = 'Alice';&lt;/p&gt;

&lt;p&gt;--(will wait if locked by Session 2)&lt;br&gt;
UPDATE Accounts SET balance = balance + 100 WHERE name = 'Bob';&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%2Fohmlxx3rmpz8p68nr381.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%2Fohmlxx3rmpz8p68nr381.png" alt=" " width="800" height="395"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Session 2&lt;/u&gt;&lt;br&gt;
BEGIN;&lt;br&gt;
UPDATE Accounts SET balance = balance + 0 WHERE name = 'Bob';&lt;/p&gt;

&lt;p&gt;--  (will wait if locked by Session 1)&lt;br&gt;
UPDATE Accounts SET balance = balance + 100 WHERE name = 'Alice';&lt;/p&gt;

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

&lt;p&gt;Both sessions wait for each other indefinitely ie a &lt;u&gt;deadlock&lt;/u&gt;&lt;/p&gt;

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

&lt;p&gt;[mysqld]&lt;br&gt;
log_bin = mysql-bin&lt;br&gt;
BEGIN;&lt;/p&gt;

&lt;p&gt;UPDATE Accounts SET balance = balance - 300 WHERE name = 'Charlie';&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fupohdtguaasqf0iol87t.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%2Fupohdtguaasqf0iol87t.png" alt=" " width="800" height="399"&gt;&lt;/a&gt;&lt;br&gt;
The update and rollback operations are recorded in the log.&lt;/p&gt;

&lt;p&gt;During recovery, the database uses the log to undo changes from uncommitted transactions ensuring data consistency.&lt;/p&gt;

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

&lt;p&gt;Understanding these concepts helps build reliable, concurrent database applications that maintain data integrity even under failure or heavy multi-user access.I extend my gratitude to &lt;a class="mentioned-user" href="https://dev.to/santhoshnc"&gt;@santhoshnc&lt;/a&gt; for the guidance through deadlocks.&lt;/p&gt;

</description>
      <category>career</category>
      <category>database</category>
      <category>sql</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Indexing, Hashing &amp; Query Optimization</title>
      <dc:creator>TERERA FAITH TANAKA 24CB070</dc:creator>
      <pubDate>Sun, 05 Oct 2025 17:49:07 +0000</pubDate>
      <link>https://dev.to/terera_faithtanaka24cb0/indexing-hashing-query-optimization-53po</link>
      <guid>https://dev.to/terera_faithtanaka24cb0/indexing-hashing-query-optimization-53po</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;To start with the definations,well indexing is a data structure technique used to improve the speed of data retrieval operations in a database,hashing is used to map data to a fixed-size value &lt;strong&gt;(ie hash)&lt;/strong&gt; using a hash function and Query Optimization is the process of improving the efficiency of SQL queries so that they run faster and consume fewer resources (CPU, memory, disk I/O).&lt;br&gt;
When working with large datasets, performance becomes critical. &lt;br&gt;
In this blog post, we will explore different types of indexes in SQL using a simple Students table:&lt;/p&gt;

&lt;p&gt;1.&lt;strong&gt;B-Tree Index&lt;/strong&gt; &lt;br&gt;
2.&lt;strong&gt;B+ Tree Index&lt;/strong&gt;&lt;br&gt;
3.&lt;strong&gt;Hash Index&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We will walk through creating indexes and using queries to demonstrate their impact.&lt;br&gt;
Firstly we will &lt;strong&gt;create a table called students&lt;/strong&gt; as shown below:&lt;br&gt;
&lt;code&gt;CREATE TABLE Students (&lt;br&gt;
    roll_no INT PRIMARY KEY,&lt;br&gt;
    name VARCHAR(50),&lt;br&gt;
    dept VARCHAR(10),&lt;br&gt;
    cgpa DECIMAL(3,2)&lt;br&gt;
);&lt;br&gt;
&lt;/code&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%2Fjs0uctv1tgglj5gc6afw.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%2Fjs0uctv1tgglj5gc6afw.png" alt=" " width="800" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Inserting at least 20 sample records
&lt;/h2&gt;

&lt;p&gt;`INSERT INTO Students (roll_no, name, dept, cgpa) VALUES&lt;br&gt;
(101, 'Alice', 'CSBS', 8.5);&lt;br&gt;
INSERT INTO Students (roll_no, name, dept, cgpa) VALUES&lt;br&gt;
(102, 'Bob', 'MECH', 7.2);&lt;br&gt;
INSERT INTO Students (roll_no, name, dept, cgpa) VALUES&lt;br&gt;
(103, 'Charlie', 'EE', 9.1);&lt;br&gt;
INSERT INTO Students (roll_no, name, dept, cgpa) VALUES&lt;br&gt;
(104, 'David', 'CSBS', 6.8);&lt;br&gt;
INSERT INTO Students (roll_no, name, dept, cgpa) VALUES&lt;br&gt;
(105, 'Eva', 'MECH', 8.3);&lt;br&gt;
INSERT INTO Students (roll_no, name, dept, cgpa) VALUES&lt;br&gt;
(106, 'Frank', 'EE', 7.9);&lt;br&gt;
INSERT INTO Students (roll_no, name, dept, cgpa) VALUES&lt;br&gt;
(107, 'Grace', 'CSBS', 9.0);&lt;br&gt;
INSERT INTO Students (roll_no, name, dept, cgpa) VALUES&lt;br&gt;
(108, 'Helen', 'MECH', 8.6);&lt;br&gt;
INSERT INTO Students (roll_no, name, dept, cgpa) VALUES&lt;br&gt;
(109, 'Ian', 'EE', 7.5);&lt;br&gt;
INSERT INTO Students (roll_no, name, dept, cgpa) VALUES&lt;br&gt;
(110, 'Jack', 'CSBS', 8.9);&lt;br&gt;
INSERT INTO Students (roll_no, name, dept, cgpa) VALUES&lt;br&gt;
(111, 'Karen', 'MECH', 7.7);&lt;br&gt;
INSERT INTO Students (roll_no, name, dept, cgpa) VALUES&lt;br&gt;
(112, 'Leo', 'EE', 8.2);&lt;br&gt;
INSERT INTO Students (roll_no, name, dept, cgpa) VALUES&lt;br&gt;
(113, 'Mona', 'CSBS', 9.3);&lt;br&gt;
INSERT INTO Students (roll_no, name, dept, cgpa) VALUES&lt;br&gt;
(114, 'Nate', 'MECH', 6.9);&lt;br&gt;
INSERT INTO Students (roll_no, name, dept, cgpa) VALUES&lt;br&gt;
(115, 'Olivia', 'EE', 8.0);&lt;br&gt;
INSERT INTO Students (roll_no, name, dept, cgpa) VALUES&lt;br&gt;
(116, 'Paul', 'CSBS', 8.4);&lt;br&gt;
INSERT INTO Students (roll_no, name, dept, cgpa) VALUES&lt;br&gt;
(117, 'Quinn', 'MECH', 7.6);&lt;br&gt;
INSERT INTO Students (roll_no, name, dept, cgpa) VALUES&lt;br&gt;
(118, 'Rita', 'EE', 9.4);&lt;br&gt;
INSERT INTO Students (roll_no, name, dept, cgpa) VALUES&lt;br&gt;
(119, 'Sam', 'CSBS', 8.1);&lt;br&gt;
INSERT INTO Students (roll_no, name, dept, cgpa) VALUES&lt;br&gt;
(120, 'Tina', 'MECH', 7.8);&lt;/p&gt;

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

&lt;h2&gt;
  
  
  Create a B-Tree index on the roll_no column of the Students table and Execute a query to fetch the details of a student with roll_no = 116.
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;CREATE INDEX idx_roll_no ON Students (roll_no);&lt;br&gt;
&lt;/code&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%2Fwhebky5051x5wqfz3y8q.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%2Fwhebky5051x5wqfz3y8q.png" alt=" " width="800" height="357"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;SELECT * FROM Students WHERE roll_no = 110;&lt;br&gt;
&lt;/code&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%2Fw9hrss0a3q08dnmk68qd.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%2Fw9hrss0a3q08dnmk68qd.png" alt=" " width="800" height="402"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Create a B+ Tree index on the cgpa column of the Students table.Write a query to display all students with cgpa &amp;gt; 8.0.
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;CREATE INDEX idx_cgpa ON Students (cgpa);&lt;br&gt;
&lt;/code&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%2Fmmwz9zanbupqb9m7l9ai.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%2Fmmwz9zanbupqb9m7l9ai.png" alt=" " width="800" height="352"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;SELECT * FROM Students WHERE cgpa &amp;gt; 8.0;&lt;br&gt;
&lt;/code&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%2F8kzkt8wktbxl3ai9x3dx.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%2F8kzkt8wktbxl3ai9x3dx.png" alt=" " width="800" height="424"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Create a Hash index on the dept column of the Students table and Run a query to retrieve all students from the 'CSBS' department.
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;CREATE INDEX idx_dept_hash ON Students USING HASH (dept);&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
&lt;code&gt;SELECT * FROM Students WHERE dept = 'CSBS';&lt;br&gt;
&lt;/code&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%2Fmkiofpudjlirdvjqfmaq.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%2Fmkiofpudjlirdvjqfmaq.png" alt=" " width="800" height="402"&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%2Fcl30ykay8s7y6jx55v2s.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%2Fcl30ykay8s7y6jx55v2s.png" alt=" " width="800" height="395"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  CONCLUSION
&lt;/h2&gt;

&lt;p&gt;Indexing is a cornerstone of database performance optimization. By choosing the right type of index you tend to speed up data retrieval and improve your application's responsiveness.&lt;br&gt;
Mastering indexing not only enhances performance but also helps maintain scalable and efficient databases as your data grows.Thanks to &lt;a class="mentioned-user" href="https://dev.to/santhoshnc"&gt;@santhoshnc&lt;/a&gt; for the guidance.&lt;/p&gt;

</description>
      <category>database</category>
      <category>learning</category>
      <category>data</category>
      <category>community</category>
    </item>
    <item>
      <title>DATABASE NORMALIZATION</title>
      <dc:creator>TERERA FAITH TANAKA 24CB070</dc:creator>
      <pubDate>Sun, 05 Oct 2025 17:03:14 +0000</pubDate>
      <link>https://dev.to/terera_faithtanaka24cb0/database-normalization-57lg</link>
      <guid>https://dev.to/terera_faithtanaka24cb0/database-normalization-57lg</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Database normalization is an essential part of designing efficient, scalable, and maintainable databases. In this post, we will focus mainly on 1NF ,2NF and  3NF using a simple student-course example shown below and implement each stage using SQL CREATE TABLE statements.&lt;/p&gt;

&lt;h2&gt;
  
  
  Anomalies in table above
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Insertion anomaly: You can’t insert a new course unless a student enrolls in it.&lt;/li&gt;
&lt;li&gt;Update anomaly: If Prof. Smith changes name, you need to update multiple rows.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;3.Deletion anomaly: If Charlie drops all courses, info about Chemistry and Prof. Lee might be lost.&lt;/p&gt;

&lt;h2&gt;
  
  
  First Normal Form (1NF)
&lt;/h2&gt;

&lt;p&gt;Eliminate repeating groups and ensure atomicity.&lt;br&gt;
In our case, the base table is already atomic but we will enforce a primary key.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;CREATE TABLE StudentCourse_1NF (&lt;br&gt;
    StudentID INT,&lt;br&gt;
    StudentName VARCHAR(50),&lt;br&gt;
    CourseID VARCHAR(10),&lt;br&gt;
    CourseName VARCHAR(50),&lt;br&gt;
    InstructorName VARCHAR(50),&lt;br&gt;
    PRIMARY KEY (StudentID, CourseID)&lt;br&gt;
);&lt;/code&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%2Fgyl7bp0qbl1im5ogema6.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%2Fgyl7bp0qbl1im5ogema6.png" alt=" " width="800" height="403"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Second Normal Form (2NF)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Eliminate partial dependencies.&lt;br&gt;
Only non-key attributes should depend on the full primary key.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STUDENT TABLE&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;CREATE TABLE Student (&lt;br&gt;
    StudentID INT PRIMARY KEY,&lt;br&gt;
    StudentName VARCHAR(50)&lt;br&gt;
);&lt;/code&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%2F25kms2nhltojyshkp0lu.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%2F25kms2nhltojyshkp0lu.png" alt=" " width="800" height="396"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;COURSE TABLE&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;&lt;br&gt;
CREATE TABLE Course (&lt;br&gt;
    CourseID VARCHAR(10) PRIMARY KEY,&lt;br&gt;
    CourseName VARCHAR(50),&lt;br&gt;
    InstructorName VARCHAR(50)&lt;br&gt;
);&lt;br&gt;
&lt;/code&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%2Fatar42soxi5ut6wc9cr4.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%2Fatar42soxi5ut6wc9cr4.png" alt=" " width="800" height="394"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;RELATIONSHIP BETWEEN THE TWO&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;CREATE TABLE StudentCourse (&lt;br&gt;
    StudentID INT,&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;/code&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%2Fz3s16c3hd5cod2fa1zwr.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%2Fz3s16c3hd5cod2fa1zwr.png" alt=" " width="800" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Third Normal Form (3NF)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Eliminate transitive dependencies.&lt;br&gt;
Attributes should only depend on the primary key, not on other non-key attributes.&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Instructor table&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;CREATE TABLE Instructor (&lt;br&gt;
    InstructorID INT PRIMARY KEY,&lt;br&gt;
    InstructorName VARCHAR(50)&lt;br&gt;
);&lt;/code&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%2Fx4ldmaxjlzh3dr5js0h2.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%2Fx4ldmaxjlzh3dr5js0h2.png" alt=" " width="800" height="399"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Updated course table&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;CREATE TABLE Course (&lt;br&gt;
    CourseID VARCHAR(10) PRIMARY KEY,&lt;br&gt;
    CourseName VARCHAR(50),&lt;br&gt;
    InstructorID INT,&lt;br&gt;
    FOREIGN KEY (InstructorID) REFERENCES Instructor(InstructorID)&lt;br&gt;
);&lt;br&gt;
&lt;/code&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%2Fapl1bi7zhh5e7k1esvty.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%2Fapl1bi7zhh5e7k1esvty.png" alt=" " width="800" height="398"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Student table&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;CREATE TABLE Student (&lt;br&gt;
    StudentID INT PRIMARY KEY,&lt;br&gt;
    StudentName VARCHAR(50)&lt;br&gt;
);&lt;/code&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%2Fql0mnhmhv52ymoxy87it.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%2Fql0mnhmhv52ymoxy87it.png" alt=" " width="800" height="366"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Course table&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;CREATE TABLE StudentCourse (&lt;br&gt;
    StudentID INT,&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;/code&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%2Fg4m54p0e1ru3m1p9oct9.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%2Fg4m54p0e1ru3m1p9oct9.png" alt=" " width="800" height="395"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Inserting values into the tables
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Inserting into student table&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;INSERT INTO Student (StudentID, StudentName) VALUES&lt;br&gt;
(1, 'Alice'),&lt;br&gt;
(2, 'Bob'),&lt;br&gt;
(3, 'Charlie');&lt;/code&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%2F127kpqjbg1s4nbkbgd0b.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%2F127kpqjbg1s4nbkbgd0b.png" alt=" " width="800" height="399"&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%2Fl9fl4vqf2hg7xw9zb08n.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%2Fl9fl4vqf2hg7xw9zb08n.png" alt=" " width="800" height="397"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Inserting into instructors table&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;INSERT INTO Instructor (InstructorID, InstructorName) VALUES&lt;br&gt;
(1, 'Prof. Smith'),&lt;br&gt;
(2, 'Prof. Johnson'),&lt;br&gt;
(3, 'Prof. Lee');&lt;/code&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%2F6oa5pky2w28b144jx7r1.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%2F6oa5pky2w28b144jx7r1.png" 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%2Fki7fy4k0c9fcs6m6fru7.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%2Fki7fy4k0c9fcs6m6fru7.png" alt=" " width="800" height="398"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Inserting into course table&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;INSERT INTO Course (CourseID, CourseName, InstructorID) VALUES&lt;br&gt;
('C101', 'Math', 1),&lt;br&gt;
('C102', 'Physics', 2),&lt;br&gt;
('C103', 'Chemistry', 3);&lt;/code&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%2Fajmbucvwg078bnljphz6.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%2Fajmbucvwg078bnljphz6.png" alt=" " width="800" height="403"&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%2Fru9ae17imd761nke5gtv.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%2Fru9ae17imd761nke5gtv.png" alt=" " width="800" height="397"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Enrolment&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;INSERT INTO StudentCourse (StudentID, CourseID) VALUES&lt;br&gt;
(1, 'C101'),&lt;br&gt;
(1, 'C102'),&lt;br&gt;
(2, 'C101'),&lt;br&gt;
(3, 'C103');&lt;br&gt;
&lt;/code&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%2Flnirkzbz6uala3qc0rlr.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%2Flnirkzbz6uala3qc0rlr.png" 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%2Fbyb1cdvy0cw83cb3owag.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%2Fbyb1cdvy0cw83cb3owag.png" alt=" " width="800" height="397"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  JOINS QUERY
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;SELECT s.StudentName, c.CourseName, i.InstructorName&lt;br&gt;
FROM StudentCourse sc&lt;br&gt;
JOIN Student s ON sc.StudentID = s.StudentID&lt;br&gt;
JOIN Course c ON sc.CourseID = c.CourseID&lt;br&gt;
JOIN Instructor i ON c.InstructorID = i.InstructorID;&lt;br&gt;
&lt;/code&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%2Fuc5q5shez3h3xv9k5svq.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%2Fuc5q5shez3h3xv9k5svq.png" alt=" " width="800" height="396"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;By applying the principles of &lt;strong&gt;1NF&lt;/strong&gt;, &lt;strong&gt;2NF&lt;/strong&gt;, and &lt;strong&gt;3NF&lt;/strong&gt;, we transform a flat, repetitive table into a set of well-structured, interrelated tables that ensure data integrity and ease of maintenance.Through normalization, we not only improve the consistency and accuracy of data but also make our database scalable and easier to query. The process may seem complex at first, but breaking it down step-by-step, as we did with the student-course example, makes it straightforward and practical.&lt;br&gt;
Mastering normalization empowers you to design robust databases that stand the test of time, reduce errors, and improve performance. &lt;/p&gt;

</description>
      <category>webdev</category>
      <category>database</category>
      <category>sql</category>
      <category>tooling</category>
    </item>
    <item>
      <title>COLLEGE STUDENT AND COURSE MANAGEMENT SYSTEM</title>
      <dc:creator>TERERA FAITH TANAKA 24CB070</dc:creator>
      <pubDate>Mon, 25 Aug 2025 17:00:17 +0000</pubDate>
      <link>https://dev.to/terera_faithtanaka24cb0/college-student-and-course-management-system-3o7</link>
      <guid>https://dev.to/terera_faithtanaka24cb0/college-student-and-course-management-system-3o7</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Databases are the backbone of any college or university management system, for tracking students, courses and grades, SQL makes it possible to store and retrieve data efficiently. In this blog,I implemented such a system using Oracle LiveSQL. It includes concepts like create tables, insert data, enforce constraints, run queries with functions, aggregates, joins, and grouping, and even write a stored procedure.&lt;/p&gt;

&lt;h2&gt;
  
  
  BASE SCHEMA
&lt;/h2&gt;

&lt;p&gt;As part of my assignment i made this database which&lt;br&gt;
Comprises of &lt;strong&gt;4 tables&lt;/strong&gt; ie Students, Courses, Enrollments and Faculty.&lt;/p&gt;

&lt;h2&gt;
  
  
  TABLE CREATION
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Student table&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Courses table&lt;/strong&gt;&lt;br&gt;
&lt;code&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;/code&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%2Ffl9gzulwy1u56zny7unl.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%2Ffl9gzulwy1u56zny7unl.png" alt=" " width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enrollment&lt;/strong&gt;&lt;br&gt;
&lt;code&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;/code&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%2Fppc5e9oybyu5ghv41fuj.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%2Fppc5e9oybyu5ghv41fuj.png" alt=" " width="800" height="449"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Faculty&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;CREATE TABLE Faculty (&lt;br&gt;
    FacultyID NUMBER PRIMARY KEY,&lt;br&gt;
    FacultyName VARCHAR2(100) NOT NULL,&lt;br&gt;
    Dept VARCHAR2(50),&lt;br&gt;
    Email VARCHAR2(100) UNIQUE&lt;br&gt;
);&lt;br&gt;
&lt;/code&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%2Fjt75hkajnj9ukgf3r5vo.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%2Fjt75hkajnj9ukgf3r5vo.png" alt=" " width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  INSERTING SAMPLE DATA
&lt;/h2&gt;

&lt;p&gt;I inserted sample student data into student table as shown below:&lt;/p&gt;

&lt;p&gt;`INSERT INTO Students (StudentID, Name, Dept, DOB, Email)&lt;br&gt;
VALUES (1, 'Sarah', 'Biomedical', DATE '2000-05-12', '&lt;a href="mailto:alice@example.com"&gt;alice@example.com&lt;/a&gt;');&lt;/p&gt;

&lt;p&gt;INSERT INTO Students (StudentID, Name, Dept, DOB, Email)&lt;br&gt;
VALUES (2, 'James', 'Mechanical', DATE '2001-07-20', '&lt;a href="mailto:james@example.com"&gt;james@example.com&lt;/a&gt;');&lt;/p&gt;

&lt;p&gt;INSERT INTO Students (StudentID, Name, Dept, DOB, Email)&lt;br&gt;
VALUES (3, 'Charlie', 'Electrical', DATE '2002-02-14', '&lt;a href="mailto:charlie@example.com"&gt;charlie@example.com&lt;/a&gt;');&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%2F5ydsfvcpvw7yrpkqwl3b.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%2F5ydsfvcpvw7yrpkqwl3b.png" alt=" " width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  ALTER TABLE
&lt;/h2&gt;

&lt;p&gt;This adds a column called gender to the student table&lt;br&gt;
&lt;code&gt;ALTER TABLE Students&lt;br&gt;
ADD (Gender CHAR(10));&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  ADDING CONSTRAINTS
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;ALTER TABLE Courses&lt;br&gt;
ADD CONSTRAINT chk_Credits CHECK (Credits BETWEEN 1 AND 5);&lt;/code&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%2Fthejv4u66zjrb1zqvs7m.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%2Fthejv4u66zjrb1zqvs7m.png" alt=" " width="800" height="423"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Using Functions in SELECT
&lt;/h2&gt;

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

&lt;h2&gt;
  
  
  Aggregate Functions
&lt;/h2&gt;

&lt;p&gt;Average course credits&lt;br&gt;
`SELECT AVG(Credits) AS AvgCredits FROM Courses;&lt;/p&gt;

&lt;p&gt;SELECT COUNT(*) AS TotalStudents FROM Students;&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%2Fn9uy5kgbo7636kkw57pb.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%2Fn9uy5kgbo7636kkw57pb.png" alt=" " width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  JOIN Operation
&lt;/h2&gt;

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

&lt;p&gt;This query lists all students with their courses and grades.&lt;/p&gt;

&lt;h2&gt;
  
  
  GROUP BY with HAVING
&lt;/h2&gt;

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

&lt;p&gt;The above code shows departments with more than 2 students.&lt;/p&gt;

&lt;h2&gt;
  
  
  Views
&lt;/h2&gt;

&lt;p&gt;`CREATE OR REPLACE VIEW StudentCoursesView AS&lt;br&gt;
SELECT s.Name AS Name, c.CourseName, 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;br&gt;
Now you can query the view directly:&lt;/p&gt;

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

&lt;h2&gt;
  
  
  Stored Procedure
&lt;/h2&gt;

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

&lt;p&gt;Call it in Oracle LiveSQL:&lt;/p&gt;

&lt;p&gt;BEGIN&lt;br&gt;
    UpdateGrade(1, 101, 'A');&lt;br&gt;
END;&lt;br&gt;
/&lt;/p&gt;

&lt;p&gt;`&lt;/p&gt;

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

&lt;p&gt;In this blog, we explored the essential SQL operations that form the from creating and modifying tables using &lt;strong&gt;DDL and ALTER&lt;/strong&gt;, inserting and managing records with &lt;strong&gt;DML&lt;/strong&gt;, enforcing &lt;strong&gt;constraints&lt;/strong&gt; to maintain data integrity, and applying &lt;strong&gt;functions and aggregates&lt;/strong&gt; for insights, to performing &lt;strong&gt;joins&lt;/strong&gt;, grouping with &lt;strong&gt;HAVING&lt;/strong&gt;, building reusable &lt;strong&gt;views&lt;/strong&gt;, and even automating tasks with &lt;strong&gt;stored procedures&lt;/strong&gt;—each step plays a vital role in efficient database management.&lt;/p&gt;

&lt;p&gt;By practicing these queries&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; you not only learn the syntax but also gain a deeper understanding of how databases ensure &lt;strong&gt;accuracy, consistency, and reliability&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>database</category>
      <category>tooling</category>
      <category>learning</category>
      <category>sql</category>
    </item>
  </channel>
</rss>
