📋 বিষয়সূচী (Table of Contents)

01

SQL Commands কেন দরকার?

⏱ ১৫ মিনিট
🧑‍🏫 কল্পনা করো

তুমি একটা হাসপাতালে কাজ করো। তোমাকে করতে হবে — একজন রোগী খুঁজে বের করা, নতুন রোগী যোগ করা, রোগীর ঠিকানা হালনাগাদ করা, এবং একটা ভুল রেকর্ড মুছে ফেলা।

❓ আমরা কীভাবে ডেটাবেজকে বলবো কী করতে হবে?

❓ আমরা কি সরাসরি বাংলা বা ইংরেজিতে টাইপ করতে পারি?

❓ কেন একটা বিশেষ ভাষা দরকার?

উত্তর হলো: না, ডেটাবেজ সাধারণ মানুষের ভাষা (যেমন "আমাকে সব রোগীর তালিকা দেখাও") বুঝতে পারে না। এজন্য দরকার একটা নির্দিষ্ট, সুনির্দিষ্ট নিয়মে লেখা ভাষা — এটাই SQL (Structured Query Language)

💡 উপমা: দোভাষী (Translator)

দুইজন মানুষ যদি ভিন্ন ভাষায় কথা বলে, তাদের মাঝে একজন দোভাষী দরকার হয়, যে দুই ভাষাই বোঝে। ঠিক তেমনি, মানুষ ও ডেটাবেজের মাঝে SQL কাজ করে একটা "দোভাষী" হিসেবে — মানুষের ইচ্ছাকে ডেটাবেজের বোধগম্য নির্দেশে রূপান্তর করে।

User
(মানুষ)
SQL Command
(নির্দিষ্ট ভাষায় নির্দেশ)
Database
(নির্দেশ বোঝে ও কাজ করে)
Result
(ফলাফল)
02

SQL Commands কী? পাঁচটা ধরন

⏱ ১৫ মিনিট

সংজ্ঞা: SQL Command হলো একটা নির্দিষ্ট নিয়মে লেখা নির্দেশ, যা দিয়ে ডেটাবেজকে কোনো নির্দিষ্ট কাজ (তৈরি, দেখা, পরিবর্তন, মুছে ফেলা ইত্যাদি) করতে বলা হয়।

SQL-এর ভেতরেও কাজের ধরন অনুযায়ী আলাদা আলাদা "বিভাগ" আছে — ঠিক যেমন একটা হাসপাতালে ডাক্তার, নার্স, রিসেপশনিস্ট আলাদা আলাদা কাজ করে, SQL কমান্ডগুলোও কাজের ধরন অনুযায়ী পাঁচটা প্রধান শ্রেণিতে ভাগ করা হয়।

SQL
DDLকাঠামো তৈরি/পরিবর্তন
DMLডেটা পরিবর্তন
DQLডেটা দেখা
DCLঅনুমতি নিয়ন্ত্রণ
TCLলেনদেন নিয়ন্ত্রণ
শ্রেণিপূর্ণরূপকাজউদাহরণ কমান্ড
DDLData Definition Languageডেটাবেজের কাঠামো তৈরি/পরিবর্তন/মুছে ফেলাCREATE, ALTER, DROP
DMLData Manipulation Languageটেবিলের ভেতরের প্রকৃত ডেটা পরিবর্তনINSERT, UPDATE, DELETE
DQLData Query Languageডেটা খুঁজে বের করে দেখাSELECT
DCLData Control Languageকে কী করতে পারবে তার অনুমতি নিয়ন্ত্রণGRANT, REVOKE
TCLTransaction Control Languageএকাধিক ধাপের পরিবর্তন নিয়ন্ত্রণCOMMIT, ROLLBACK, SAVEPOINT
💡 সহজ কথায়

DDL বানায় "ঘর" (টেবিল), DML সেই ঘরের ভেতরে "জিনিসপত্র" (ডেটা) রাখে-সরায়, DQL সেই জিনিসপত্র "দেখে", DCL ঠিক করে "কে ঘরে ঢুকতে পারবে", আর TCL নিশ্চিত করে একাধিক কাজ একসাথে ঠিকভাবে সম্পন্ন হয়েছে কিনা।

03

DDL (Data Definition Language)

⏱ ২৫ মিনিট

DDL কমান্ডগুলো ডেটাবেজের "কাঠামো" নিয়ন্ত্রণ করে — যেমন একজন রাজমিস্ত্রি ঘরের দেয়াল, দরজা তৈরি বা ভাঙে, কিন্তু ঘরের ভেতরের আসবাবপত্র নিয়ে মাথা ঘামায় না।

