DEV Community

Ruhul Amin Sujon
Ruhul Amin Sujon

Posted on â€ĸ Edited on

Database - Level 1 - Part 1

🔸 SQL āϏāĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāϤ āĻĒā§āϰāĻļā§āύ āĻ“ āωāĻ¤ā§āϤāϰāσ

āĻĒā§āϰāĻļā§āύ ā§§: SQL āϕ⧀?

āωāĻ¤ā§āϤāϰ:

SQL (Structured Query Language) āĻšāϞ⧋ āĻāĻ•āϟāĻŋ āĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻ˛ā§āϝāĻžāĻ™ā§āĻ—ā§ā§Ÿā§‡āϜ āϝāĻž āĻĄā§‡āϟāĻžāĻŦ⧇āχāϏ⧇ āĻĄā§‡āϟāĻž insert, update, delete āĻāĻŦāĻ‚ query āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻšā§ŸāĨ¤

āĻĒā§āϰāĻļā§āύ ⧍: SELECT, INSERT, UPDATE āĻ“ DELETE āĻāϰ āĻ•āĻžāϜ āϕ⧀?

āωāĻ¤ā§āϤāϰ:

  • SELECT – āĻĄā§‡āϟāĻžāĻŦ⧇āχāϏ āĻĨ⧇āϕ⧇ āĻĄā§‡āϟāĻž āĻĒ⧜āϤ⧇ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻšā§Ÿ
  • INSERT – āύāϤ⧁āύ āĻĄā§‡āϟāĻž āϝ⧋āĻ— āĻ•āϰāϤ⧇ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻšā§Ÿ
  • UPDATE – āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āĻĄā§‡āϟāĻž āφāĻĒāĻĄā§‡āϟ āĻ•āϰāϤ⧇ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻšā§Ÿ
  • DELETE – āĻĄā§‡āϟāĻž āĻŽā§āϛ⧇ āĻĢ⧇āϞāϤ⧇ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻšā§Ÿ

āĻĒā§āϰāĻļā§āύ ā§Š: WHERE āĻāĻŦāĻ‚ HAVING āĻāϰ āĻŽāĻ§ā§āϝ⧇ āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āϝ āϕ⧀?

āωāĻ¤ā§āϤāϰ:

WHERE āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻšā§Ÿ row āĻĢāĻŋāĻ˛ā§āϟāĻžāϰ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻāĻŦāĻ‚ āĻāϟāĻŋ GROUP BY āĻāϰ āφāϗ⧇ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻšā§ŸāĨ¤
HAVING āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻšā§Ÿ aggregate result (āϝ⧇āĻŽāύ COUNT(), SUM()) āĻĢāĻŋāĻ˛ā§āϟāĻžāϰ āĻ•āϰāϤ⧇ āĻāĻŦāĻ‚ āĻāϟāĻŋ GROUP BY āĻāϰ āĻĒāϰ⧇ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻšā§ŸāĨ¤

āĻĒā§āϰāĻļā§āύ ā§Ē: GROUP BY āϕ⧀ āĻ•āĻžāĻœā§‡ āϞāĻžāϗ⧇?

āωāĻ¤ā§āϤāϰ:

GROUP BY āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻšā§Ÿ āĻāĻ• āĻŦāĻž āĻāĻ•āĻžāϧāĻŋāĻ• āĻ•āϞāĻžāĻŽā§‡āϰ āωāĻĒāϰ āĻ­āĻŋāĻ¤ā§āϤāĻŋ āĻ•āϰ⧇ āĻĄā§‡āϟāĻž āĻ—ā§āϰ⧁āĻĒ āĻ•āϰāϤ⧇, āϏāĻžāϧāĻžāϰāĻŖāϤ aggregate function āĻāϰ āϏāĻžāĻĨ⧇āĨ¤

āĻĒā§āϰāĻļā§āύ ā§Ģ: Index āϕ⧀ āĻāĻŦāĻ‚ āϕ⧇āύ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻšā§Ÿ?

āωāĻ¤ā§āϤāϰ:

Index āĻšāϞ⧋ āĻĄā§‡āϟāĻžāĻŦ⧇āχāϏ⧇āϰ āĻāĻ•āϟāĻŋ āĻĄā§‡āϟāĻž āĻ¸ā§āĻŸā§āϰāĻžāĻ•āϚāĻžāϰ āϝāĻž āĻĻā§āϰ⧁āϤ āϏāĻžāĻ°ā§āϚ āĻ“ āϰāĻŋāĻŸā§āϰāĻžāχāĻ­āĻžāϞ āϏ⧁āĻŦāĻŋāϧāĻž āĻĻā§‡ā§ŸāĨ¤ āĻāϟāĻŋ query execution āĻĻā§āϰ⧁āϤ āĻ•āϰāϤ⧇ āϏāĻžāĻšāĻžāĻ¯ā§āϝ āĻ•āϰ⧇āĨ¤

🔸 āĻĄā§‡āϟāĻžāĻŦ⧇āχāϏ āĻĄāĻŋāϜāĻžāχāύ āĻ“ āĻ•āύāϏ⧇āĻĒā§āϟ āĻĒā§āϰāĻļā§āύāσ

āĻĒā§āϰāĻļā§āύ ā§Ŧ: Normalization āϕ⧀?

āωāĻ¤ā§āϤāϰ:

Normalization āĻšāϞ⧋ āĻāĻ•āϟāĻŋ āĻĒā§āϰāĻ•ā§āϰāĻŋ⧟āĻž āϝāĻž āĻĄā§‡āϟāĻžāĻŦ⧇āχāϏāϕ⧇ redundancy (āĻāĻ•āχ āĻĄā§‡āϟāĻž āĻŦāĻžāϰāĻŦāĻžāϰ āϰāĻžāĻ–āĻž) āĻ•āĻŽāĻŋā§Ÿā§‡ āĻāĻŦāĻ‚ āĻĄā§‡āϟāĻž integrity āĻŦāĻžā§œāĻŋā§Ÿā§‡ āĻ…āĻĒā§āϟāĻŋāĻŽāĻžāχāϜ āĻ•āϰ⧇āĨ¤

Database-āĻ data organize āĻ“ duplicate āĻ•āĻŽāĻžāύ⧋āϰ āϜāĻ¨ā§āϝ āϝ⧇ process use āĻ•āϰāĻž āĻšā§Ÿ, āϤāĻžāϕ⧇ normalization āĻŦāϞ⧇āĨ¤
āĻāϰ āĻŽāĻ§ā§āϝ⧇ 1NF, 2NF, 3NF āĻšāϞ⧋ common levelsāĨ¤

āĻĒā§āϰāĻļā§āύ ā§­: 1NF, 2NF, 3NF āϕ⧀?

āωāĻ¤ā§āϤāϰ:

  • 1NF: āĻĒā§āϰāϤāĻŋāϟāĻŋ āϏ⧇āϞ āĻā§āϝāĻžāϟāĻŽāĻŋāĻ• āĻ­ā§āϝāĻžāϞ⧁ āϰāĻžāϖ⧇
  • 2NF: 1NF + āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ primary key āύāĻŋāĻ°ā§āĻ­āϰāĻļā§€āϞāϤāĻž
  • 3NF: 2NF + āĻŸā§āϰāĻžāύāϜāĻŋāϟāĻŋāĻ­ āύāĻŋāĻ°ā§āĻ­āϰāĻļā§€āϞāϤāĻž āĻĻā§‚āϰ āĻ•āϰāĻž

🔹 1NF (First Normal Form)

👉 Rule:

  • Column-āĻ atomic value āĻĨāĻžāĻ•āϤ⧇ āĻšāĻŦ⧇ (array / multiple value āύāĻž)
  • Repeating group āĻĨāĻžāĻ•āĻž āϝāĻžāĻŦ⧇ āύāĻž

❌ Wrong:

id phones
1 017,018

✅ 1NF:

id phone
1 017
2 018

👉 Problem solve:

  • Data parsing complexity āĻ•āĻŽāĻžā§Ÿ
  • Query āϏāĻšāϜ āĻšā§Ÿ

🔹 2NF (Second Normal Form)

👉 Rule:

  • 1NF follow āĻ•āϰāϤ⧇ āĻšāĻŦ⧇
  • P*artial dependency remove āĻ•āϰāϤ⧇ āĻšāĻŦ⧇* (composite key āĻšāϞ⧇)

❌ Wrong:

order_id product_id product_name

👉 product_name āĻļ⧁āϧ⧁ product_id-āĻāϰ āωāĻĒāϰ depend āĻ•āϰ⧇

✅ 2NF:

orders table
| order_id | product_id |

products table
| product_id | product_name |

👉 Problem solve:

  • Duplicate data āĻ•āĻŽā§‡
  • Update anomaly āĻ•āĻŽā§‡

🔹 3NF (Third Normal Form)

👉 Rule:

  • 2NF follow āĻ•āϰāϤ⧇ āĻšāĻŦ⧇
  • Transitive dependency remove āĻ•āϰāϤ⧇ āĻšāĻŦ⧇

❌ Wrong:

| user_id | city_id | city_name |

👉 city_name depends on city_id, not user_id

✅ 3NF:

users table
| user_id | city_id |

cities table
| city_id | city_name |

👉 Problem solve:

  • Data inconsistency āĻ•āĻŽā§‡
  • Update anomaly eliminate āĻšā§Ÿ

đŸ”Ĩ Summary (Quick View)

Form Focus Problem Solved
1NF Atomic data Multiple value issue
2NF Partial dependency Duplicate data
3NF Transitive dependency Inconsistency

🚀 Laravel Example

āϧāϰ⧋ āϤ⧁āĻŽāĻŋ e-commerce system āĻŦāĻžāύāĻžāĻšā§āϛ⧋ 👇


❌ Non-normalized (Bad āĻĄāĻŋāϜāĻžāχāύ)

Schema::create('orders', function (Blueprint $table) {
    $table->id();
    $table->string('product_name');
    $table->string('category_name');
});
Enter fullscreen mode Exit fullscreen mode

👉 Problem:

  • Duplicate data
  • Update āĻ•āϰāϞ⧇ mismatch āĻšāĻŦ⧇

✅ 3NF Design (Best Practice)

// products table
Schema::create('products', function (Blueprint $table) {
    $table->id();
    $table->string('name');
    $table->foreignId('category_id');
});

// categories table
Schema::create('categories', function (Blueprint $table) {
    $table->id();
    $table->string('name');
});

// orders table
Schema::create('orders', function (Blueprint $table) {
    $table->id();
    $table->foreignId('product_id');
});
Enter fullscreen mode Exit fullscreen mode

🔹 Eloquent Relationship

// Product.php
public function category() {
    return $this->belongsTo(Category::class);
}

// Order.php
public function product() {
    return $this->belongsTo(Product::class);
}
Enter fullscreen mode Exit fullscreen mode

🧠 Insight (Impress āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ)

👉 Normalization = data integrity + scalability

âœ”ī¸ Large system-āĻ must
âœ”ī¸ Over-normalization āĻ•āϰāϞ⧇ performance issue āĻšāϤ⧇ āĻĒāĻžāϰ⧇ → āϤāĻ–āύ denormalization use āĻ•āϰāĻž āĻšā§Ÿ


đŸŽ¯ Short Interview Version:

"1NF ensures atomic data, 2NF removes partial dependency, and 3NF removes transitive dependency. These normalization forms reduce redundancy and prevent data inconsistency. In Laravel, we implement this by separating data into related tables using foreign keys and Eloquent relationships."


āĻĒā§āϰāĻļā§āύ ā§Ž: Primary Key āĻāĻŦāĻ‚ Unique Key āĻāϰ āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āϝ āϕ⧀?

āωāĻ¤ā§āϤāϰ:

  • Primary Key – āĻĒā§āϰāϤāĻŋāϟāĻŋ row āϕ⧇ āχāωāύāĻŋāĻ•āĻ­āĻžāĻŦ⧇ āĻļāύāĻžāĻ•ā§āϤ āĻ•āϰ⧇, null āĻĨāĻžāĻ•āϤ⧇ āĻĒāĻžāϰ⧇ āύāĻž
  • Unique Key – āχāωāύāĻŋāĻ• āĻŽāĻžāύ āϰāĻžāĻ–āϤ⧇ āĻĒāĻžāϰ⧇, āϤāĻŦ⧇ āĻāĻ•āĻŦāĻžāϰ null āĻĨāĻžāĻ•āϤ⧇ āĻĒāĻžāϰ⧇

āĻĒā§āϰāĻļā§āύ ⧝: Foreign Key āϕ⧀?

āωāĻ¤ā§āϤāϰ:

āĻāĻ•āϟāĻŋ āĻŸā§‡āĻŦāĻŋāϞ⧇āϰ āĻ•āϞāĻžāĻŽ āϝāĻž āĻ…āĻ¨ā§āϝ āĻŸā§‡āĻŦāĻŋāϞ⧇āϰ Primary Key āϕ⧇ āϰ⧇āĻĢāĻžāϰ āĻ•āϰ⧇, āĻāϟāĻžāϕ⧇ Foreign Key āĻŦāϞ⧇āĨ¤

āĻĒā§āϰāĻļā§āύ ā§§ā§Ļ: ACID āĻŽāĻžāύ⧇ āϕ⧀ āϕ⧀ āĻāĻŦāĻ‚ āĻāϟāĻŋ āϕ⧇āύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšā§Ÿ? āωāĻĻāĻžāĻšāϰāĻŖ āϏāĻš āĻŦā§āϝāĻžāĻ–ā§āϝāĻž āĻ•āϰ⧋?

āωāĻ¤ā§āϤāϰ:

🔸 ACID āϕ⧀?