🏗️ CREATE

উদ্দেশ্য: নতুন টেবিল বা ডেটাবেজ তৈরি করা।

SQL কোড
CREATE TABLE Students ( student_id INT PRIMARY KEY, name VARCHAR(50), class INT );
আউটপুট
Query OK, 0 rows affected. (টেবিল তৈরি হয়েছে)

ব্যাখ্যা: এটা "Students" নামে একটা খালি টেবিলের কাঠামো তৈরি করলো — এখনো কোনো ডেটা নেই, শুধু কাঠামো।

⚠️ শুরুর ভুল: একই নামে দুইবার টেবিল তৈরি করার চেষ্টা করলে এরর আসবে।

🔧 ALTER

উদ্দেশ্য: বিদ্যমান টেবিলের কাঠামো পরিবর্তন করা (নতুন কলাম যোগ/বাদ)।

SQL কোড
ALTER TABLE Students ADD COLUMN phone VARCHAR(15);
আউটপুট
Query OK, 0 rows affected. (নতুন কলাম যোগ হয়েছে)

ব্যাখ্যা: Students টেবিলে "phone" নামে একটা নতুন কলাম যোগ হলো, যা আগে ছিলো না।

✅ Best Practice

ALTER করার আগে ভাবো এই পরিবর্তন বিদ্যমান ডেটাতে কী প্রভাব ফেলবে।

🗑️ DROP

উদ্দেশ্য: পুরো টেবিল বা ডেটাবেজ স্থায়ীভাবে মুছে ফেলা।

SQL কোড
DROP TABLE Students;
আউটপুট
Query OK, 0 rows affected. (টেবিল সম্পূর্ণ মুছে গেছে)
🚨 বিপজ্জনক

DROP চালালে টেবিলটাই আর থাকবে না, তার ভেতরের সব ডেটা ও কাঠামো দুটোই স্থায়ীভাবে চলে যাবে। এটা সহজে ফেরত আনা যায় না।

🧹 TRUNCATE

উদ্দেশ্য: টেবিলের সব ডেটা একসাথে খালি করা, কিন্তু কাঠামো রেখে দেওয়া।

SQL কোড
TRUNCATE TABLE Students;
আউটপুট
Query OK, 0 rows affected. (টেবিল খালি, কাঠামো অক্ষত)

ব্যাখ্যা: টেবিলের সব শিক্ষার্থীর রেকর্ড চলে গেলো, কিন্তু কলাম কাঠামো (id, name, class) এখনো আছে।

🏷️ RENAME

উদ্দেশ্য: একটা টেবিলের নাম পরিবর্তন করা।

SQL কোড
RENAME TABLE Students TO Learners;
আউটপুট
Query OK, 0 rows affected. (টেবিলের নাম পরিবর্তিত হয়েছে)

ব্যাখ্যা: "Students" টেবিলের নাম বদলে "Learners" হলো, তবে ভেতরের সব ডেটা ও কাঠামো অপরিবর্তিত থাকলো।

04

DML (Data Manipulation Language)

⏱ ২০ মিনিট

DDL ঘরের কাঠামো বানায়, আর DML সেই ঘরের ভেতরে "আসবাবপত্র" (প্রকৃত ডেটা) রাখা, সরানো ও মুছে ফেলার কাজ করে।

➕ INSERT

উদ্দেশ্য: নতুন রেকর্ড যোগ করা।

আগে
idname
1রিমা
SQL কোয়েরি
INSERT INTO Students (id, name) VALUES (2, 'সাকিব');
ফলাফল
idname
1রিমা
2সাকিব

✏️ UPDATE

উদ্দেশ্য: বিদ্যমান রেকর্ড পরিবর্তন করা।

আগে
idname
2সাকিব
SQL কোয়েরি
UPDATE Students SET name = 'সাকিব হাসান' WHERE id = 2;
ফলাফল
idname
2সাকিব হাসান
🚨 মনে রাখো

WHERE ছাড়া UPDATE চালালে টেবিলের সব রেকর্ড পরিবর্তিত হয়ে যাবে!

🗑️ DELETE

উদ্দেশ্য: নির্দিষ্ট শর্তে রেকর্ড মুছে ফেলা।

আগে
idname
1রিমা
2সাকিব হাসান
SQL কোয়েরি
DELETE FROM Students WHERE id = 1;
ফলাফল
idname
2সাকিব হাসান
✅ Best Practice