ACID āĻšāϞ⧋ āĻĄā§‡āϟāĻžāĻŦ⧇āχāϏ⧇ āĻŸā§āϰāĻžāύāĻœā§āϝāĻžāĻ•āĻļāύ āĻŦā§āϝāĻŦāĻ¸ā§āĻĨāĻžāĻĒāύāĻžāϰ ā§ĒāϟāĻŋ āĻŽā§ŒāϞāĻŋāĻ• āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ āϝāĻž āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰ⧇ āϝ⧇ āĻĄā§‡āϟāĻžāĻŦ⧇āχāϏ⧇ āĻĄā§‡āϟāĻž āύāĻŋāĻ°ā§āϭ⧁āϞ, āύāĻŋāĻ°ā§āĻ­āϰāϝ⧋āĻ—ā§āϝ āĻ“ āϏ⧁āϰāĻ•ā§āώāĻŋāϤ āĻĨāĻžāĻ•āĻŦ⧇āĨ¤
ACID āĻāϰ āĻĒ⧁āϰ⧋ āĻ…āĻ°ā§āĻĨ:

  • A – Atomicity
  • C – Consistency
  • I – Isolation
  • D – Durability

🔹 1. Atomicity (āĻĒāϰāĻŽāĻžāĻŖāĻŦāĻŋāĻ•āϤāĻž)

āĻŦā§āϝāĻžāĻ–ā§āϝāĻž: āĻāĻ•āϟāĻŋ āĻŸā§āϰāĻžāύāĻœā§āϝāĻžāĻ•āĻļāύ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āϏāĻĢāϞ āĻšāϤ⧇ āĻšāĻŦ⧇ āĻ…āĻĨāĻŦāĻž āĻāĻ•āĻĻāĻŽāχ āĻšāĻŦ⧇ āύāĻžāĨ¤ āφāĻ‚āĻļāĻŋāĻ•āĻ­āĻžāĻŦ⧇ āϕ⧋āύ āĻ•āĻžāϜ āĻšāĻŦ⧇ āύāĻžāĨ¤

āωāĻĻāĻžāĻšāϰāĻŖ:
āϧāϰ⧋, āĻāĻ•āϜāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀ āϤāĻžāϰ āĻāĻ•āĻžāωāĻ¨ā§āϟ āĻĨ⧇āϕ⧇ āϟāĻžāĻ•āĻž āĻŸā§āϰāĻžāĻ¨ā§āϏāĻĢāĻžāϰ āĻ•āϰāϛ⧇ āĻ…āĻ¨ā§āϝ āĻāĻ•āĻžāωāĻ¨ā§āĻŸā§‡āĨ¤

  • āĻĒā§āϰāĻĨāĻŽā§‡ āϟāĻžāĻ•āĻž āĻ•āĻžāϟāĻŦ⧇
  • āϤāĻžāϰāĻĒāϰ āϏ⧇āχ āϟāĻžāĻ•āĻž āĻ…āĻ¨ā§āϝ āĻāĻ•āĻžāωāĻ¨ā§āĻŸā§‡ āϝ⧋āĻ— āĻšāĻŦ⧇

āϝāĻĻāĻŋ āĻĒā§āϰāĻĨāĻŽ āϧāĻžāĻĒ⧇ āϟāĻžāĻ•āĻž āĻ•āĻžāĻŸā§‡ āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻĻā§āĻŦāĻŋāĻ¤ā§€ā§Ÿ āϧāĻžāĻĒ⧇ āϕ⧋āύ⧋ āĻ•āĻžāϰāϪ⧇ āϝ⧋āĻ— āύāĻž āĻšā§Ÿ, āϤāĻžāĻšāϞ⧇ āĻĒ⧁āϰ⧋ āĻŸā§āϰāĻžāύāĻœā§āϝāĻžāĻ•āĻļāύ rollback āĻšā§Ÿā§‡ āϝāĻžāĻŦ⧇āĨ¤ āĻ…āĻ°ā§āĻĨāĻžā§Ž, āϟāĻžāĻ•āĻž āĻ•āĻžāϟāĻž āĻšāĻŦ⧇ āύāĻž — āĻāϟāĻž AtomicityāĨ¤

🔹 2. Consistency (āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝāϤāĻž)

āĻŦā§āϝāĻžāĻ–ā§āϝāĻž: āĻŸā§āϰāĻžāύāĻœā§āϝāĻžāĻ•āĻļāύ⧇āϰ āĻĒāϰ⧇ āĻĄā§‡āϟāĻžāĻŦ⧇āχāϏ āĻ…āĻŦāĻļā§āϝāχ āĻāĻ•āϟāĻŋ valid āĻŦāĻž consistent state āĻ āĻĨāĻžāĻ•āϤ⧇ āĻšāĻŦ⧇āĨ¤

āωāĻĻāĻžāĻšāϰāĻŖ:
āϧāϰ⧋ āĻŦā§āϝāĻžāϞ⧇āĻ¨ā§āϏ āĻŸā§āϰāĻžāĻ¨ā§āϏāĻĢāĻžāϰ āĻ•āϰāĻžāϰ āύāĻŋ⧟āĻŽ āĻšāϞ⧋ – āĻāĻ•āĻžāωāĻ¨ā§āĻŸā§‡ āĻ¨ā§āϝ⧂āύāϤāĻŽ ā§Ģā§Ļā§Ļ āϟāĻžāĻ•āĻž āĻĨāĻžāĻ•āϤ⧇ āĻšāĻŦ⧇āĨ¤
āϝāĻĻāĻŋ ⧍ā§Ļā§Ļ āϟāĻžāĻ•āĻž āĻĨāĻžāĻ•āĻž āĻ…āĻŦāĻ¸ā§āĻĨāĻžā§Ÿ ā§§ā§Ļā§Ļ āϟāĻžāĻ•āĻž āĻŸā§āϰāĻžāĻ¨ā§āϏāĻĢāĻžāϰ āĻ•āϰāĻžāϰ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰ⧇, āϤāĻžāĻšāϞ⧇ consistency rule āϭ⧇āϙ⧇ āϝāĻžāĻŦ⧇, āϤāĻžāχ āĻāĻŽāύ āĻŸā§āϰāĻžāύāĻœā§āϝāĻžāĻ•āĻļāύ āϏāĻĢāϞ āĻšāĻŦ⧇ āύāĻžāĨ¤

🔹 3. Isolation (āĻĒ⧃āĻĨāĻ•āϤāĻž)

āĻŦā§āϝāĻžāĻ–ā§āϝāĻž: āĻāĻ•āĻžāϧāĻŋāĻ• āĻŸā§āϰāĻžāύāĻœā§āϝāĻžāĻ•āĻļāύ āĻāĻ•āϏāĻžāĻĨ⧇ āϚāϞāϞ⧇āĻ“, āϤāĻžāϰāĻž āϝ⧇āύ āĻāϕ⧇ āĻ…āĻĒāϰ⧇āϰ āωāĻĒāϰ āĻĒā§āϰāĻ­āĻžāĻŦ āύāĻž āĻĢ⧇āϞ⧇ āĻāĻŦāĻ‚ āĻĒā§āϰāϤāĻŋāϟāĻŋāϰ āϰ⧇āϜāĻžāĻ˛ā§āϟ āϝ⧇āύ āφāϞāĻžāĻĻāĻž āĻ­āĻžāĻŦ⧇āχ āύāĻŋāĻ°ā§āĻ­āϰāϝ⧋āĻ—ā§āϝ āĻĨāĻžāϕ⧇āĨ¤

āωāĻĻāĻžāĻšāϰāĻŖ:
āϧāϰ⧋ āĻāĻ•āχ āϏāĻŽā§Ÿ āĻĻ⧁āχāϜāύ āχāωāϜāĻžāϰ āĻāĻ•āĻžāωāĻ¨ā§āϟ āĻŦā§āϝāĻžāϞ⧇āĻ¨ā§āϏ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāϛ⧇āĨ¤ Isolation āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰ⧇ āϝ⧇āύ āĻāĻ•āϟāĻŋāϰ āφāĻĒāĻĄā§‡āϟ āĻ…āĻ¨ā§āϝāϟāĻŋāϰ āĻĄā§‡āϟāĻž corrupt āύāĻž āĻ•āϰ⧇āĨ¤ āύāĻž āĻšāϞ⧇ race condition āĻŦāĻž dirty read āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

🔹 4. Durability (āĻ¸ā§āĻĨāĻžā§ŸāĻŋāĻ¤ā§āĻŦ)

āĻŦā§āϝāĻžāĻ–ā§āϝāĻž: āĻāĻ•āĻŦāĻžāϰ āĻŸā§āϰāĻžāύāĻœā§āϝāĻžāĻ•āĻļāύ āϏāĻĢāϞ āĻšāϞ⧇ āϤāĻž āĻ¸ā§āĻĨāĻžā§Ÿā§€āĻ­āĻžāĻŦ⧇ āĻĄā§‡āϟāĻžāĻŦ⧇āχāϏ⧇ āĻĨ⧇āϕ⧇ āϝāĻžāĻŦ⧇, āϏāĻžāĻ°ā§āĻ­āĻžāϰ āϰāĻŋāĻ¸ā§āϟāĻžāĻ°ā§āϟ āĻšāϞ⧇āĻ“ āĻŽā§āϛ⧇ āϝāĻžāĻŦ⧇ āύāĻžāĨ¤

āωāĻĻāĻžāĻšāϰāĻŖ:
āĻāĻ•āϜāύ āχāωāϜāĻžāϰ āĻĒ⧇āĻŽā§‡āĻ¨ā§āϟ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āĻŸā§āϰāĻžāύāĻœā§āϝāĻžāĻ•āĻļāύ āϏāĻĢāϞ āĻšā§ŸāĨ¤ āĻāϰāĻĒāϰ āĻšāĻ āĻžā§Ž āϏāĻžāĻ°ā§āĻ­āĻžāϰ āĻŦāĻ¨ā§āϧ āĻšā§Ÿā§‡ āϝāĻžā§ŸāĨ¤ āĻ•āĻŋāĻ¨ā§āϤ⧁ āϝāĻ–āύ āφāĻŦāĻžāϰ āϚāĻžāϞ⧁ āĻšā§Ÿ, āϤāĻ–āύāĻ“ āϏ⧇āχ āĻŸā§āϰāĻžāύāĻœā§āϝāĻžāĻ•āĻļāύ āĻĄā§‡āϟāĻžāĻŦ⧇āχāϏ⧇ āĻĒāĻžāĻ“ā§ŸāĻž āϝāĻžā§ŸāĨ¤ āĻāϟāĻžāχ DurabilityāĨ¤

🧠 ACID āĻŦā§āϝāĻŦāĻšāĻžāϰ āϕ⧇āύ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ?

  • āĻĄā§‡āϟāĻž corruption āϰ⧋āϧ āĻ•āϰ⧇
  • āĻĄā§‡āϟāĻžāϰ āύāĻŋāĻ°ā§āĻ­āϰāϝ⧋āĻ—ā§āϝāϤāĻž āĻŦāϜāĻžā§Ÿ āϰāĻžāϖ⧇
  • āĻŦā§āϝāĻžāĻ™ā§āĻ•āĻŋāĻ‚, e-commerce āĻŦāĻž multi-user system āĻ consistency āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰ⧇
  • āϏāĻžāĻ°ā§āĻ­āĻžāϰ failure āĻšāϞ⧇āĻ“ data safe āĻĨāĻžāϕ⧇

✅ āϏāĻ‚āĻ•ā§āώ⧇āĻĒ⧇ āĻŽāύ⧇ āϰāĻžāĻ–āĻžāϰ āϟāĻŋāĻĒāϏ:

āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ āϕ⧀ āĻ•āϰ⧇ āωāĻĻāĻžāĻšāϰāĻŖ
Atomicity āϏāĻŦ āĻŦāĻž āĻ•āĻŋāϛ⧁āχ āύāĻž āϟāĻžāĻ•āĻž āĻŸā§āϰāĻžāĻ¨ā§āϏāĻĢāĻžāϰ āĻ•āϰāϞ⧇ āĻĻ⧁āχāĻĒāĻžāĻļ⧇ āϏāĻĢāϞ āĻšāϤ⧇ āĻšāĻŦ⧇
Consistency āύāĻŋāϝāĻŧāĻŽ āĻŽāĻžāύāĻž āĻŸā§āϰāĻžāύāĻœā§āϝāĻžāĻ•āĻļāύ⧇āϰ āĻĒāϰ āϰ⧁āϞ āĻ­āĻžāĻ™āĻž āϝāĻžāĻŦ⧇ āύāĻž
Isolation āĻŸā§āϰāĻžāύāĻœā§āϝāĻžāĻ•āĻļāύ āφāϞāĻžāĻĻāĻž āĻāĻ•āϏāĻžāĻĨ⧇ āĻāĻ•āĻžāϧāĻŋāĻ• update āĻšāϞ⧇āĻ“ āĻ—āĻĄāĻŧāĻŽāĻŋāϞ āĻšāĻŦ⧇ āύāĻž
Durability āĻ¸ā§āĻĨāĻžāϝāĻŧā§€ āĻ•āϰ⧇ āϏāĻĢāϞ āĻŸā§āϰāĻžāύāĻœā§āϝāĻžāĻ•āĻļāύ āĻšāĻžāϰāĻžāĻŦ⧇ āύāĻž

🔸 SQL JOIN āϏāĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāϤ āĻĒā§āϰāĻļā§āύ āĻ“ āωāĻ¤ā§āϤāϰāσ

āĻĒā§āϰāĻļā§āύ ā§§ā§§: SQL JOIN āϕ⧀?

āωāĻ¤ā§āϤāϰ:

JOIN āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻāĻ•āĻžāϧāĻŋāĻ• āĻŸā§‡āĻŦāĻŋāϞ āĻĨ⧇āϕ⧇ āϏāĻŽā§āĻĒāĻ°ā§āĻ•āϝ⧁āĻ•ā§āϤ āĻĄā§‡āϟāĻž āĻāĻ•āĻ¤ā§āϰ⧇ āφāύāĻž āĻšā§ŸāĨ¤

āĻĒā§āϰāĻļā§āύ ⧧⧍: INNER JOIN āϕ⧀?

āωāĻ¤ā§āϤāϰ:

āĻĻ⧁āχ āĻŸā§‡āĻŦāĻŋāϞ⧇āϰ āϝ⧇āϏāĻŦ āϰ⧇āĻ•āĻ°ā§āĻĄ āĻŽā§āϝāĻžāϚ āĻ•āϰ⧇ āϕ⧇āĻŦāϞ āϏ⧇āϗ⧁āϞ⧋āχ āĻĻ⧇āĻ–āĻžā§ŸāĨ¤

āĻĒā§āϰāĻļā§āύ ā§§ā§Š: LEFT JOIN āĻāĻŦāĻ‚ RIGHT JOIN āĻāϰ āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āϝ āϕ⧀?

āωāĻ¤ā§āϤāϰ:

  • LEFT JOIN: āĻŦāĻžāĻŽ āĻŸā§‡āĻŦāĻŋāϞ⧇āϰ āϏāĻŦ āϰ⧇āĻ•āĻ°ā§āĻĄ āĻāĻŦāĻ‚ āĻĄāĻžāύ āĻŸā§‡āĻŦāĻŋāϞ⧇āϰ āĻŽā§āϝāĻžāϚ āĻ•āϰāĻž āϰ⧇āĻ•āĻ°ā§āĻĄ
  • RIGHT JOIN: āĻĄāĻžāύ āĻŸā§‡āĻŦāĻŋāϞ⧇āϰ āϏāĻŦ āϰ⧇āĻ•āĻ°ā§āĻĄ āĻāĻŦāĻ‚ āĻŦāĻžāĻŽ āĻŸā§‡āĻŦāĻŋāϞ⧇āϰ āĻŽā§āϝāĻžāϚ āĻ•āϰāĻž āϰ⧇āĻ•āĻ°ā§āĻĄ

āĻĒā§āϰāĻļā§āύ ā§§ā§Ē: FULL OUTER JOIN āϕ⧀ āĻ•āϰ⧇?

āωāĻ¤ā§āϤāϰ:

āĻĻ⧁āχ āĻŸā§‡āĻŦāĻŋāϞ⧇āϰ āϏāĻŦ āϰ⧇āĻ•āĻ°ā§āĻĄ āĻĻ⧇āĻ–āĻžā§Ÿ, āϝāĻĻāĻŋ āύāĻž āĻŽā§āϝāĻžāϚ āĻ•āϰ⧇ āϤāĻŦ⧇ null āĻĻ⧇āĻ–āĻžā§ŸāĨ¤

āĻĒā§āϰāĻļā§āύ ā§§ā§Ģ: SELF JOIN āϕ⧀?

āωāĻ¤ā§āϤāϰ:

āϝāĻ–āύ āĻāĻ•āϟāĻŋ āĻŸā§‡āĻŦāĻŋāϞāϕ⧇ āύāĻŋāĻœā§‡āϰ āϏāĻžāĻĨ⧇āχ JOIN āĻ•āϰāĻž āĻšā§Ÿ āϤāĻ–āύ āϤāĻžāϕ⧇ SELF JOIN āĻŦāϞ⧇āĨ¤ āϏāĻžāϧāĻžāϰāĻŖāϤ āĻšāĻžā§ŸāĻžāϰāĻžāĻ°ā§āĻ•āĻŋāĻ•āĻžāϞ āĻĄā§‡āϟāĻž (āϝ⧇āĻŽāύ employee-manager) āĻāϰ āϜāĻ¨ā§āϝ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻšā§ŸāĨ¤

āĻĒā§āϰāĻļā§āύ 16: View āĻāĻŦāĻ‚ Materialized View āĻāϰ āĻŽāĻ§ā§āϝ⧇ āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āϝ āϕ⧀?

āωāĻ¤ā§āϤāϰ:

  • View āĻšāϞ⧋ āĻāĻ•āϟāĻŋ āĻ­āĻžāĻ°ā§āϚ⧁⧟āĻžāϞ āĻŸā§‡āĻŦāĻŋāϞ āϝāĻž āĻāĻ•āϟāĻŋ SQL query āĻāϰ āωāĻĒāϰ āĻ­āĻŋāĻ¤ā§āϤāĻŋ āĻ•āϰ⧇ āϤ⧈āϰāĻŋ āĻšā§ŸāĨ¤ āĻāϤ⧇ āĻŽā§‚āϞ āĻĄā§‡āϟāĻž āĻĨāĻžāϕ⧇ āύāĻž, āϕ⧇āĻŦāϞ query āϚāϞ⧇āĨ¤
  • Materialized View āĻšāϞ⧋ āĻāĻŽāύ āĻāĻ•āϟāĻŋ āĻ­āĻŋāω āϝ⧇āϟāĻŋ query āĻāϰ āϰ⧇āϜāĻžāĻ˛ā§āϟāϕ⧇ āĻĢāĻŋāϜāĻŋāĻ•ā§āϝāĻžāϞāĻŋ āĻ¸ā§āĻŸā§‹āϰ āĻ•āϰ⧇ āϰāĻžāϖ⧇, āĻĢāϞ⧇ āĻĻā§āϰ⧁āϤ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏ āĻĒāĻžāĻ“ā§ŸāĻž āϝāĻžā§ŸāĨ¤

āĻĒā§āϰāĻļā§āύ 17: Stored Procedure āĻ“ Function āĻāϰ āĻŽāĻ§ā§āϝ⧇ āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āϝ āϕ⧀?

āωāĻ¤ā§āϤāϰ:

  • Stored Procedure āĻāĻ•āĻžāϧāĻŋāĻ• āĻ¸ā§āĻŸā§‡āϟāĻŽā§‡āĻ¨ā§āĻŸā§‡āϰ āϏāĻŽāĻ¨ā§āĻŦāϝāĻŧ⧇ āϤ⧈āϰāĻŋ āĻāĻŦāĻ‚ āĻāϟāĻŋ return āύāĻž-āĻ“ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤
  • Function āϏāĻ°ā§āĻŦāĻĻāĻž āĻāĻ•āϟāĻŋ āĻŽāĻžāύ return āĻ•āϰ⧇ āĻāĻŦāĻ‚ āϏāĻžāϧāĻžāϰāĻŖāϤ SELECT statement āĻāϰ āĻŽāĻ§ā§āϝ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻšā§ŸāĨ¤

āĻĒā§āϰāĻļā§āύ 18: Index āϕ⧀āĻ­āĻžāĻŦ⧇ āĻ•āĻžāϜ āĻ•āϰ⧇? āĻāĻŦāĻ‚ āĻ•āĻ–āύ Index āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āωāϚāĻŋāϤ āύ⧟?

āωāĻ¤ā§āϤāϰ:

Index āĻĄā§‡āϟāĻž āĻ¸ā§āĻŸā§āϰāĻžāĻ•āϚāĻžāϰ (āϝ⧇āĻŽāύ B-Tree) āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϏāĻžāĻ°ā§āϚ āĻ…āĻĒāĻžāϰ⧇āĻļāύ āĻĻā§āϰ⧁āϤ āĻ•āϰ⧇āĨ¤
Index āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āωāϚāĻŋāϤ āύ⧟ āϝāĻĻāĻŋ:

  • āφāĻĒāύāĻŋ āϖ⧁āĻŦāχ āϛ⧋āϟ āĻŸā§‡āĻŦāĻŋāϞ āύāĻŋā§Ÿā§‡ āĻ•āĻžāϜ āĻ•āϰāϛ⧇āύ
  • āφāĻĒāύāĻŋ āĻĒā§āϰāϚ⧁āϰ insert/update/delete āĻ•āϰāϛ⧇āύ (āĻ•āĻžāϰāĻŖ āĻāϗ⧁āϞ⧋ index āϰāĻŋāĻĢā§āϰ⧇āĻļ āĻ•āϰāϤ⧇ āĻšā§Ÿ)
  • āφāĻĒāύāĻŋ āĻāĻŽāύ āĻ•āϞāĻžāĻŽā§‡ index āĻ•āϰāϛ⧇āύ āϝ⧇āĻ–āĻžāύ⧇ āĻ­ā§āϝāĻžāϞ⧁āϗ⧁āϞ⧋āϰ āĻ­ā§āϝāĻžāϰāĻŋā§Ÿā§‡āĻļāύ āϖ⧁āĻŦ āĻ•āĻŽ (low cardinality)

āĻĒā§āϰāĻļā§āύ 19: Query Optimization āϕ⧀āĻ­āĻžāĻŦ⧇ āĻ•āϰāĻŦ⧇āύ?

āωāĻ¤ā§āϤāϰ:

  • āĻĒā§āĻ°ā§Ÿā§‹āϜāύāĻšā§€āύ SELECT * āĻŦāĻžāĻĻ āĻĻāĻŋā§Ÿā§‡ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϞāĻžāĻŽ āĻŦ⧇āϛ⧇ āύāĻŋāύ
  • Index āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ
  • Subquery āĻāϰ āĻŦāĻĻāϞ⧇ JOIN āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ
  • Query Execution Plan (EXPLAIN) āĻĻ⧇āϖ⧇ āĻŦ⧁āĻā§āύ āϕ⧋āĻĨāĻžā§Ÿ āϏāĻŽā§Ÿ āĻŦ⧇āĻļāĻŋ āϞāĻžāĻ—āϛ⧇
  • Aggregate query āϗ⧁āϞ⧋āϤ⧇ GROUP BY āϏāĻžāĻŦāϧāĻžāύ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ

āĻĒā§āϰāĻļā§āύ 20: Database Sharding āĻ“ Replication āĻāϰ āĻŽāĻ§ā§āϝ⧇ āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āϝ āϕ⧀?

āωāĻ¤ā§āϤāϰ:

  • Sharding: āĻĄā§‡āϟāĻž āϕ⧇ horizontally āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ āĻ­āĻžāĻ— āĻ•āϰ⧇ āϰāĻžāϖ⧇ (āĻŦ⧜ āĻĄā§‡āϟāĻžāĻŦ⧇āχāϏ⧇ āϞ⧋āĻĄ āĻ•āĻŽāĻžāϤ⧇)
  • Replication: āĻāĻ•āχ āĻĄā§‡āϟāĻž āĻāĻ•āĻžāϧāĻŋāĻ• āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ āĻ•āĻĒāĻŋ āĻ•āϰ⧇ āϰāĻžāĻ–āĻž āĻšā§Ÿ (failover āĻ“ read-performance āĻŦāĻžā§œāĻžāϤ⧇)

āĻĒā§āϰāĻļā§āύ 21: Deadlock āϕ⧀ āĻāĻŦāĻ‚ āĻāϟāĻŋ āϕ⧀āĻ­āĻžāĻŦ⧇ āĻšā§āϝāĻžāĻ¨ā§āĻĄā§‡āϞ āĻ•āϰāĻŦ⧇āύ?

āωāĻ¤ā§āϤāϰ:

Deadlock āϤāĻ–āύ āϘāĻŸā§‡ āϝāĻ–āύ āĻĻ⧁āϟāĻŋ āĻŦāĻž āϤāϤ⧋āϧāĻŋāĻ• āĻŸā§āϰāĻžāύāĻœā§āϝāĻžāĻ•āĻļāύ āĻāϕ⧇ āĻ…āĻĒāϰ⧇āϰ āϰāĻŋāϏ⧋āĻ°ā§āϏ⧇āϰ āϜāĻ¨ā§āϝ āĻ…āĻĒ⧇āĻ•ā§āώāĻž āĻ•āϰāϤ⧇ āĻĨāĻžāϕ⧇ āĻāĻŦāĻ‚ āϕ⧇āωāχ āĻ•āĻžāϜ āĻļ⧇āώ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ āύāĻžāĨ¤

Deadlock āĻšā§āϝāĻžāĻ¨ā§āĻĄā§‡āϞ āĻ•āϰāĻžāϰ āωāĻĒāĻžā§Ÿāσ

  • āϞāĻ• āύ⧇āĻŦāĻžāϰ order āĻ āĻŋāĻ• āϰāĻžāĻ–āĻž
  • āϛ⧋āϟ transaction āϰāĻžāĻ–āĻž
  • Retry mechanism āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻž
  • Timeout āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž

āĻĒā§āϰāĻļā§āύ 22: ORM (āϝ⧇āĻŽāύ Eloquent) āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϞ⧇ performance issue āĻšāϤ⧇ āĻĒāĻžāϰ⧇ āϕ⧇āύ?

āωāĻ¤ā§āϤāϰ:

  • Eager loading āύāĻž āĻ•āϰāϞ⧇ N+1 problem āĻšā§Ÿ
  • Unnecessary query generate āĻšā§Ÿ āϝāĻĻāĻŋ āϝāĻĨāĻžāϝāĻĨāĻ­āĻžāĻŦ⧇ scope āĻŦāĻž relationship define āύāĻž āĻ•āϰāĻž āĻšā§Ÿ
  • Raw SQL āĻŦāĻž optimized query āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇ performance āĻ…āύ⧇āĻ• āĻŦā§‡ā§œā§‡ āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇ ORM āĻāϰ āϤ⧁āϞāύāĻžā§Ÿ

āĻĒā§āϰāĻļā§āύ 23: Eager Loading vs Lazy Loading — āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āϝ āϕ⧀?

āωāĻ¤ā§āϤāϰ:

  • Eager Loading: āĻāĻ•āϏāĻžāĻĨ⧇ related āĻĄā§‡āϟāĻž āϞ⧋āĻĄ āĻ•āϰ⧇ (query optimization friendly)
  • Lazy Loading: āϝāĻ–āύ āĻĒā§āĻ°ā§Ÿā§‹āϜāύ āĻšā§Ÿ āϤāĻ–āύ related āĻĄā§‡āϟāĻž āϞ⧋āĻĄ āĻ•āϰ⧇ (āϧ⧀āϰ⧇ āĻ•āĻžāϜ āĻ•āϰ⧇, N+1 problem āĻšāϤ⧇ āĻĒāĻžāϰ⧇)