UPDATE বা DELETE চালানোর আগে একই WHERE শর্ত দিয়ে একটা SELECT চালিয়ে দেখে নাও কোন রেকর্ডগুলো প্রভাবিত হবে।

05

DQL (Data Query Language)

⏱ ২০ মিনিট

DQL মানে ডেটা "খুঁজে বের করে দেখা" — মূল কমান্ড হলো SELECT

সব দেখা

SQL কোড
SELECT * FROM Students;
ফলাফল
idnameclass
2সাকিব হাসান
3তানভীর

নির্দিষ্ট কলাম দেখা

SQL কোড
SELECT name FROM Students;
ফলাফল
name
সাকিব হাসান
তানভীর

শর্ত দিয়ে খোঁজা (WHERE)

SQL কোড
SELECT * FROM Students WHERE class = 8;
ফলাফল
idnameclass
3তানভীর

সাজিয়ে দেখা (ORDER BY)

SQL কোড
SELECT * FROM Students ORDER BY class DESC;
ফলাফল
idnameclass
2সাকিব হাসান
3তানভীর

ডুপ্লিকেট বাদ দেওয়া (DISTINCT)

SQL কোড
SELECT DISTINCT class FROM Students;
ফলাফল
class

সীমিত ফলাফল (LIMIT)

SQL কোড
SELECT * FROM Students LIMIT 1;
ফলাফল
idnameclass
2সাকিব হাসান
🔍 SQL কীভাবে খোঁজে

যখন WHERE ব্যবহার হয়, ডেটাবেজ প্রতিটা সারি পরীক্ষা করে দেখে শর্তটা মিলছে কিনা — অনেকটা লাইব্রেরিয়ান একটা একটা করে বই দেখে নির্দিষ্ট বইটা খুঁজে বের করার মতো।

06

DCL (Data Control Language)

⏱ ১০ মিনিট
🧑‍🏫 কল্পনা করো

একটা স্কুলে, প্রিন্সিপাল সব কিছু করতে পারেন, শিক্ষক নির্দিষ্ট কিছু কাজ করতে পারেন (যেমন নম্বর দেওয়া), কিন্তু শিক্ষার্থী শুধু নিজের রেজাল্ট দেখতে পারে, কিছু পরিবর্তন করতে পারে না।

Principal
সব অনুমতি
Teacher
সীমিত অনুমতি
Student
শুধু দেখার অনুমতি

ডেটাবেজেও ঠিক এই ধরনের অনুমতি নিয়ন্ত্রণ করা হয় DCL কমান্ড দিয়ে।

✅ GRANT

উদ্দেশ্য: কাউকে নির্দিষ্ট অনুমতি দেওয়া।

SQL কোড
GRANT SELECT ON Students TO teacher_user;

ব্যাখ্যা: "teacher_user" নামের ব্যবহারকারীকে শুধু Students টেবিল দেখার (SELECT) অনুমতি দেওয়া হলো, পরিবর্তন করার অনুমতি না।

❌ REVOKE

উদ্দেশ্য: আগে দেওয়া অনুমতি প্রত্যাহার করা।

SQL কোড
REVOKE SELECT ON Students FROM teacher_user;

ব্যাখ্যা: এখন "teacher_user" আর Students টেবিল দেখতে পারবে না।

💡 কেন গুরুত্বপূর্ণ

এভাবে অনুমতি নিয়ন্ত্রণ করলে সংবেদনশীল তথ্য (যেমন বেতন, স্বাস্থ্য তথ্য) শুধু সঠিক মানুষরাই দেখতে বা পরিবর্তন করতে পারে।

07

TCL (Transaction Control Language)

⏱ ১৫ মিনিট
🧑‍🏫 কল্পনা করো

তুমি ব্যাংকে গিয়ে তোমার অ্যাকাউন্ট থেকে বন্ধুর অ্যাকাউন্টে টাকা পাঠাচ্ছো। এতে দুইটা কাজ হয় — তোমার অ্যাকাউন্ট থেকে টাকা কমা, আর বন্ধুর অ্যাকাউন্টে টাকা যোগ হওয়া। যদি প্রথম কাজটা হয়ে যায় কিন্তু দ্বিতীয়টা মাঝপথে থেমে যায় (যেমন সিস্টেম ক্র্যাশ), তাহলে টাকা "উধাও" হয়ে যাবে!

এই সমস্যা এড়াতে ব্যবহার হয় Transaction — একাধিক ধাপকে একটা "প্যাকেজ" হিসেবে চালানো, যেখানে হয় সবগুলো ধাপ সফল হবে, নাহলে কোনোটাই হবে না।