āĻĒā§āϰāĻļā§āύ 24: Transaction isolation level āϗ⧁āϞ⧋ āϕ⧀ āϕ⧀?

āωāĻ¤ā§āϤāϰ:

  • Read Uncommitted: āĻ…āĻ¨ā§āϝ āĻŸā§āϰāĻžāύāĻœā§āϝāĻžāĻ•āĻļāύ āĻĨ⧇āϕ⧇ uncommitted āĻĄā§‡āϟāĻž āĻĒ⧜āĻž āϝāĻžā§Ÿ (Dirty Read)
  • Read Committed: āϕ⧇āĻŦāϞ committed āĻĄā§‡āϟāĻž āĻĒā§œā§‡
  • Repeatable Read: āĻāĻ•āχ query āĻŦāĻžāϰāĻŦāĻžāϰ āĻ•āϰāϞ⧇ āĻāĻ•āχ āϰ⧇āϜāĻžāĻ˛ā§āϟ āĻĒāĻžāĻŦ⧇āύ
  • Serializable: āϏāĻ°ā§āĻŦā§‹āĻšā§āϚ āύāĻŋāϰāĻžāĻĒāĻ¤ā§āϤāĻž, āĻŸā§āϰāĻžāύāĻœā§āϝāĻžāĻ•āĻļāύ āĻāϕ⧇ āĻ…āĻĒāϰ⧇āϰ āĻŽāϤ⧋ behave āĻ•āϰ⧇ āϝ⧇āύ āϏāĻŋāĻ™ā§āϗ⧇āϞ āĻĨā§āϰ⧇āĻĄā§‡ āĻšāĻšā§āϛ⧇

āĻĒā§āϰāĻļā§āύ 25: “EXPLAIN” āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āϕ⧀ āĻāĻŦāĻ‚ āĻāϟāĻŋ āϕ⧇āύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšā§Ÿ?

āωāĻ¤ā§āϤāϰ:

EXPLAIN āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻĻāĻŋā§Ÿā§‡ SQL query āĻāϰ execution plan āĻĻ⧇āĻ–āĻž āϝāĻžā§ŸāĨ¤ āĻāϟāĻŋ āĻĻ⧇āĻ–āĻžā§Ÿ āϕ⧋āύ āĻŸā§‡āĻŦāĻŋāϞ āĻ•āĻ–āύ āĻ¸ā§āĻ•ā§āϝāĻžāύ āĻšāĻšā§āϛ⧇, āϕ⧋āύ index āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻšāĻšā§āϛ⧇ āχāĻ¤ā§āϝāĻžāĻĻāĻŋ — performance tuning āĻāϰ āϜāĻ¨ā§āϝ āĻāϟāĻŋ āϖ⧁āĻŦ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖāĨ¤

āĻĒā§āϰāĻļā§āύ 26: SQL āĻāϰ āĻ•ā§āϝāĻžāϟāĻžāĻ—āϰāĻŋāϗ⧁āϞ⧋ āĻ“ āϤāĻžāĻĻ⧇āϰ āĻ•āĻžāϜ?

āωāĻ¤ā§āϤāϰ:

i. DDL (Data Definition Language)

👉 āωāĻĻā§āĻĻ⧇āĻļā§āϝ: āĻĄā§‡āϟāĻžāĻŦ⧇āχāϏ⧇āϰ āĻ¸ā§āĻŸā§āϰāĻžāĻ•āϚāĻžāϰ āĻŦāĻž āĻ¸ā§āĻ•āĻŋāĻŽāĻž āϤ⧈āϰāĻŋ āĻ“ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻžāĨ¤

āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻŦā§āϝāĻžāĻ–ā§āϝāĻž
CREATE āύāϤ⧁āύ āĻŸā§‡āĻŦāĻŋāϞ āĻŦāĻž āĻ…āĻŦāĻœā§‡āĻ•ā§āϟ āϤ⧈āϰāĻŋ āĻ•āϰ⧇
ALTER āĻŸā§‡āĻŦāĻŋāϞ⧇āϰ āĻ—āĻ āύ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇
DROP āĻŸā§‡āĻŦāĻŋāϞ āĻŦāĻž āĻ…āĻŦāĻœā§‡āĻ•ā§āϟ āĻĄāĻŋāϞāĻŋāϟ āĻ•āϰ⧇
TRUNCATE āĻŸā§‡āĻŦāĻŋāϞ āĻ–āĻžāϞāĻŋ āĻ•āϰ⧇ (structure āĻĨāĻžāϕ⧇)
RENAME āĻŸā§‡āĻŦāĻŋāϞ āĻŦāĻž āĻ•āϞāĻžāĻŽā§‡āϰ āύāĻžāĻŽ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇

ii. DML (Data Manipulation Language)

👉 āωāĻĻā§āĻĻ⧇āĻļā§āϝ: āĻĄā§‡āϟāĻž āχāύāϏāĻžāĻ°ā§āϟ, āφāĻĒāĻĄā§‡āϟ āĻŦāĻž āĻĄāĻŋāϞāĻŋāϟ āĻ•āϰāĻžāĨ¤

āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻŦā§āϝāĻžāĻ–ā§āϝāĻž
SELECT āĻĄā§‡āϟāĻž āϰāĻŋāĻĄ āĻ•āϰ⧇
INSERT āĻĄā§‡āϟāĻž āϝ⧋āĻ— āĻ•āϰ⧇
UPDATE āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āĻĄā§‡āϟāĻž āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇
DELETE āĻĄā§‡āϟāĻž āĻĄāĻŋāϞāĻŋāϟ āĻ•āϰ⧇

📝 āĻ…āύ⧇āϕ⧇ āϏāĻŽāϝāĻŧ SELECT āϕ⧇ DQL (Data Query Language) āĻšāĻŋāϏ⧇āĻŦ⧇āĻ“ āĻĻ⧇āĻ–āĻž āĻšāϝāĻŧāĨ¤

3. DQL (Data Query Language)

👉 āωāĻĻā§āĻĻ⧇āĻļā§āϝ: āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻĄā§‡āϟāĻž query āĻ•āϰāĻž āĻŦāĻž āϰāĻŋāĻĄ āĻ•āϰāĻžāĨ¤

āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻŦā§āϝāĻžāĻ–ā§āϝāĻž
SELECT āĻĄā§‡āϟāĻž āĻĒāĻĄāĻŧāĻžāϰ āϜāĻ¨ā§āϝ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻšāϝāĻŧ

âš ī¸ āĻŸā§‡āĻ•āύāĻŋāĻ•ā§āϝāĻžāϞāĻŋ SELECT DML āĻāϰ āĻ…āĻ‚āĻļ āĻšāϞ⧇āĻ“ āĻ…āύ⧇āĻ• āϏāĻŽāϝāĻŧ āφāϞāĻžāĻĻāĻžāĻ­āĻžāĻŦ⧇ DQL āĻšāĻŋāϏ⧇āĻŦ⧇ āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤


4. DCL (Data Control Language)

👉 āωāĻĻā§āĻĻ⧇āĻļā§āϝ: āĻĄā§‡āϟāĻžāĻŦ⧇āχāϏ⧇āϰ access control āĻŦāĻž āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻ⧇āĻ“āϝāĻŧāĻž/āύ⧇āĻ“āϝāĻŧāĻžāĨ¤

āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻŦā§āϝāĻžāĻ–ā§āϝāĻž
GRANT āĻĒāĻžāϰāĻŽāĻŋāĻļāύ āĻĻ⧇āϝāĻŧ
REVOKE āĻĒāĻžāϰāĻŽāĻŋāĻļāύ āĻŦāĻžāϤāĻŋāϞ āĻ•āϰ⧇

5. TCL (Transaction Control Language)

👉 āωāĻĻā§āĻĻ⧇āĻļā§āϝ: āĻĄā§‡āϟāĻžāĻŦ⧇āχāϏ⧇ āĻŸā§āϰāĻžāύāĻœā§āϝāĻžāĻ•āĻļāύ āύāĻŋāϝāĻŧāĻ¨ā§āĻ¤ā§āϰāĻŖ āĻ•āϰāĻžāĨ¤

āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻŦā§āϝāĻžāĻ–ā§āϝāĻž
COMMIT āĻŸā§āϰāĻžāύāĻœā§āϝāĻžāĻ•āĻļāύ āĻ¸ā§āĻĨāĻžāϝāĻŧā§€ āĻ•āϰ⧇
ROLLBACK āĻŸā§āϰāĻžāύāĻœā§āϝāĻžāĻ•āĻļāύ āĻŦāĻžāϤāĻŋāϞ āĻ•āϰ⧇ āĻĒā§‚āĻ°ā§āĻŦāĻžāĻŦāĻ¸ā§āĻĨāĻžāϝāĻŧ āĻĢāĻŋāϰāĻŋāϝāĻŧ⧇ āύ⧇āϝāĻŧ
SAVEPOINT āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻĒāϝāĻŧ⧇āĻ¨ā§āĻŸā§‡ āĻŸā§āϰāĻžāύāĻœā§āϝāĻžāĻ•āĻļāύ āϏ⧇āĻ­ āĻ•āϰ⧇
SET TRANSACTION āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āφāχāϏ⧋āϞ⧇āĻļāύ āϞ⧇āϭ⧇āϞ āύāĻŋāĻ°ā§āϧāĻžāϰāĻŖ āĻ•āϰ⧇

6. CCL (Concurrency Control Language) 🔍

👉 āĻāϟāĻŋ āĻ…āύ⧇āĻ• āϏāĻŽāϝāĻŧ āφāϞ⧋āϚāύāĻž āĻšāϝāĻŧ, āĻ•āĻŋāĻ¨ā§āϤ⧁ SQL standard āĻ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟāĻ­āĻžāĻŦ⧇ CCL āύ⧇āχāĨ¤ āϤāĻŦ⧇ āĻāϟāĻŋ āĻĻā§āĻŦāĻžāϰāĻž āϏāĻžāϧāĻžāϰāĻŖāϤ āĻŦā§‹āĻāĻžāύ⧋ āĻšāϝāĻŧ:

  • LOCK, UNLOCK, āĻŦāĻž Concurrency Handling Techniques
  • āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻšāϝāĻŧ āĻŸā§āϰāĻžāύāĻœā§āϝāĻžāĻ•āĻļāύ āĻŽā§āϝāĻžāύ⧇āϜāĻŽā§‡āĻ¨ā§āϟ āĻŦāĻž Deadlock/Isolation Level āύāĻŋāϝāĻŧāĻ¨ā§āĻ¤ā§āϰāϪ⧇āϰ āϜāĻ¨ā§āϝāĨ¤

âš ī¸ āĻāϟāĻŋ āĻ…āϧāĻŋāĻ•āĻžāĻ‚āĻļ āĻĄā§‡āϟāĻžāĻŦ⧇āχāϏ⧇ āφāϞāĻžāĻĻāĻž āĻ•ā§āϝāĻžāϟāĻžāĻ—āϰāĻŋ āĻšāĻŋāϏ⧇āĻŦ⧇ āĻĒāĻžāĻ“āϝāĻŧāĻž āϝāĻžāϝāĻŧ āύāĻž, āĻ•āĻŋāĻ¨ā§āϤ⧁ concurrency control mechanism āĻāϰ āĻ…āĻ‚āĻļ āĻšāĻŋāϏ⧇āĻŦ⧇ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻšāϝāĻŧāĨ¤


✅ āϏāĻ‚āĻ•ā§āώ⧇āĻĒ⧇ āĻŽāύ⧇ āϰāĻžāĻ–āĻžāϰ āĻŸā§āϰāĻŋāĻ•:

āĻ•ā§āϝāĻžāϟāĻžāĻ—āϰāĻŋ āĻ•āĻžāϜ
DDL Structure define āĻ•āϰ⧇
DML āĻĄā§‡āϟāĻž manage āĻ•āϰ⧇
DQL āĻĄā§‡āϟāĻž query āĻ•āϰ⧇
DCL āĻĒāĻžāϰāĻŽāĻŋāĻļāύ āύāĻŋāϝāĻŧāĻ¨ā§āĻ¤ā§āϰāĻŖ āĻ•āϰ⧇
TCL āĻŸā§āϰāĻžāύāĻœā§āϝāĻžāĻ•āĻļāύ āύāĻŋāϝāĻŧāĻ¨ā§āĻ¤ā§āϰāĻŖ āĻ•āϰ⧇
CCL concurrency āĻŦāĻž āĻāĻ•āĻžāϧāĻŋāĻ• āĻāĻ•ā§āϏ⧇āϏ āĻšā§āϝāĻžāĻ¨ā§āĻĄā§‡āϞ āĻ•āϰ⧇ (non-standard)

āĻĒā§āϰāĻļā§āύ 27: constraint āĻ•āĻŋ āĻ“ āϕ⧇āύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ āφāϞ⧋āϚāύāĻž āĻ•āϰ⧋?

āωāĻ¤ā§āϤāϰ:

✅ Constraint āϕ⧀?

Constraint āĻšāϞ⧋ āĻĄā§‡āϟāĻžāĻŦ⧇āχāϏ⧇āϰ āĻāĻ•āϟāĻŋ āύāĻŋ⧟āĻŽ āĻŦāĻž āĻŦāĻŋāϧāĻŋāύāĻŋāώ⧇āϧ (rule) āϝāĻž āĻŸā§‡āĻŦāĻŋāϞ⧇āϰ āĻĄā§‡āϟāĻžāϰ āωāĻĒāϰ āĻĒā§āĻ°ā§Ÿā§‹āĻ— āĻ•āϰāĻž āĻšā§Ÿ, āϝāĻžāϤ⧇ āĻĄā§‡āϟāĻžāϰ āϏāĻ āĻŋāĻ•āϤāĻž (accuracy), āύāĻŋāĻ°ā§āϭ⧁āϞāϤāĻž (integrity) āĻāĻŦāĻ‚ consistency āĻŦāϜāĻžā§Ÿ āĻĨāĻžāϕ⧇āĨ¤

👉 āϏāĻšāϜāĻ­āĻžāĻŦ⧇:
Constraint āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰ⧇ āϝ⧇ āĻĄā§‡āϟāĻžāĻŦ⧇āχāϏ⧇ āϭ⧁āϞ āĻŦāĻž āĻ…āĻĒā§āĻ°ā§Ÿā§‹āϜāĻ¨ā§€ā§Ÿ āĻĄā§‡āϟāĻž āĻĸ⧁āĻ•āϤ⧇ āύāĻž āĻĒāĻžāϰ⧇āĨ¤


đŸŽ¯ Constraint āϕ⧇āύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšā§Ÿ?

Constraint āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āĻŽā§‚āϞ āωāĻĻā§āĻĻ⧇āĻļā§āϝ:

  • ❌ āϭ⧁āϞ āĻĄā§‡āϟāĻž āχāύāϏāĻžāĻ°ā§āϟ āĻšāĻ“ā§ŸāĻž āĻŦāĻ¨ā§āϧ āĻ•āϰāĻž
  • ✅ āĻĄā§‡āϟāĻžāϰ integrity āĻŦāϜāĻžā§Ÿ āϰāĻžāĻ–āĻž
  • 🔗 āĻŸā§‡āĻŦāĻŋāϞāϗ⧁āϞ⧋āϰ āĻŽāĻ§ā§āϝ⧇ āϏāĻŽā§āĻĒāĻ°ā§āĻ• āĻ āĻŋāĻ• āϰāĻžāĻ–āĻž
  • ⚡ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ⧇āϰ āϞāϜāĻŋāϕ⧇āϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰ āύāĻž āĻ•āϰ⧇ āĻĄā§‡āϟāĻžāĻŦ⧇āχāϏ āϞ⧇āϭ⧇āϞ⧇āχ validation āĻ•āϰāĻž

🔸 Constraint āĻāϰ āϧāϰāύ āĻ“ āĻŦā§āϝāĻžāĻ–ā§āϝāĻž
1. PRIMARY KEY

👉 āĻĒā§āϰāϤāĻŋāϟāĻŋ row āϕ⧇ āχāωāύāĻŋāĻ•āĻ­āĻžāĻŦ⧇ āϚāĻŋāĻšā§āύāĻŋāϤ āĻ•āϰ⧇āĨ¤

āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ:

  • āχāωāύāĻŋāĻ• āĻšāϤ⧇ āĻšāĻŦ⧇
  • NULL āĻšāϤ⧇ āĻĒāĻžāϰāĻŦ⧇ āύāĻž

āωāĻĻāĻžāĻšāϰāĻŖ:

id INT PRIMARY KEY
Enter fullscreen mode Exit fullscreen mode

📌 āĻāĻ•āϟāĻŋ āĻŸā§‡āĻŦāĻŋāϞ⧇ āĻāĻ•āϟāĻŋāχ PRIMARY KEY āĻĨāĻžāϕ⧇āĨ¤


2. FOREIGN KEY

👉 āĻāĻ•āϟāĻŋ āĻŸā§‡āĻŦāĻŋāϞ⧇āϰ āĻ•āϞāĻžāĻŽ āĻ…āĻ¨ā§āϝ āĻŸā§‡āĻŦāĻŋāϞ⧇āϰ PRIMARY KEY āϕ⧇ āϰ⧇āĻĢāĻžāϰ āĻ•āϰ⧇āĨ¤

āĻ•āĻžāϜ:

  • āĻŸā§‡āĻŦāĻŋāϞ⧇āϰ āĻŽāĻ§ā§āϝ⧇ relationship āϤ⧈āϰāĻŋ āĻ•āϰ⧇
  • invalid reference āφāϟāĻ•āĻžā§Ÿ

āωāĻĻāĻžāĻšāϰāĻŖ:

user_id INT,
FOREIGN KEY (user_id) REFERENCES users(id)
Enter fullscreen mode Exit fullscreen mode

📌 āϝāĻĻāĻŋ users āĻŸā§‡āĻŦāĻŋāϞ⧇ āĻ“āχ id āύāĻž āĻĨāĻžāϕ⧇, āϤāĻžāĻšāϞ⧇ insert āĻšāĻŦ⧇ āύāĻžāĨ¤


3. UNIQUE

👉 āĻ•āϞāĻžāĻŽā§‡āϰ āϏāĻŦ āĻ­ā§āϝāĻžāϞ⧁ āχāωāύāĻŋāĻ• āĻšāϤ⧇ āĻšāĻŦ⧇āĨ¤

āωāĻĻāĻžāĻšāϰāĻŖ:

email VARCHAR(255) UNIQUE
Enter fullscreen mode Exit fullscreen mode

📌 Duplicate email āĻĸ⧁āĻ•āĻžāύ⧋ āϝāĻžāĻŦ⧇ āύāĻžāĨ¤


4. NOT NULL

👉 āϕ⧋āύ⧋ āĻ•āϞāĻžāĻŽā§‡ NULL āĻ­ā§āϝāĻžāϞ⧁ āϰāĻžāĻ–āĻž āϝāĻžāĻŦ⧇ āύāĻžāĨ¤

āωāĻĻāĻžāĻšāϰāĻŖ:

name VARCHAR(100) NOT NULL
Enter fullscreen mode Exit fullscreen mode

📌 name āĻ…āĻŦāĻļā§āϝāχ āĻĻāĻŋāϤ⧇ āĻšāĻŦ⧇āĨ¤


5. CHECK

👉 āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻļāĻ°ā§āϤ āĻĒā§‚āϰāĻŖ āĻ•āϰāϞ⧇ āϤāĻŦ⧇āχ āĻĄā§‡āϟāĻž āχāύāϏāĻžāĻ°ā§āϟ/āφāĻĒāĻĄā§‡āϟ āĻšāĻŦ⧇āĨ¤

āωāĻĻāĻžāĻšāϰāĻŖ:

age INT CHECK (age >= 18)
Enter fullscreen mode Exit fullscreen mode

📌 ā§§ā§Ž āĻŦāĻ›āϰ⧇āϰ āĻ•āĻŽ āĻŦ⧟āϏ āĻšāϞ⧇ insert āĻšāĻŦ⧇ āύāĻžāĨ¤


6. DEFAULT

👉 āϕ⧋āύ⧋ āĻ­ā§āϝāĻžāϞ⧁ āύāĻž āĻĻāĻŋāϞ⧇ āĻĄāĻŋāĻĢāĻ˛ā§āϟ āĻ­ā§āϝāĻžāϞ⧁ āϏ⧇āϟ āĻ•āϰ⧇āĨ¤

āωāĻĻāĻžāĻšāϰāĻŖ:

status VARCHAR(20) DEFAULT 'active'
Enter fullscreen mode Exit fullscreen mode

📌 status āύāĻž āĻĻāĻŋāϞ⧇ auto 'active' āĻšāĻŦ⧇āĨ¤


đŸ”Ĩ āĻŦāĻžāĻ¸ā§āϤāĻŦ āωāĻĻāĻžāĻšāϰāĻŖ (Real-world scenario)

āϧāϰ⧋ āĻāĻ•āϟāĻŋ orders āĻŸā§‡āĻŦāĻŋāϞ:

CREATE TABLE orders (
  id INT PRIMARY KEY,
  user_id INT,
  amount DECIMAL(10,2) CHECK (amount > 0),
  status VARCHAR(20) DEFAULT 'pending',
  FOREIGN KEY (user_id) REFERENCES users(id)
);
Enter fullscreen mode Exit fullscreen mode

👉 āĻāĻ–āĻžāύ⧇:

  • id → āχāωāύāĻŋāĻ• (PRIMARY KEY)
  • user_id → āĻ…āĻŦāĻļā§āϝāχ users āĻŸā§‡āĻŦāĻŋāϞ⧇ āĻĨāĻžāĻ•āϤ⧇ āĻšāĻŦ⧇ (FOREIGN KEY)
  • amount → 0 āĻāϰ āĻŦ⧇āĻļāĻŋ āĻšāϤ⧇ āĻšāĻŦ⧇ (CHECK)
  • status → āύāĻž āĻĻāĻŋāϞ⧇ 'pending' āĻšāĻŦ⧇ (DEFAULT)

⚡ Interview Tips (āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻĒā§Ÿā§‡āĻ¨ā§āϟ)
Constraint = Data integrity enforcement at DB level
Application validation āĻĨāĻžāĻ•āϞ⧇āĻ“ DB constraint āĻĨāĻžāĻ•āĻž āϜāϰ⧁āϰāĻŋ
Foreign key = relationship + data safety
CHECK constraint āϏāĻŦ DB-āϤ⧇ fully supported āύāĻž (āϝ⧇āĻŽāύ āĻ•āĻŋāϛ⧁ MySQL version āĻ limitation āφāϛ⧇)


✅ āϏāĻ‚āĻ•ā§āώ⧇āĻĒ⧇:

Constraint āĻ•āĻžāϜ
PRIMARY KEY āχāωāύāĻŋāĻ• āφāχāĻĄāĻŋ
FOREIGN KEY āϏāĻŽā§āĻĒāĻ°ā§āĻ• āϤ⧈āϰāĻŋ
UNIQUE āĻĄā§āĻĒā§āϞāĻŋāϕ⧇āϟ āϰ⧋āϧ
NOT NULL āĻĢāĻžāρāĻ•āĻž āύāĻž āϰāĻžāĻ–āĻž
CHECK āĻļāĻ°ā§āϤ āφāϰ⧋āĻĒ
DEFAULT āĻĄāĻŋāĻĢāĻ˛ā§āϟ āĻŽāĻžāύ āĻĻ⧇āĻ“āϝāĻŧāĻž

āĻĒā§āϰāĻļā§āύ 28: Sql āĻ group_by āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ āωāĻĻāĻžāĻšāϰāĻŖ āϏāĻš āĻŦā§āϝāĻžāĻ–ā§āϝāĻž āĻ•āϰ⧋?

āωāĻ¤ā§āϤāϰ:

SQL-āĻāϰ GROUP BY āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšā§Ÿ āϝāĻ–āύ āφāĻŽāϰāĻž āĻāĻ•āχ āϧāϰāύ⧇āϰ āĻĄā§‡āϟāĻžāϕ⧇ āĻ—ā§āϰ⧁āĻĒ āĻ•āϰ⧇ āϤāĻžāϰ āĻ“āĻĒāϰ aggregate calculation (COUNT, SUM, AVG, MAX, MIN) āĻ•āϰāϤ⧇ āϚāĻžāχāĨ¤

āφāĻŽāĻŋ āϏāĻšāϜ āĻ­āĻžāώāĻžā§Ÿ āωāĻĻāĻžāĻšāϰāĻŖāϏāĻš āĻŦā§āϝāĻžāĻ–ā§āϝāĻž āĻ•āϰāĻ›āĻŋ 👇


🔹 GROUP BY āϕ⧀?

GROUP BY āĻŸā§‡āĻŦāĻŋāϞ⧇āϰ āĻāĻ•āχ āĻŽāĻžāύ⧇āϰ row āϗ⧁āϞ⧋āϕ⧇ āĻāĻ•āĻ¤ā§āϰ (group) āĻ•āϰ⧇
āĻāĻŦāĻ‚ āĻĒā§āϰāϤāĻŋāϟāĻŋ group-āĻāϰ āĻ“āĻĒāϰ aggregate function āĻĒā§āĻ°ā§Ÿā§‹āĻ— āĻ•āϰ⧇āĨ¤


📋 āωāĻĻāĻžāĻšāϰāĻŖ āĻŸā§‡āĻŦāĻŋāϞ: orders

id customer amount
1 Rahim 500
2 Karim 700
3 Rahim 300
4 Karim 200
5 Hasan 400

1ī¸âƒŖ Customer āĻ…āύ⧁āϝāĻžā§Ÿā§€ āĻŽā§‹āϟ āĻ…āĻ°ā§āĻĄāĻžāϰ āĻ•āϤ?

SELECT customer, SUM(amount) AS total_amount
FROM orders
GROUP BY customer;
Enter fullscreen mode Exit fullscreen mode

🔍 āĻĢāϞāĻžāĻĢāϞ:

customer total_amount
Rahim 800
Karim 900
Hasan 400

✅ āĻāĻ•āχ customer-āĻāϰ amount āϝ⧋āĻ— āĻšāϝāĻŧ⧇āϛ⧇

2ī¸âƒŖ Customer āĻ…āύ⧁āϝāĻžā§Ÿā§€ āĻ•ā§ŸāϟāĻž order?

SELECT customer, COUNT(*) AS total_orders
FROM orders
GROUP BY customer;
Enter fullscreen mode Exit fullscreen mode

3ī¸âƒŖ Average amount per customer

SELECT customer, AVG(amount) AS avg_amount
FROM orders
GROUP BY customer;
Enter fullscreen mode Exit fullscreen mode

4ī¸âƒŖ GROUP BY + WHERE āĻŦā§āϝāĻŦāĻšāĻžāϰ

WHERE → grouping-āĻāϰ āφāϗ⧇āχ filter āĻ•āϰ⧇

SELECT customer, SUM(amount) AS total_amount
FROM orders
WHERE amount > 300
GROUP BY customer;
Enter fullscreen mode Exit fullscreen mode

✔ ā§Šā§Ļā§Ļ āϟāĻžāĻ•āĻžāϰ āύāĻŋāĻšā§‡āϰ order āĻŦāĻžāĻĻ


5ī¸âƒŖ GROUP BY + HAVING āĻŦā§āϝāĻŦāĻšāĻžāϰ

HAVING → grouping-āĻāϰ āĻĒāϰ⧇ filter āĻ•āϰ⧇

SELECT customer, SUM(amount) AS total_amount
FROM orders
GROUP BY customer
HAVING total_amount > 500;
Enter fullscreen mode Exit fullscreen mode