টাকা কমানো (Account A)
টাকা যোগ করা (Account B)
সব ঠিকঠাক? → COMMIT
নাহলে → ROLLBACK

✅ COMMIT

উদ্দেশ্য: সব পরিবর্তন স্থায়ীভাবে সংরক্ষণ করা।

SQL কোড
COMMIT;

ব্যাখ্যা: এই পর্যন্ত করা সব পরিবর্তন এখন স্থায়ী হয়ে গেলো, আর ফিরিয়ে নেওয়া যাবে না।

↩️ ROLLBACK

উদ্দেশ্য: শেষ COMMIT-এর পর থেকে করা সব পরিবর্তন বাতিল করে আগের অবস্থায় ফিরিয়ে নেওয়া।

SQL কোড
ROLLBACK;

ব্যাখ্যা: যদি মাঝপথে কোনো সমস্যা হয় (যেমন দ্বিতীয় অ্যাকাউন্টে টাকা যোগ করতে ব্যর্থ), ROLLBACK চালিয়ে প্রথম পরিবর্তনটাও (টাকা কমানো) বাতিল করে দেওয়া যায় — যাতে টাকা উধাও না হয়ে যায়।

🚩 SAVEPOINT

উদ্দেশ্য: লেনদেনের মাঝে একটা "চেকপয়েন্ট" তৈরি করা, যাতে পুরোটা বাতিল না করে শুধু সেই পয়েন্ট পর্যন্ত ফিরে যাওয়া যায়।

SQL কোড
SAVEPOINT before_transfer; -- ... কিছু পরিবর্তন ... ROLLBACK TO before_transfer;

ব্যাখ্যা: এটা যেন গেম খেলার মাঝে "সেভ পয়েন্ট" তৈরি করা — কিছু ভুল হলে পুরো গেম না, শুধু সেই সেভ পয়েন্ট থেকে আবার শুরু করা যায়।

08

সম্পূর্ণ বিজনেস কেস স্টাডি: স্কুল ম্যানেজমেন্ট

⏱ ১৫ মিনিট
📖 গল্প

একটা স্কুল শিক্ষার্থীদের তথ্য ম্যানেজ করতে চায় — চলো সবগুলো SQL শ্রেণি একসাথে ব্যবহার করে দেখি।

১. Database তৈরি (DDL)

CREATE DATABASE SchoolDB; USE SchoolDB;

২. Students টেবিল তৈরি (DDL)

CREATE TABLE Students ( student_id INT PRIMARY KEY, name VARCHAR(50), class INT );

৩. রেকর্ড যোগ করা (DML)

INSERT INTO Students VALUES (1, 'নাবিলা', 7);

৪. রেকর্ড দেখা (DQL)

SELECT * FROM Students;

৫. তথ্য হালনাগাদ (DML)

UPDATE Students SET class = 8 WHERE student_id = 1;

৬. রেকর্ড মুছে ফেলা (DML)

DELETE FROM Students WHERE student_id = 1;

৭. অন্য ব্যবহারকারীকে অনুমতি দেওয়া (DCL)

GRANT SELECT ON Students TO office_staff;

৮. পরিবর্তন নিশ্চিত করা (TCL)

COMMIT; -- যদি ভুল হতো: ROLLBACK;
🔑 মূল শিক্ষা

একটা বাস্তব প্রজেক্টে এই পাঁচটা শ্রেণিই একসাথে কাজ করে — DDL কাঠামো বানায়, DML ডেটা পরিবর্তন করে, DQL দেখায়, DCL নিরাপত্তা নিশ্চিত করে, আর TCL নিশ্চিত করে পরিবর্তনগুলো নির্ভরযোগ্যভাবে সংরক্ষিত হয়েছে।

09

MySQL Workbench প্র্যাকটিক্যাল সেশন

⏱ প্র্যাকটিক্যাল

ধাপ ১: Workbench খোলা ও সংযোগ করা

MySQL Workbench খুলে সার্ভারের তথ্য (হোস্ট, ইউজারনেম, পাসওয়ার্ড) দিয়ে সংযোগ করতে হয়।

ধাপ ২: প্রথম কমান্ড লেখা ও চালানো

SQL কোড
CREATE TABLE Books ( book_id INT PRIMARY KEY, title VARCHAR(100), available BOOLEAN );
আউটপুট
Query executed successfully. 0 rows affected.