✔ āϝāĻžāĻĻ⧇āϰ total 500-āĻāϰ āĻŦ⧇āĻļāĻŋ


🔑 WHERE vs HAVING āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āϝ

āĻŦāĻŋāώāϝāĻŧ WHERE HAVING
āĻ•āĻ–āύ āĻ•āĻžāϜ āĻ•āϰ⧇ GROUP BY āĻāϰ āφāϗ⧇ GROUP BY āĻāϰ āĻĒāϰ⧇
Aggregate function ❌ āύāĻž ✅ āĻšā§āϝāĻžāρ

âš ī¸ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āύāĻŋ⧟āĻŽ

  • SELECT-āĻ āϝ⧇āϏāĻŦ āĻ•āϞāĻžāĻŽ aggregate āύāĻž, āϏ⧇āϗ⧁āϞ⧋ āĻ…āĻŦāĻļā§āϝāχ GROUP BY-āϤ⧇ āĻĨāĻžāĻ•āϤ⧇ āĻšāĻŦ⧇

❌ āϭ⧁āϞ:

SELECT customer, amount FROM orders
GROUP BY customer;
Enter fullscreen mode Exit fullscreen mode

✔ āĻ āĻŋāĻ•:

SELECT customer, SUM(amount)
FROM orders
GROUP BY customer;
Enter fullscreen mode Exit fullscreen mode

🧠 Interview Ready (1 line):

> GROUP BY āĻāĻ•āχ āĻŽāĻžāύ⧇āϰ row āϗ⧁āϞ⧋āϕ⧇ āĻ—ā§āϰ⧁āĻĒ āĻ•āϰ⧇ aggregate calculation āĻ•āϰāϤ⧇ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻšā§Ÿ

āĻĒā§āϰāĻļā§āύ 29: Query Execution Order āϕ⧀? āϕ⧇āύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšā§Ÿ?

āωāĻ¤ā§āϤāϰ:

🔸 Query Execution Order āϕ⧀?

Query Execution Order āĻšāϞ⧋ SQL query āϰāĻžāύ āĻ•āϰāĻžāϰ āϏāĻŽā§Ÿ āĻĄā§‡āϟāĻžāĻŦ⧇āχāϏ āχāĻžā§āϜāĻŋāύ āϕ⧋āύ āĻ•ā§āϰāĻŽā§‡ (Serial) āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ clause (āϝ⧇āĻŽāύ SELECT, WHERE, JOIN) execute āĻ•āϰ⧇ āϤāĻžāϰ āĻāĻ•āϟāĻŋ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āϧāĻžāĻĒāĻ­āĻŋāĻ¤ā§āϤāĻŋāĻ• āĻĒā§āϰāĻ•ā§āϰāĻŋ⧟āĻžāĨ¤

👉 āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻŦāĻŋāώ⧟:
āφāĻŽāϰāĻž āϝ⧇āĻ­āĻžāĻŦ⧇ SQL āϞāĻŋāĻ–āĻŋ, āĻĄā§‡āϟāĻžāĻŦ⧇āχāϏ āϏ⧇āχ order-āĻ execute āĻ•āϰ⧇ āύāĻž!


🔹 SQL Query Execution Order (Actual Order): Remind: (India tomar -> f(form)z(join) āϕ⧋āĻĨāĻžā§Ÿ(where), āϗ⧁āĻšāĻž(GH->group by, having) āϤ⧇ sol(select, order by, limit)id āĻ­āĻžāĻŦ⧇ āĻĻāĻŋāϛ⧇āĨ¤ )

FROM
JOIN
WHERE
GROUP BY
HAVING
SELECT
ORDER BY
LIMIT
Enter fullscreen mode Exit fullscreen mode

🔹 āϏāĻšāϜāĻ­āĻžāĻŦ⧇ āĻŦ⧁āĻāĻŋ:

āϧāϰ⧋ āĻāĻ•āϟāĻŋ query:

SELECT name, COUNT(*)
FROM users
WHERE status = 'active'
GROUP BY name
HAVING COUNT(*) > 1
ORDER BY name;
Enter fullscreen mode Exit fullscreen mode

👉 Execution āĻšāĻŦ⧇ āĻāĻ­āĻžāĻŦ⧇:

1. FROM → users āĻŸā§‡āĻŦāĻŋāϞ āϞ⧋āĻĄ āĻ•āϰ⧇
2. WHERE → status = 'active' āĻĢāĻŋāĻ˛ā§āϟāĻžāϰ āĻ•āϰ⧇
3. GROUP BY → name āĻ…āύ⧁āϝāĻžā§Ÿā§€ āĻ—ā§āϰ⧁āĻĒ āĻ•āϰ⧇
4. HAVING → COUNT() > 1 āĻ—ā§āϰ⧁āĻĒ āĻĢāĻŋāĻ˛ā§āϟāĻžāϰ āĻ•āϰ⧇
5. SELECT → name, COUNT(
) āĻ¨ā§‡ā§Ÿ
6. ORDER BY → name āĻ…āύ⧁āϝāĻžā§Ÿā§€ āϏāĻžāϜāĻžā§Ÿ


đŸŽ¯ āϕ⧇āύ āĻŦā§āϝāĻŦāĻšāĻžāϰ/āϜāĻžāύāĻž āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ?

1. ✅ Query Debugging āϏāĻšāϜ āĻšā§Ÿ

  • āϕ⧇āύ WHERE āĻ aggregate function āĻ•āĻžāϜ āĻ•āϰ⧇ āύāĻž → āĻ•āĻžāϰāĻŖ WHERE āφāϗ⧇ execute āĻšā§Ÿ
    2. ⚡ Performance Optimization

  • āφāϗ⧇ filter (WHERE) āĻ•āϰāϞ⧇ āĻ•āĻŽ āĻĄā§‡āϟāĻž āύāĻŋā§Ÿā§‡ āĻ•āĻžāϜ āĻšā§Ÿ → query fast āĻšā§Ÿ
    3. đŸ”Ĩ āϏāĻ āĻŋāĻ• Result āĻĒāĻžāĻ“ā§ŸāĻž

  • HAVING vs WHERE āĻ•āĻ–āύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āĻŦ⧁āĻāϤ⧇ āϏāĻžāĻšāĻžāĻ¯ā§āϝ āĻ•āϰ⧇
    4. 💡 Interview Trick Question Handle āĻ•āϰāϤ⧇

  • āĻ…āύ⧇āĻ• āϏāĻŽā§Ÿ āϜāĻŋāĻœā§āĻžā§‡āϏ āĻ•āϰ⧇:

  • 👉 "SELECT āφāϗ⧇ āϞāĻŋāĻ–āĻŋ, āĻ•āĻŋāĻ¨ā§āϤ⧁ execute āĻļ⧇āώ⧇ āĻšā§Ÿ āϕ⧇āύ?"


🧠 āϏāĻ‚āĻ•ā§āώ⧇āĻĒ⧇ āĻŽāύ⧇ āϰāĻžāĻ–āĻžāϰ āĻŸā§āϰāĻŋāĻ•:

👉 "From → Where → Group → Having → Select → Order → Limit"


✅ Final Summary:

  • Query Execution Order = SQL internally āϕ⧀āĻ­āĻžāĻŦ⧇ step-by-step query execute āĻ•āϰ⧇

  • āĻāϟāĻŋ āϜāĻžāύāĻž āĻĨāĻžāĻ•āϞ⧇:

  1. āϭ⧁āϞ āĻ•āĻŽ āĻšāĻŦ⧇
  2. performance āĻŦāĻžā§œāĻŦ⧇
  3. complex query āϏāĻšāĻœā§‡ āĻŦ⧁āĻāϤ⧇ āĻĒāĻžāϰāĻŦ⧇

āĻĒā§āϰāĻļā§āύ 30: SELECT āφāϗ⧇ āϞāĻŋāĻ–āĻŋ, āĻ•āĻŋāĻ¨ā§āϤ⧁ execute āĻļ⧇āώ⧇ āĻšā§Ÿ āϕ⧇āύ?

āωāĻ¤ā§āϤāϰ:

🔸 āϏāĻ‚āĻ•ā§āώāĻŋāĻĒā§āϤ āωāĻ¤ā§āϤāϰ (Interview-ready):

āφāĻŽāϰāĻž SQL query-āϤ⧇ SELECT āφāϗ⧇ āϞāĻŋāĻ–āĻŋ āĻ•āĻžāϰāĻŖ āĻāϟāĻŋ declarative syntax (āĻ•āĻŋ āϚāĻžāχ āϤāĻž āĻŦāϞāĻŋ), āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻĄā§‡āϟāĻžāĻŦ⧇āχāϏ āχāĻžā§āϜāĻŋāύ internally query execute āĻ•āϰ⧇ āĻāĻ•āϟāĻŋ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ logical order āĻ…āύ⧁āϝāĻžā§Ÿā§€ — āϝ⧇āĻ–āĻžāύ⧇ āφāϗ⧇ āĻĄā§‡āϟāĻž āϖ⧁āρāĻœā§‡ (FROM, WHERE), āϤāĻžāϰāĻĒāϰ āĻĒā§āϰāϏ⧇āϏ āĻ•āϰ⧇ (GROUP BY, HAVING), āĻāĻŦāĻ‚ āĻļ⧇āώ⧇ āϕ⧀ āĻĻ⧇āĻ–āĻžāĻŦ⧇ āϤāĻž āĻ āĻŋāĻ• āĻ•āϰ⧇ (SELECT)āĨ¤


🔹 āϏāĻšāϜāĻ­āĻžāĻŦ⧇ āĻŦ⧁āĻāĻŋ (Real Logic):

āϧāϰ⧋, āϤ⧁āĻŽāĻŋ āĻŦāϞāϛ⧋:

👉 “āφāĻŽāĻžāϕ⧇ active user āϗ⧁āϞ⧋āϰ āύāĻžāĻŽ āĻĻ⧇āĻ–āĻžāĻ“â€

āĻāĻ–āύ DB āϕ⧀ āĻ•āϰāĻŦ⧇?

1. FROM → āφāϗ⧇ āĻŸā§‡āĻŦāĻŋāϞ (users) āĻĨ⧇āϕ⧇ āĻĄā§‡āϟāĻž āύ⧇āĻŦ⧇
2. WHERE → āϤāĻžāϰāĻĒāϰ active user āϗ⧁āϞ⧋ āĻĢāĻŋāĻ˛ā§āϟāĻžāϰ āĻ•āϰāĻŦ⧇
3. GROUP BY / HAVING → āĻĻāϰāĻ•āĻžāϰ āĻšāϞ⧇ āĻ—ā§āϰ⧁āĻĒāĻŋāĻ‚ āĻ•āϰāĻŦ⧇
4. ✅ SELECT→ āĻļ⧇āώ⧇ āĻ āĻŋāĻ• āĻ•āϰāĻŦ⧇ āϕ⧋āύ āĻ•āϞāĻžāĻŽ (name) āĻĻ⧇āĻ–āĻžāĻŦ⧇

👉 āϤāĻžāχ SELECT logically āĻļ⧇āώ⧇ execute āĻšā§Ÿ


🔹 āĻāĻ•āϟāĻŋ āωāĻĻāĻžāĻšāϰāĻŖ:

SELECT name
FROM users
WHERE status = 'active';
Enter fullscreen mode Exit fullscreen mode

👉 Execution flow:

  1. FROM users → āϏāĻŦ āĻĄā§‡āϟāĻž āϞ⧋āĻĄ
  2. WHERE status = 'active' → āĻļ⧁āϧ⧁ active user āϰāĻžāϖ⧇
  3. SELECT name → āĻļ⧁āϧ⧁ name āĻ•āϞāĻžāĻŽ āϰāĻŋāϟāĻžāĻ°ā§āύ āĻ•āϰ⧇

đŸ”Ĩ āĻŽā§‚āϞ āĻ•āĻžāϰāĻŖ (Why SELECT last?):
1. ✅ Data Filtering āφāϗ⧇ āĻĻāϰāĻ•āĻžāϰ

  • āφāϗ⧇ decide āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āϕ⧋āύ data āϞāĻžāĻ—āĻŦ⧇ (WHERE)
  • āϤāĻžāϰāĻĒāϰ decide āĻšāĻŦ⧇ āϕ⧀ āĻĻ⧇āĻ–āĻžāĻŦ⧇ (SELECT)
    2. ⚡ Performance Optimization

  • āϏāĻŦ āĻĄā§‡āϟāĻž āύāĻž āĻāύ⧇ āφāϗ⧇ filter āĻ•āϰāϞ⧇ query fast āĻšā§Ÿ
    3. 🧠 Logical Processing Model

  • SQL āĻāĻ•āϟāĻŋ declarative language

  • āϤ⧁āĻŽāĻŋ āĻŦāϞ⧋ “āĻ•āĻŋ āϚāĻžāĻ‡â€, DB āύāĻŋāĻœā§‡ āĻ āĻŋāĻ• āĻ•āϰ⧇ “āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āφāύāĻŦā§‡â€


đŸŽ¯ Interview Pro Tip:

👉 āϝāĻĻāĻŋ interviewer āϜāĻŋāĻœā§āĻžā§‡āϏ āĻ•āϰ⧇:
"WHERE āĻ alias āϕ⧇āύ āĻ•āĻžāϜ āĻ•āϰ⧇ āύāĻž?"

āωāĻ¤ā§āϤāϰ:

  • āĻ•āĻžāϰāĻŖ SELECT āĻĒāϰ⧇ execute āĻšā§Ÿ, āϤāĻžāχ alias āϤāĻ–āύ⧋ define āĻšā§ŸāύāĻŋ

✅ āϏāĻ‚āĻ•ā§āώ⧇āĻĒ⧇:

  • āφāĻŽāϰāĻž SELECT āφāϗ⧇ āϞāĻŋāĻ–āĻŋ → readability & syntax āĻāϰ āϜāĻ¨ā§āϝ
  • āĻ•āĻŋāĻ¨ā§āϤ⧁ DB execute āĻ•āϰ⧇ āĻļ⧇āώ⧇ → āĻ•āĻžāϰāĻŖ āφāϗ⧇ data filter/process āĻ•āϰāϤ⧇ āĻšā§Ÿ

āĻĒā§āϰāĻļā§āύ 31: what is TRUNCATE? DELETE āĻāĻŦāĻ‚ TRUNCATE āĻāϰ āĻŽāĻ§ā§āϝ⧇āĻ•āĻžāϰ āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āϝāϗ⧁āϞ⧋ āύāĻŋā§Ÿā§‡ āφāϰāĻ“ āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ āϜāĻžāύāϤ⧇ āϚāĻžāύ? DROP āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻāĻŦāĻ‚ TRUNCATE āĻāϰ āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āϝ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āϜāĻžāύāϤ⧇ āϚāĻžāύ?

āωāĻ¤ā§āϤāϰ:

SQL āĻŦāĻž āĻĄā§‡āϟāĻžāĻŦ⧇āϏ⧇āϰ āĻ­āĻžāώāĻžā§Ÿ TRUNCATE āĻšāϞ⧋ āĻāĻŽāύ āĻāĻ•āϟāĻŋ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āϝāĻž āĻāĻ•āϟāĻŋ āĻŸā§‡āĻŦāĻŋāϞ⧇āϰ āϭ⧇āϤāϰ⧇āϰ āϏāĻŦ āĻĄā§‡āϟāĻž āĻŦāĻž āϰ⧇āĻ•āĻ°ā§āĻĄ āĻāĻ•āĻŦāĻžāϰ⧇ āĻŽā§āϛ⧇ āĻĢ⧇āϞ⧇āĨ¤ āĻāϟāĻŋ āĻŽā§‚āϞāϤ āĻŸā§‡āĻŦāĻŋāϞāϟāĻŋāϕ⧇ āĻāĻ•āĻĻāĻŽ āĻ–āĻžāϞāĻŋ āĻ•āϰ⧇ āĻĻā§‡ā§Ÿ, āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻŸā§‡āĻŦāĻŋāϞ⧇āϰ āĻ¸ā§āĻŸā§āϰāĻžāĻ•āϚāĻžāϰ (āĻ•āϞāĻžāĻŽā§‡āϰ āύāĻžāĻŽ āĻŦāĻž āĻĄāĻžāϟāĻž āϟāĻžāχāĻĒ) āĻ āĻŋāĻ• āϰāĻžāϖ⧇āĨ¤

āϏāĻšāϜāĻ­āĻžāĻŦ⧇ āĻŦā§‹āĻāĻžāϰ āϜāĻ¨ā§āϝ āĻāϰ āĻŽā§‚āϞ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝāϗ⧁āϞ⧋ āύāĻŋāĻšā§‡ āĻĻ⧇āĻ“ā§ŸāĻž āĻšāϞ⧋:

ā§§. āϏāĻŦ āĻĄā§‡āϟāĻž āĻĄāĻŋāϞāĻŋāϟ: āĻāϟāĻŋ āĻŸā§‡āĻŦāĻŋāϞ⧇āϰ āĻĒā§āϰāϤāĻŋāϟāĻŋ āϏāĻžāϰāĻŋ (row) āĻŽā§āϛ⧇ āĻĢ⧇āϞ⧇āĨ¤ āφāĻĒāύāĻŋ āϚāĻžāχāϞ⧇ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āϕ⧋āύ⧋ āϏāĻžāϰāĻŋ (āϝ⧇āĻŽāύ: WHERE id=1) āĻĄāĻŋāϞāĻŋāϟ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŦ⧇āύ āύāĻž; āĻ•āϰāϞ⧇ āϏāĻŦ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤
⧍. āĻ…āĻŸā§‹-āχāύāĻ•ā§āϰāĻŋāĻŽā§‡āĻ¨ā§āϟ āϰāĻŋāϏ⧇āϟ: āϝāĻĻāĻŋ āφāĻĒāύāĻžāϰ āĻŸā§‡āĻŦāĻŋāϞ⧇ āϕ⧋āύ⧋ ID āĻ•āϞāĻžāĻŽ āĻĨāĻžāϕ⧇ āϝāĻž āĻ…āĻŸā§‹āĻŽā§‡āϟāĻŋāĻ• āĻŦāĻžā§œā§‡ (Auto-increment), āϤāĻŦ⧇ TRUNCATE āĻ•āϰāĻžāϰ āĻĒāϰ āϏ⧇āϟāĻŋ āφāĻŦāĻžāϰ ā§§ āĻĨ⧇āϕ⧇ āĻļ⧁āϰ⧁ āĻšāĻŦ⧇āĨ¤
ā§Š. āĻĻā§āϰ⧁āϤ āĻ•āĻžāϜ āĻ•āϰ⧇: āĻāϟāĻŋ DELETE āĻ•āĻŽāĻžāĻ¨ā§āĻĄā§‡āϰ āĻšā§‡ā§Ÿā§‡ āĻ…āύ⧇āĻ• āĻĻā§āϰ⧁āϤ āĻ•āĻžāϜ āĻ•āϰ⧇ āĻ•āĻžāϰāĻŖ āĻāϟāĻŋ āĻĒā§āϰāϤāĻŋāϟāĻŋ āϏāĻžāϰāĻŋāϰ āϜāĻ¨ā§āϝ āφāϞāĻžāĻĻāĻžāĻ­āĻžāĻŦ⧇ āϞāĻ— āĻœā§‡āύāĻžāϰ⧇āϟ āĻ•āϰ⧇ āύāĻžāĨ¤
ā§Ē. āϰ⧋āϞāĻŦā§āϝāĻžāĻ• āĻ•āϰāĻž āĻ•āĻ āĻŋāύ: āϏāĻžāϧāĻžāϰāĻŖ āĻĄāĻŋāĻĢāĻ˛ā§āϟ āϏ⧇āϟāĻŋāĻ‚āϏ⧇ TRUNCATE āĻ•āϰāϞ⧇ āϏ⧇āχ āĻĄā§‡āϟāĻž āφāϰ āϏāĻšāĻœā§‡ āĻĢāĻŋāϰāĻŋā§Ÿā§‡ āφāύāĻž (Undo/Rollback) āϝāĻžā§Ÿ āύāĻžāĨ¤


āωāĻĻāĻžāĻšāϰāĻŖ:
āϧāϰāĻž āϝāĻžāĻ•, āφāĻĒāύāĻžāϰ users āύāĻžāĻŽā§‡ āĻāĻ•āϟāĻŋ āĻŸā§‡āĻŦāĻŋāϞ āφāϛ⧇āĨ¤ āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āύāĻŋāĻšā§‡āϰ āĻ•āĻŽāĻžāĻ¨ā§āĻĄāϟāĻŋ āϚāĻžāϞāĻžāύ:

TRUNCATE TABLE users;
Enter fullscreen mode Exit fullscreen mode

āϤāĻžāĻšāϞ⧇ āĻ“āχ āĻŸā§‡āĻŦāĻŋāϞ⧇āϰ āϏāĻŦ āχāωāϜāĻžāϰ āĻĄāĻŋāϞāĻŋāϟ āĻšā§Ÿā§‡ āϝāĻžāĻŦ⧇ āĻāĻŦāĻ‚ āĻŸā§‡āĻŦāĻŋāϞāϟāĻŋ āĻāĻ•āĻĻāĻŽ āύāϤ⧁āύ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāϰ āĻŽāϤ⧋ āĻ–āĻžāϞāĻŋ āĻšā§Ÿā§‡ āϝāĻžāĻŦ⧇āĨ¤

TRUNCATE āĻŦāύāĻžāĻŽ DELETE:

  • DELETE: āĻāĻ•āϟāĻŋ āĻāĻ•āϟāĻŋ āĻ•āϰ⧇ āϏāĻžāϰāĻŋ āĻŽā§‹āϛ⧇ āĻāĻŦāĻ‚ āϚāĻžāχāϞ⧇ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āϏāĻžāϰāĻŋ āĻŽā§‹āĻ›āĻž āϝāĻžā§Ÿ (āϝ⧇āĻŽāύ: DELETE FROM users WHERE id=5)āĨ¤ āĻāϟāĻŋ āĻ…āĻŸā§‹-āχāύāĻ•ā§āϰāĻŋāĻŽā§‡āĻ¨ā§āϟ āϰāĻŋāϏ⧇āϟ āĻ•āϰ⧇ āύāĻžāĨ¤
  • TRUNCATE: āĻĒ⧁āϰ⧋ āĻŸā§‡āĻŦāĻŋāϞ āĻāĻ•āĻŦāĻžāϰ⧇ āĻ–āĻžāϞāĻŋ āĻ•āϰ⧇ āĻĻā§‡ā§Ÿ āĻāĻŦāĻ‚ āĻ…āĻŸā§‹-āχāύāĻ•ā§āϰāĻŋāĻŽā§‡āĻ¨ā§āϟ āϰāĻŋāϏ⧇āϟ āĻ•āϰ⧇ āĻĻā§‡ā§ŸāĨ¤

DELETE āĻāĻŦāĻ‚ TRUNCATE āĻāϰ āĻŽāĻ§ā§āϝ⧇āĻ•āĻžāϰ āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āϝāϗ⧁āϞ⧋ āύāĻŋā§Ÿā§‡ āφāϰāĻ“ āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ āϜāĻžāύāϤ⧇ āϚāĻžāύ?

Answer:

DELETE āĻāĻŦāĻ‚ TRUNCATE āĻāϰ āĻŽā§‚āϞ āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āϝāϗ⧁āϞ⧋ āύāĻŋāĻšā§‡ āϏāĻšāϜāĻ­āĻžāĻŦ⧇ āĻĻ⧇āĻ“ā§ŸāĻž āĻšāϞ⧋:

āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ DELETE TRUNCATE
āϧāϰāύ (Type) āĻāϟāĻŋ āĻāĻ•āϟāĻŋ DML (Data Manipulation Language) āĻ•āĻŽāĻžāĻ¨ā§āĻĄāĨ¤ āĻāϟāĻŋ āĻāĻ•āϟāĻŋ DDL (Data Definition Language) āĻ•āĻŽāĻžāĻ¨ā§āĻĄāĨ¤
āĻļāĻ°ā§āϤ (Condition) WHERE āĻ•ā§āϞāϜ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āĻŋāϛ⧁ āϏāĻžāϰāĻŋ (row) āĻŽā§‹āĻ›āĻž āϝāĻžā§ŸāĨ¤ āϕ⧋āύ⧋ āĻļāĻ°ā§āϤ āĻĻ⧇āĻ“ā§ŸāĻž āϝāĻžā§Ÿ āύāĻž; āĻĒ⧁āϰ⧋ āĻŸā§‡āĻŦāĻŋāϞ⧇āϰ āϏāĻŦ āĻĄā§‡āϟāĻž āĻāĻ•āϏāĻžāĻĨ⧇ āĻŽā§āϛ⧇ āϝāĻžā§ŸāĨ¤
āĻ—āϤāĻŋ (Speed) āĻāϟāĻŋ āϧ⧀āϰ⧇ āĻ•āĻžāϜ āĻ•āϰ⧇ (āĻ•āĻžāϰāĻŖ āĻĒā§āϰāϤāĻŋāϟāĻŋ āϏāĻžāϰāĻŋ āφāϞāĻžāĻĻāĻžāĻ­āĻžāĻŦ⧇ āĻŽā§‹āϛ⧇)āĨ¤ āĻāϟāĻŋ āĻ…āύ⧇āĻ• āĻĻā§āϰ⧁āϤ āĻ•āĻžāϜ āĻ•āϰ⧇āĨ¤
āĻ…āĻŸā§‹-āχāύāĻ•ā§āϰāĻŋāĻŽā§‡āĻ¨ā§āϟ āĻāϟāĻŋ āĻ…āĻŸā§‹-āχāύāĻ•ā§āϰāĻŋāĻŽā§‡āĻ¨ā§āϟ (ID) āϰāĻŋāϏ⧇āϟ āĻ•āϰ⧇ āύāĻžāĨ¤ āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āĻĄā§‡āϟāĻž āφāϗ⧇āϰ āϏāĻŋāϰāĻŋ⧟āĻžāϞ āĻĨ⧇āϕ⧇āχ āĻļ⧁āϰ⧁ āĻšā§ŸāĨ¤ āĻāϟāĻŋ āĻ…āĻŸā§‹-āχāύāĻ•ā§āϰāĻŋāĻŽā§‡āĻ¨ā§āϟ āϰāĻŋāϏ⧇āϟ āĻ•āϰ⧇ āĻĻā§‡ā§ŸāĨ¤ āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āĻĄā§‡āϟāĻž ā§§ āĻĨ⧇āϕ⧇ āĻļ⧁āϰ⧁ āĻšā§ŸāĨ¤
āϰ⧋āϞāĻŦā§āϝāĻžāĻ• (Undo) (Undo) āĻāϟāĻŋ āĻŸā§āϰāĻžāύāĻœā§āϝāĻžāĻ•āĻļāύ⧇āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻĢāĻŋāϰāĻŋā§Ÿā§‡ āφāύāĻž (Rollback āĻ•āϰāĻž) āϏāĻŽā§āĻ­āĻŦāĨ¤ āĻāϟāĻŋ āϏāĻžāϧāĻžāϰāĻŖāϤ āϰ⧋āϞāĻŦā§āϝāĻžāĻ• āĻ•āϰāĻž āϝāĻžā§Ÿ āύāĻž (āĻĄā§‡āϟāĻžāĻŦ⧇āϏ āϭ⧇āĻĻ⧇ āĻ­āĻŋāĻ¨ā§āύ āĻšāϤ⧇ āĻĒāĻžāϰ⧇)āĨ¤
āϞāĻ— (Log) āĻĒā§āϰāϤāĻŋāϟāĻŋ āϏāĻžāϰāĻŋ āĻŽā§‹āĻ›āĻžāϰ āϜāĻ¨ā§āϝ āφāϞāĻžāĻĻāĻž āϞāĻ— āϤ⧈āϰāĻŋ āĻ•āϰ⧇āĨ¤ āĻļ⧁āϧ⧁ āĻŽā§‡āĻŽā§‹āϰāĻŋ āĻĄāĻŋ-āĻ…ā§āϝāĻžāϞ⧋āϕ⧇āĻļāύ āϞāĻ— āĻ•āϰ⧇, āϤāĻžāχ āϞāϗ⧇āϰ āĻĒāϰāĻŋāĻŽāĻžāĻŖ āĻ•āĻŽāĨ¤