ব্যাখ্যা: Workbench-এ কোড লিখে "⚡" (Execute) বাটনে ক্লিক করলে বা Ctrl+Enter চাপলে কমান্ড চলে, এবং নিচের প্যানেলে ফলাফল দেখা যায়।

ধাপ ৩: ফলাফল পড়া

SQL কোড
INSERT INTO Books VALUES (1, 'বাংলা ব্যাকরণ', TRUE); SELECT * FROM Books;
আউটপুট (Result Grid)
book_idtitleavailable
1বাংলা ব্যাকরণ1

ব্যাখ্যা: Workbench "Result Grid"-এ একটা টেবিল আকারে ফলাফল দেখায়, যেখানে available-এর জন্য TRUE-কে ১ হিসেবে দেখানো হয়েছে।

ধাপ ৪: এরর সংশোধন করা

ভুল কোড
SELET * FROM Books;
এরর মেসেজ
Error: You have an error in your SQL syntax near 'SELET'

ব্যাখ্যা: SELECT-এর বদলে ভুল করে SELET লেখা হয়েছে — বানান ঠিক করলেই কাজ করবে।

ধাপ ৫: স্ক্রিপ্ট সংরক্ষণ করা

Ctrl+S দিয়ে পুরো SQL স্ক্রিপ্ট একটা .sql ফাইলে সংরক্ষণ করা যায়, পরে আবার ব্যবহারের জন্য।

⚠️ সাধারণ শুরুর ভুল:
  • ভুল ডেটাবেজ সিলেক্ট করে থাকা অবস্থায় কমান্ড চালানো
  • সেমিকোলন (;) দিতে ভুলে যাওয়া, ফলে একাধিক কমান্ড একসাথে গুলিয়ে যাওয়া
  • Execute বাটনের বদলে ভুল আইকনে ক্লিক করা
10

সাধারণ শুরুর ভুল

⏱ আলোচনা
❌ DDL ও DML গুলিয়ে ফেলা

✅ সমাধান: মনে রাখো, DDL কাঠামো নিয়ন্ত্রণ করে, DML প্রকৃত ডেটা নিয়ন্ত্রণ করে।

❌ TRUNCATE-এর বদলে DELETE ব্যবহার করা (বা উল্টো)

✅ সমাধান: নির্দিষ্ট রেকর্ড মুছতে DELETE, পুরো টেবিল দ্রুত খালি করতে TRUNCATE ব্যবহার করো।

❌ WHERE ভুলে যাওয়া

✅ সমাধান: UPDATE/DELETE লেখার সাথে সাথে WHERE লেখার অভ্যাস করো।

❌ ভুলবশত DROP চালিয়ে ফেলা

✅ সমাধান: DROP চালানোর আগে দুইবার নিশ্চিত হও, এবং ব্যাকআপ রাখো।

❌ COMMIT ও ROLLBACK গুলিয়ে ফেলা

✅ সমাধান: COMMIT মানে স্থায়ী করা, ROLLBACK মানে বাতিল করে ফিরিয়ে নেওয়া — সবসময় মনে রাখো কোনটা কী করবে।

❌ অপ্রয়োজনে SELECT * ব্যবহার করা

✅ সমাধান: শুধু প্রয়োজনীয় কলাম উল্লেখ করো।

❌ সেমিকোলন ভুলে যাওয়া

✅ সমাধান: প্রতিটা স্টেটমেন্টের শেষে ; আছে কিনা যাচাই করার অভ্যাস করো।

❌ ভুল টেবিল বা কলাম নাম লেখা

✅ সমাধান: DESCRIBE table_name; দিয়ে আগে কলামের নাম যাচাই করো।

11

ইন্ডাস্ট্রি বেস্ট প্র্যাকটিস

⏱ আলোচনা

📝 পড়ার-উপযোগী SQL লেখা

কীওয়ার্ড বড় হাতের অক্ষরে, সঠিক ইনডেন্টেশন বজায় রাখা

💬 কমেন্ট ব্যবহার করা

-- ব্যাখ্যা দিয়ে কোড কী করছে তা লিখে রাখা

🔍 আগে টেস্ট করা

বড় পরিবর্তনের আগে ছোট ডেটাসেটে বা SELECT দিয়ে যাচাই করা

💾 ব্যাকআপ রাখা

DELETE বা DROP-এর আগে সবসময় ব্যাকআপ নেওয়া

🏷️ নামকরণের নিয়ম মানা

টেবিল ও কলামের নাম স্পষ্ট ও সামঞ্জস্যপূর্ণ রাখা

📂 স্ক্রিপ্ট গুছিয়ে রাখা

বিভিন্ন কাজের SQL ফাইল আলাদা ফোল্ডারে সংগঠিত রাখা

🔄 Version Control (মৌলিক ধারণা)

প্রোগ্রামাররা যেমন কোডের পরিবর্তনের ইতিহাস Git-এ রাখেন, তেমনি SQL স্ক্রিপ্ট ও ডেটাবেজ পরিবর্তনও ভার্সন-নিয়ন্ত্রিত রাখা হয়, যাতে কোন পরিবর্তন কখন হয়েছে তা ট্র্যাক করা যায়।

12

ক্লাসরুম অ্যাক্টিভিটি

⏱ ইন্টারেক্টিভ
অ্যাক্টিভিটি ১ (শ্রেণি চেনা): কিছু SQL কমান্ড (CREATE, INSERT, SELECT, GRANT, COMMIT) বোর্ডে লিখে শিক্ষার্থীদের বলতে হবে এটা কোন শ্রেণির (DDL/DML/DQL/DCL/TCL)।
অ্যাক্টিভিটি ২ (কমান্ড অনুমান): একটা বিজনেস সিনারিও দাও ("একটা কর্মচারীর বেতন বাড়াতে হবে") এবং শিক্ষার্থীদের বলতে হবে তারা কোন SQL কমান্ড ব্যবহার করবে।
অ্যাক্টিভিটি ৩ (আউটপুট অনুমান): একটা SQL কোয়েরি ও ছোট টেবিল দেখিয়ে ফলাফল অনুমান করতে বলা।
অ্যাক্টিভিটি ৪ (ভুল খুঁজে বের করা): ইচ্ছাকৃতভাবে ভুল করা SQL স্টেটমেন্ট দেখিয়ে ভুল চিহ্নিত করতে বলা।
অ্যাক্টিভিটি ৫ (মেলানো): কমান্ড ও তাদের উদ্দেশ্য আলাদা কার্ডে লিখে সঠিকভাবে জোড়া মেলাতে বলা।
13

রিভিশন ও প্রশ্নোত্তর

⏱ শেষ পর্যালোচনা

📌 দ্রুত রিভিশন নোট

  • DDL (কাঠামো): CREATE, ALTER, DROP, TRUNCATE, RENAME
  • DML (ডেটা): INSERT, UPDATE, DELETE
  • DQL (দেখা): SELECT
  • DCL (অনুমতি): GRANT, REVOKE
  • TCL (লেনদেন): COMMIT, ROLLBACK, SAVEPOINT
  • WHERE ছাড়া UPDATE/DELETE = সব রেকর্ড প্রভাবিত হওয়ার ঝুঁকি

🕰️ SQL-এর সংক্ষিপ্ত ইতিহাস

১৯৭০-এর দশকে IBM-এর গবেষকরা Relational Database Model নিয়ে কাজ করার সময় SQL (তখন নাম ছিলো SEQUEL) তৈরি করেন। এটি এত কার্যকর ও যৌক্তিক ছিলো যে দ্রুতই এটা ডেটাবেজের সাথে যোগাযোগের আন্তর্জাতিক মানদণ্ডে পরিণত হয়। আজও, প্রায় ৫০ বছর পরও, SQL সবচেয়ে ব্যবহৃত ডেটাবেজ ভাষা — কারণ এটা সহজবোধ্য, শক্তিশালী, এবং প্রায় সব ধরনের ডেটাবেজ সিস্টেমে (MySQL, PostgreSQL, SQL Server, Oracle) ব্যবহার করা যায়।

📊 কমান্ড তুলনামূলক টেবিল

বিষয়DELETETRUNCATEDROP
কাজনির্দিষ্ট শর্তে রেকর্ড মুছেসব ডেটা একসাথে খালি করেটেবিল সম্পূর্ণ মুছে ফেলে
কাঠামো থাকে?হ্যাঁহ্যাঁনা
Rollback সম্ভব?Transaction থাকলে হ্যাঁসাধারণত নানা
শ্রেণিDMLDDLDDL
বিষয়INSERTUPDATE
কাজনতুন রেকর্ড যোগ করেবিদ্যমান রেকর্ড পরিবর্তন করে
WHERE প্রয়োজন?নাহ্যাঁ (নাহলে সব রেকর্ড বদলে যায়)
শ্রেণিDMLDML
শ্রেণিকাজRollback সম্ভব?বাস্তব ব্যবহার
DDLকাঠামো তৈরি/পরিবর্তনসাধারণত নানতুন টেবিল বানানো
DMLডেটা পরিবর্তনTransaction থাকলে হ্যাঁরেকর্ড যোগ/পরিবর্তন/মুছে ফেলা
DQLডেটা দেখাপ্রযোজ্য নয়রিপোর্ট তৈরি
DCLঅনুমতি নিয়ন্ত্রণপ্রযোজ্য নয়ব্যবহারকারীর অ্যাক্সেস ঠিক করা
TCLলেনদেন নিয়ন্ত্রণহ্যাঁ (ROLLBACK দিয়ে)ব্যাংকিং লেনদেন