āĻ•āĻ–āύ āϕ⧋āύāϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŦ⧇āύ?

  • āϝāĻĻāĻŋ āφāĻĒāύāĻžāϰ āĻŸā§‡āĻŦāĻŋāϞ āĻĨ⧇āϕ⧇ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āϕ⧋āύ⧋ āχāωāϜāĻžāϰ āĻŦāĻž āϤāĻĨā§āϝ āĻŽā§āĻ›āϤ⧇ āĻšā§Ÿ, āϤāĻŦ⧇ DELETE āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύāĨ¤
  • āϝāĻĻāĻŋ āϕ⧋āύ⧋ āĻŸā§‡āĻ¸ā§āϟ āĻĄā§‡āϟāĻž āĻŦāĻž āĻŸā§‡āĻŽā§āĻĒā§‹āϰāĻžāϰāĻŋ āĻŸā§‡āĻŦāĻŋāϞ āĻĒ⧁āϰ⧋āϟāĻž āĻĒāϰāĻŋāĻˇā§āĻ•āĻžāϰ āĻ•āϰ⧇ āύāϤ⧁āύ⧇āϰ āĻŽāϤ⧋ āĻ•āϰāϤ⧇ āϚāĻžāύ, āϤāĻŦ⧇ TRUNCATE āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύāĨ¤

āφāĻĒāύāĻŋ āĻ•āĻŋ DROP āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻāĻŦāĻ‚ TRUNCATE āĻāϰ āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āϝ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āϜāĻžāύāϤ⧇ āϚāĻžāύ?

Answer:

DROP āĻāĻŦāĻ‚ TRUNCATE āĻāϰ āĻŽā§‚āϞ āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āϝ āĻšāĻ˛ā§‹â€”āĻāĻ•āϟāĻŋ āĻĒ⧁āϰ⧋ āĻŸā§‡āĻŦāĻŋāϞāϟāĻŋāϕ⧇āχ āĻ…āĻ¸ā§āϤāĻŋāĻ¤ā§āĻŦāĻšā§€āύ āĻ•āϰ⧇ āĻĻā§‡ā§Ÿ, āφāϰ āĻ…āĻ¨ā§āϝāϟāĻŋ āĻļ⧁āϧ⧁ āĻŸā§‡āĻŦāĻŋāϞ⧇āϰ āϭ⧇āϤāϰ⧇āϰ āĻĄā§‡āϟāĻž āĻĒāϰāĻŋāĻˇā§āĻ•āĻžāϰ āĻ•āϰ⧇āĨ¤
āύāĻŋāĻšā§‡ āĻāĻĻ⧇āϰ āĻĒā§āϰāϧāĻžāύ āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āϝāϗ⧁āϞ⧋ āĻĻ⧇āĻ“ā§ŸāĻž āĻšāϞ⧋:

āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ TRUNCATE DROP
āĻ•āĻžāϜ āĻŸā§‡āĻŦāĻŋāϞ⧇āϰ āϭ⧇āϤāϰ⧇āϰ āϏāĻŦ āĻĄā§‡āϟāĻž āĻŽā§āϛ⧇ āĻĢ⧇āϞ⧇, āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻŸā§‡āĻŦāĻŋāϞāϟāĻŋ āĻĨ⧇āϕ⧇ āϝāĻžā§ŸāĨ¤ āĻŸā§‡āĻŦāĻŋāϞ⧇āϰ āĻĄā§‡āϟāĻž āĻāĻŦāĻ‚ āĻ¸ā§āĻŸā§āϰāĻžāĻ•āϚāĻžāϰ (āϘāϰāĻŦāĻžā§œāĻŋ) āϏāĻŦ āĻŽā§āϛ⧇ āĻĢ⧇āϞ⧇āĨ¤
āĻĢāϞāĻžāĻĢāϞ āĻŸā§‡āĻŦāĻŋāϞāϟāĻŋ āĻ–āĻžāϞāĻŋ āĻšā§Ÿā§‡ āϝāĻžā§Ÿ, āĻ•āĻŋāĻ¨ā§āϤ⧁ āφāĻĒāύāĻŋ āϚāĻžāχāϞ⧇ āφāĻŦāĻžāϰ āύāϤ⧁āύ āĻĄā§‡āϟāĻž āĻĸā§‹āĻ•āĻžāϤ⧇ āĻĒāĻžāϰāĻŦ⧇āύāĨ¤ āĻĄā§‡āϟāĻžāĻŦ⧇āϏ⧇ āĻ“āχ āĻŸā§‡āĻŦāĻŋāϞ⧇āϰ āφāϰ āϕ⧋āύ⧋ āύāĻžāĻŽ-āύāĻŋāĻļāĻžāύāĻž āĻĨāĻžāϕ⧇ āύāĻžāĨ¤
āĻ¸ā§āĻĒ⧇āϏ (Space) āĻāϟāĻŋ āĻŽā§‡āĻŽā§‹āϰāĻŋ āĻ¸ā§āĻĒ⧇āϏ āĻ–āĻžāϞāĻŋ āĻ•āϰ⧇ āĻĻā§‡ā§ŸāĨ¤ āĻāϟāĻŋ āĻŽā§‡āĻŽā§‹āϰāĻŋ āĻĨ⧇āϕ⧇ āĻŸā§‡āĻŦāĻŋāϞ⧇āϰ āĻĒ⧁āϰ⧋ āĻŽā§āϝāĻžāĻĒ āĻŦāĻž āĻĄā§‡āĻĢāĻŋāύāĻŋāĻļāύ āĻŽā§āϛ⧇ āĻĢ⧇āϞ⧇āĨ¤
āĻŦā§āϝāĻŦāĻšāĻžāϰ āϝāĻ–āύ āĻļ⧁āϧ⧁ āĻĄā§‡āϟāĻž āĻĒāϰāĻŋāĻˇā§āĻ•āĻžāϰ āĻ•āϰāϤ⧇ āϚāĻžāύ āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻŸā§‡āĻŦāĻŋāϞāϟāĻŋ āĻĒāϰ⧇ āĻ•āĻžāĻœā§‡ āϞāĻžāĻ—āĻŦ⧇āĨ¤ āϝāĻ–āύ āĻŸā§‡āĻŦāĻŋāϞāϟāĻŋāϰ āφāϰ āϕ⧋āύ⧋ āĻĒā§āĻ°ā§Ÿā§‹āϜāύ āύ⧇āχ āĻāĻŦāĻ‚ āϏ⧇āϟāĻŋ āĻĄāĻŋāϞāĻŋāϟ āĻ•āϰ⧇ āĻĻāĻŋāϤ⧇ āϚāĻžāύāĨ¤

āĻāĻ•āϟāĻŋ āĻŦāĻžāĻ¸ā§āϤāĻŦ āωāĻĻāĻžāĻšāϰāĻŖ:
āϧāϰāĻž āϝāĻžāĻ•, āφāĻĒāύāĻžāϰ āĻ•āĻžāϛ⧇ āĻāĻ•āϟāĻŋ āĻŦāĻ‡ā§Ÿā§‡āϰ āφāϞāĻŽāĻžāϰāĻŋ āφāϛ⧇āĨ¤

  • TRUNCATE āĻ•āϰāĻž āĻŽāĻžāύ⧇ āĻšāϞ⧋: āφāϞāĻŽāĻžāϰāĻŋāϰ āϏāĻŦ āĻŦāχ āĻŦ⧇āϰ āĻ•āϰ⧇ āĻĢ⧇āϞ⧇ āĻĻ⧇āĻ“ā§ŸāĻžāĨ¤ āĻāϤ⧇ āφāϞāĻŽāĻžāϰāĻŋāϟāĻŋ āĻ–āĻžāϞāĻŋ āĻšā§Ÿā§‡ āϗ⧇āϞ, āĻ•āĻŋāĻ¨ā§āϤ⧁ āφāϞāĻŽāĻžāϰāĻŋāϟāĻŋ āφāĻĒāύāĻžāϰ āϘāϰ⧇āχ āĻĨāĻžāĻ•āϞ āĻāĻŦāĻ‚ āφāĻĒāύāĻŋ āφāĻŦāĻžāϰ āύāϤ⧁āύ āĻŦāχ āϰāĻžāĻ–āϤ⧇ āĻĒāĻžāϰāĻŦ⧇āύāĨ¤
  • DROP āĻ•āϰāĻž āĻŽāĻžāύ⧇ āĻšāϞ⧋: āφāϞāĻŽāĻžāϰāĻŋāϟāĻŋāϏāĻš āϭ⧇āϤāϰ⧇āϰ āϏāĻŦ āĻŦāχ āϭ⧇āϙ⧇ āϘāϰ āĻĨ⧇āϕ⧇ āĻŦ⧇āϰ āĻ•āϰ⧇ āĻĻ⧇āĻ“ā§ŸāĻžāĨ¤ āĻāĻ–āύ āφāĻĒāύāĻžāϰ āϘāϰ⧇ āφāϰ āϕ⧋āύ⧋ āφāϞāĻŽāĻžāϰāĻŋāχ āύ⧇āχāĨ¤

āĻĒā§āϰāĻļā§āύ 31. REST principles āφāϰ best practices āϕ⧀?

āωāĻ¤ā§āϤāϰ:

🔹 REST Principles (āĻŽā§‚āϞ āύ⧀āϤāĻŋ)

REST = Representational State Transfer
Roy Fielding ā§ŦāϟāĻž principle define āĻ•āϰ⧇āĻ›āĻŋāϞ⧇āύ:


1. Client–Server Architecture

Client (Frontend / App) āφāϰ Server (Backend / API) āφāϞāĻžāĻĻāĻž āĻĨāĻžāĻ•āĻŦ⧇āĨ¤

👉 Client āĻļ⧁āϧ⧁ request āĻ•āϰāĻŦ⧇
👉 Server āĻļ⧁āϧ⧁ data / response āĻĻ⧇āĻŦ⧇

āϞāĻžāĻ­:

  • Frontend āφāϞāĻžāĻĻāĻž āĻ•āϰ⧇ change āĻ•āϰāĻž āϝāĻžāĻŦ⧇
  • Backend āφāϞāĻžāĻĻāĻž āĻ•āϰ⧇ scale āĻ•āϰāĻž āϝāĻžāĻŦ⧇

2. Stateless

āĻĒā§āϰāϤāĻŋāϟāĻž request āφāϞāĻžāĻĻāĻž, server āϕ⧋āύ⧋ user state āĻŽāύ⧇ āϰāĻžāĻ–āĻŦ⧇ āύāĻžāĨ¤

āĻŽāĻžāύ⧇:

GET /api/profile
Authorization: Bearer token
Enter fullscreen mode Exit fullscreen mode

Server āφāϗ⧇āϰ request āĻ•āĻŋāϛ⧁āχ āĻŽāύ⧇ āϰāĻžāϖ⧇ āύāĻž, āϏāĻŦ āϤāĻĨā§āϝ request āĻāϰ āĻŽāĻ§ā§āϝ⧇āχ āĻĨāĻžāĻ•āϤ⧇ āĻšāĻŦ⧇āĨ¤

āϞāĻžāĻ­:

  • āϏāĻšāϜ scaling
  • Bug āĻ•āĻŽ
  • Load balancing āϏāĻšāϜ

3. Cacheable

Response cache āĻ•āϰāĻž āϝāĻžāĻŦ⧇āĨ¤

Server āĻŦāϞāĻŦ⧇:

Cache-Control: max-age=3600
Enter fullscreen mode Exit fullscreen mode

Client/browser cache āĻ•āϰ⧇ āϰāĻžāĻ–āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

āϞāĻžāĻ­:

  • Speed āĻŦ⧇āĻļāĻŋ
  • Server load āĻ•āĻŽ

4. Uniform Interface

āĻāĻ•āχ āϰāĻ•āĻŽ structure āϏāĻŦ āϜāĻžā§ŸāĻ—āĻžā§ŸāĨ¤

āϝ⧇āĻŽāύ:

GET    /users
GET    /users/10
POST   /users
PUT    /users/10
DELETE /users/10
Enter fullscreen mode Exit fullscreen mode

āϏāĻŦ resource āĻāϰ āϜāĻ¨ā§āϝ āĻāĻ•āχ styleāĨ¤


5. Layered System

Client āϜāĻžāύāĻŦ⧇ āύāĻž āϤāĻžāϰ request āϏāϰāĻžāϏāϰāĻŋ server āĻ āϗ⧇āϛ⧇ āύāĻžāĻ•āĻŋ:

  • Load balancer
  • Proxy
  • Gateway

āĻŽāĻžāĻāĻ–āĻžāύ⧇ āĻ•ā§ŸāϟāĻž layer āφāϛ⧇, client āĻāϰ āĻŽāĻžāĻĨāĻžāĻŦā§āϝāĻĨāĻž āύāĻžāĨ¤


6. Code on Demand (Optional)

Server āϚāĻžāχāϞ⧇ client āϕ⧇ code āĻĒāĻžāĻ āĻžāϤ⧇ āĻĒāĻžāϰ⧇ (JS āχāĻ¤ā§āϝāĻžāĻĻāĻŋ)āĨ¤

āĻāχāϟāĻž āϖ⧁āĻŦ āĻ•āĻŽ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻšā§ŸāĨ¤


Top comments (0)