👥 প্রফেশনাল SQL ওয়ার্কফ্লো

Database Administrator
DDL/DCL দিয়ে কাঠামো ও অনুমতি পরিচালনা
Data Engineer
DDL/DML দিয়ে পাইপলাইন ও ডেটা প্রবাহ তৈরি
Data Analyst / Data Scientist
DQL দিয়ে ডেটা বিশ্লেষণ

❓ ভাইভা প্রশ্ন

১. DDL-এর পূর্ণরূপ কী?
Data Definition Language।
২. DML-এর অন্তর্গত তিনটা কমান্ড কী কী?
INSERT, UPDATE, DELETE।
৩. DQL-এর মূল কমান্ড কী?
SELECT।
৪. COMMIT কী করে?
সব পরিবর্তন স্থায়ীভাবে সংরক্ষণ করে।
৫. GRANT ও REVOKE কী কাজ করে?
GRANT অনুমতি দেয়, REVOKE অনুমতি প্রত্যাহার করে।

💼 ইন্টারভিউ প্রস্তুতি — টপ ৩০টি বিগিনার লেভেল প্রশ্ন

১. SQL কী?
Structured Query Language — ডেটাবেজের সাথে যোগাযোগের নির্দিষ্ট ভাষা।
২. SQL কমান্ডের পাঁচটা শ্রেণি কী কী?
DDL, DML, DQL, DCL, TCL।
৩. CREATE ও ALTER-এর পার্থক্য কী?
CREATE নতুন কিছু তৈরি করে, ALTER বিদ্যমান কাঠামো পরিবর্তন করে।
৪. DROP ও TRUNCATE-এর পার্থক্য কী?
DROP পুরো টেবিল ও কাঠামো মুছে দেয়, TRUNCATE শুধু ডেটা খালি করে কাঠামো রাখে।
৫. INSERT কোন শ্রেণির কমান্ড?
DML।
৬. SELECT কোন শ্রেণির কমান্ড?
DQL।
৭. WHERE ছাড়া UPDATE চালালে কী ঘটে?
টেবিলের সব রেকর্ড পরিবর্তিত হয়ে যায়।
৮. GRANT কমান্ড কী কাজ করে?
কোনো ব্যবহারকারীকে নির্দিষ্ট অনুমতি দেয়।
৯. REVOKE কমান্ড কী কাজ করে?
আগে দেওয়া অনুমতি প্রত্যাহার করে।
১০. COMMIT ও ROLLBACK-এর পার্থক্য কী?
COMMIT পরিবর্তন স্থায়ী করে, ROLLBACK পরিবর্তন বাতিল করে আগের অবস্থায় ফেরায়।
১১. SAVEPOINT কী কাজ করে?
লেনদেনের মাঝে একটা চেকপয়েন্ট তৈরি করে, যাতে আংশিকভাবে ফিরে যাওয়া যায়।
১২. Transaction কেন গুরুত্বপূর্ণ?
একাধিক ধাপকে একসাথে সফল বা ব্যর্থ হিসেবে নিশ্চিত করে, যাতে ডেটা অসামঞ্জস্যপূর্ণ না থাকে।
১৩. RENAME কমান্ড কী কাজ করে?
একটা টেবিলের নাম পরিবর্তন করে।
১৪. DISTINCT কী কাজ করে?
ডুপ্লিকেট মান বাদ দিয়ে অনন্য মান দেখায়।
১৫. ORDER BY কেন ব্যবহার হয়?
ফলাফল নির্দিষ্ট ক্রমে সাজাতে।
১৬. LIMIT কী কাজ করে?
ফলাফলের সংখ্যা সীমিত করে।
১৭. DCL কোন বিষয় নিয়ন্ত্রণ করে?
কে কী করতে পারবে তার অনুমতি।
১৮. TCL কোন বিষয় নিয়ন্ত্রণ করে?
একাধিক ধাপের লেনদেন সঠিকভাবে সম্পন্ন হয়েছে কিনা।
১৯. একটা ব্যাংক লেনদেনে TCL কেন গুরুত্বপূর্ণ?
টাকা কমা ও যোগ হওয়া দুটো ধাপ যেন একসাথে সফল বা ব্যর্থ হয় তা নিশ্চিত করতে।
২০. DDL কমান্ড কি সাধারণত Rollback করা যায়?
না, বেশিরভাগ ডেটাবেজ সিস্টেমে DDL স্বয়ংক্রিয়ভাবে কমিট হয়ে যায়।
২১. ALTER TABLE দিয়ে কী কী করা যায়?
নতুন কলাম যোগ করা, কলাম মুছে ফেলা, ডেটা টাইপ পরিবর্তন করা।
২২. একটা টেবিল থেকে সব ডেটা দ্রুত খালি করতে কোন কমান্ড ব্যবহার করা উচিত?
TRUNCATE, কারণ এটা DELETE-এর চেয়ে দ্রুত কাজ করে।
২৩. SQL কবে থেকে ব্যবহার হচ্ছে?
১৯৭০-এর দশক থেকে, IBM-এর গবেষণার মাধ্যমে শুরু হয়।
২৪. কেন SQL আজও এত জনপ্রিয়?
এটা সহজবোধ্য, শক্তিশালী এবং প্রায় সব ডেটাবেজ সিস্টেমে ব্যবহারযোগ্য।
২৫. Database Administrator (DBA) সাধারণত কোন শ্রেণির কমান্ড বেশি ব্যবহার করেন?
DDL ও DCL।
২৬. Data Analyst সাধারণত কোন শ্রেণির কমান্ড বেশি ব্যবহার করেন?
DQL (SELECT)।
২৭. একই সময়ে একাধিক পরিবর্তন করতে হলে কোন শ্রেণি ব্যবহার করা উচিত?
TCL, Transaction ব্যবহার করে।
২৮. DROP TABLE চালানোর পর কি ডেটা ফেরত পাওয়া যায়?
সাধারণত না, তাই আগে থেকে ব্যাকআপ রাখা জরুরি।
২৯. একটা কলাম যোগ করতে কোন কমান্ড ব্যবহার হয়?
ALTER TABLE ... ADD COLUMN।
৩০. SQL কমান্ডগুলোকে শ্রেণিতে ভাগ করার সুবিধা কী?
কাজের ধরন অনুযায়ী বোঝা ও শেখা সহজ হয়, এবং অনুমতি/নিরাপত্তা সঠিকভাবে ব্যবস্থাপনা করা যায়।

✅ MCQ প্র্যাকটিস

১. CREATE, ALTER, DROP কোন শ্রেণির কমান্ড?
(ক) DML (খ) DDL (গ) DQL (ঘ) TCL
উত্তর: (খ) DDL
২. COMMIT ও ROLLBACK কোন শ্রেণির অন্তর্গত?
(ক) DCL (খ) DDL (গ) TCL (ঘ) DQL
উত্তর: (গ) TCL
৩. GRANT কমান্ড কোন কাজে ব্যবহার হয়?
(ক) ডেটা যোগ করা (খ) অনুমতি দেওয়া (গ) টেবিল মোছা (ঘ) ডেটা দেখা
উত্তর: (খ) অনুমতি দেওয়া
৪. নিচের কোনটি DML কমান্ড নয়?
(ক) INSERT (খ) UPDATE (গ) DELETE (ঘ) CREATE
উত্তর: (ঘ) CREATE
৫. ROLLBACK কমান্ডের কাজ কী?
(ক) পরিবর্তন স্থায়ী করা (খ) পরিবর্তন বাতিল করা (গ) টেবিল তৈরি করা (ঘ) অনুমতি দেওয়া
উত্তর: (খ) পরিবর্তন বাতিল করা

📝 হোমওয়ার্ক অ্যাসাইনমেন্ট

  1. একটা "Library Management System"-এর জন্য প্রতিটা SQL শ্রেণি (DDL, DML, DQL, DCL, TCL) থেকে অন্তত একটা করে কমান্ড লেখো।
  2. SQL Command Hierarchy ডায়াগ্রাম (SQL → DDL/DML/DQL/DCL/TCL) নিজ হাতে এঁকে প্রতিটার নিচে ২টা করে উদাহরণ কমান্ড লেখো।
  3. DELETE, TRUNCATE ও DROP-এর পার্থক্য এবং COMMIT ও ROLLBACK-এর পার্থক্য নিজের ভাষায় মোট ৫টা বাক্যে লেখো।