SQL Basics
এসকিউএল মৌলিক ধারণা
এসকিউএল মৌলিক ধারণা (SQL Basics)
১. ভূমিকা — ডেটাবেজের সাথে কথা বলার ভাষা!
তুমি কি কখনো ভেবেছ, গুগলে কিছু খুঁজলে কীভাবে মুহূর্তে ফলাফল আসে? বা bKash এ টাকা পাঠালে তৎক্ষণাৎ ব্যালেন্স কমে যায়? এর পেছনে আছে ডেটাবেজ — এবং সেই ডেটাবেজের সাথে কথা বলার ভাষা হলো SQL (Structured Query Language)!
SQL হলো মানুষের ইংরেজি ভাষার মতো — কিন্তু এটি ডেটাবেজ বোঝে। "আমাকে বিজ্ঞান বিভাগের সব ছাত্রের নাম দাও" — SQL এ একটি লাইন!
মজার তথ্য: SQL উচ্চারণ করা হয় "S-Q-L" (এস-কিউ-এল) অথবা "Sequel" (সিকুয়েল)। IBM এর গবেষকরা ১৯৭৪ সালে এটি তৈরি করেন। আজ পৃথিবীর প্রায় সব ডেটাবেজ SQL ব্যবহার করে — ৫০ বছরেরও বেশি সময় ধরে!
২. সমস্যা — প্রোগ্রামিং ভাষা ছাড়া ডেটাবেজে কীভাবে কাজ করব?
SQL ছাড়া ডেটাবেজ ব্যবহার:
→ লক্ষ লক্ষ রেকর্ড ম্যানুয়ালি খুঁজতে হবে
→ প্রতিটি প্রোগ্রামিং ভাষার জন্য আলাদা কোড
→ জটিল, ধীর, ভুলের সম্ভাবনা বেশি
SQL দিয়ে:
SELECT name FROM Students WHERE division='Science';
→ এক লাইনে বিজ্ঞান বিভাগের সব ছাত্রের নাম!
৩. চিত্রের মাধ্যমে বোঝো
SQL এর বিভাগসমূহ:
SQL
│
┌─────┼──────┐
│ │ │
DDL DML DCL
│ │ │
CREATE INSERT GRANT
ALTER SELECT REVOKE
DROP UPDATE
DELETE
DDL = Data Definition Language (কাঠামো তৈরি)
DML = Data Manipulation Language (ডেটা পরিবর্তন)
DCL = Data Control Language (অনুমতি নিয়ন্ত্রণ)
৪. বাস্তব জীবনের সাথে মিল
উপমা: SQL হলো ডেটাবেজের সাথে কথা বলার ভাষা — ঠিক যেমন তুমি বাংলায় কথা বললে বাংলাদেশিরা বোঝে, SQL বললে ডেটাবেজ বোঝে। CREATE মানে "নতুন ঘর তৈরি কর", INSERT মানে "এই জিনিস রাখ", SELECT মানে "এটা দেখাও"।
Module 1: SQL কী? (What is SQL?)
📌 সংজ্ঞা
SQL (Structured Query Language) হলো একটি Declarative Programming Language যা Relational Database পরিচালনার জন্য ব্যবহৃত হয়। এটি দিয়ে ডেটা সংজ্ঞায়ন, পরিবর্তন, অনুসন্ধান ও সুরক্ষা নিয়ন্ত্রণ করা যায়।
SQL এর বৈশিষ্ট্য
| বৈশিষ্ট্য | বিবরণ |
|---|---|
| Non-procedural | "কী চাই" বলতে হয়, "কীভাবে আনবে" নয় |
| Standard | প্রায় সব RDBMS এ চলে |
| Set-based | একবারে অনেক রেকর্ড নিয়ে কাজ |
| Easy to learn | English এর মতো — পড়লেই বোঝা যায় |
Module 2: DDL — Data Definition Language
টেবিল তৈরি করা (CREATE TABLE)
-- Students টেবিল তৈরি:
CREATE TABLE Students (
roll INTEGER PRIMARY KEY,
name VARCHAR(100) NOT NULL,
division VARCHAR(20),
marks INTEGER,
address TEXT,
created_at DATE DEFAULT CURRENT_DATE
);
-- Subjects টেবিল তৈরি:
CREATE TABLE Subjects (
subject_code CHAR(5) PRIMARY KEY,
subject_name VARCHAR(50) NOT NULL,
full_marks INTEGER DEFAULT 100
);
টেবিল পরিবর্তন (ALTER TABLE)
-- নতুন Column যোগ:
ALTER TABLE Students ADD phone VARCHAR(15);
-- Column পরিবর্তন:
ALTER TABLE Students MODIFY name VARCHAR(150);
-- Column মুছে ফেলা:
ALTER TABLE Students DROP COLUMN address;
টেবিল মুছে ফেলা (DROP TABLE)
-- সতর্কতা: এই কমান্ড সব ডেটা মুছে দেবে!
DROP TABLE Students;
-- টেবিল রেখে ডেটা মুছা:
TRUNCATE TABLE Students;
Module 3: DML — Data Manipulation Language
ডেটা যোগ করা (INSERT)
-- একটি রেকর্ড যোগ:
INSERT INTO Students (roll, name, division, marks)
VALUES (101, 'রাহেলা আক্তর', 'Science', 850);
-- আরেকটি রেকর্ড:
INSERT INTO Students VALUES (102, 'মো: করিম', 'Commerce', 790, NULL, '2026-05-12');
ডেটা পড়া (SELECT)
-- সব রেকর্ড দেখো:
SELECT * FROM Students;
-- নির্দিষ্ট Column:
SELECT name, marks FROM Students;
-- শর্ত দিয়ে:
SELECT name, marks FROM Students WHERE division = 'Science';
-- বাংলাদেশের উদাহরণ:
SELECT name FROM Students WHERE marks >= 800;
-- ফলাফল: রাহেলা আক্তর (850 ≥ 800)
ডেটা পরিবর্তন (UPDATE)
-- একজনের নম্বর পরিবর্তন:
UPDATE Students SET marks = 860 WHERE roll = 101;
-- সবার নম্বরে ১০ যোগ (গ্রেস মার্ক):
UPDATE Students SET marks = marks + 10;
-- শর্তসহ পরিবর্তন:
UPDATE Students SET division = 'Science' WHERE roll = 103;
ডেটা মুছে ফেলা (DELETE)
-- একটি রেকর্ড মুছা:
DELETE FROM Students WHERE roll = 102;
-- শর্তসহ মুছা:
DELETE FROM Students WHERE marks < 300;
-- সতর্কতা: WHERE ছাড়া DELETE সব মুছে দেবে!
-- DELETE FROM Students; → সব ছাত্র মুছে যাবে!
Module 4: DCL — Data Control Language
-- অনুমতি দেওয়া (GRANT):
-- শিক্ষককে শুধু দেখার অনুমতি:
GRANT SELECT ON Students TO 'teacher_user';
-- অ্যাডমিনকে সব অনুমতি:
GRANT ALL PRIVILEGES ON Students TO 'admin_user';
-- অনুমতি বাতিল (REVOKE):
-- শিক্ষকের মুছে ফেলার অনুমতি বাতিল:
REVOKE DELETE ON Students FROM 'teacher_user';
কে কী করতে পারে?
| ব্যবহারকারী | SELECT | INSERT | UPDATE | DELETE |
|---|---|---|---|---|
| অ্যাডমিন | ✅ | ✅ | ✅ | ✅ |
| শিক্ষক | ✅ | ✅ | ✅ | ❌ |
| ছাত্র | ✅ | ❌ | ❌ | ❌ |
Module 5: বাস্তব SQL উদাহরণ
-- একটি স্কুল ডেটাবেজের উদাহরণ:
-- টেবিল তৈরি:
CREATE TABLE Students (
roll INTEGER PRIMARY KEY,
name VARCHAR(100) NOT NULL,
division VARCHAR(20),
marks INTEGER
);
-- ডেটা যোগ:
INSERT INTO Students VALUES (101, 'রাহেলা', 'Science', 850);
INSERT INTO Students VALUES (102, 'করিম', 'Commerce', 790);
INSERT INTO Students VALUES (103, 'সুমাইয়া', 'Science', 880);
INSERT INTO Students VALUES (104, 'রফিক', 'Arts', 810);
-- প্রশ্ন ১: বিজ্ঞান বিভাগের সব ছাত্র:
SELECT name, marks FROM Students WHERE division = 'Science';
-- ফলাফল:
-- রাহেলা | 850
-- সুমাইয়া | 880
-- প্রশ্ন ২: সর্বোচ্চ নম্বর:
SELECT MAX(marks) FROM Students;
-- ফলাফল: 880
-- প্রশ্ন ৩: গড় নম্বর:
SELECT AVG(marks) FROM Students;
-- ফলাফল: 832.5
Module 6: SQL ও বাংলাদেশ
বাংলাদেশের সিস্টেমে SQL:
📱 bKash:
SELECT balance FROM Users WHERE phone = '01711111111';
→ ব্যালেন্স দেখানো
🎓 শিক্ষা বোর্ড:
SELECT name, gpa FROM SSC_Results WHERE roll = '123456';
→ ফলাফল দেখানো
🏦 ব্যাংক:
UPDATE Accounts SET balance = balance - 1000
WHERE account_number = 'BD001234567890';
→ টাকা উত্তোলন
🏥 হাসপাতাল:
INSERT INTO Patients VALUES (NULL, 'রাহেলা', 25, 'ঢাকা', TODAY());
→ নতুন রোগী ভর্তি
🧠 মূল শিক্ষা
মনে রাখো: SQL তিনটি ভাগে — DDL (কাঠামো: CREATE/ALTER/DROP), DML (ডেটা: INSERT/SELECT/UPDATE/DELETE), DCL (অনুমতি: GRANT/REVOKE)। SELECT দিয়ে ডেটা পড়া হয়, WHERE দিয়ে শর্ত দেওয়া হয়। DELETE ব্যবহারে WHERE না দিলে সব মুছে যাবে!
🔁 নিজে পরীক্ষা করো
❓ প্রশ্ন ১: DDL ও DML এর পার্থক্য কী? ✅ উত্তর: DDL (Data Definition Language) টেবিলের কাঠামো তৈরি/পরিবর্তন/মুছে ফেলে — CREATE, ALTER, DROP। DML ডেটা নিয়ে কাজ করে — INSERT, SELECT, UPDATE, DELETE।
❓ প্রশ্ন ২: SELECT * FROM Students; মানে কী? ✅ উত্তর: Students টেবিলের সব Row ও সব Column দেখাও। * মানে সব Column।
❓ প্রশ্ন ৩: UPDATE এ WHERE না দিলে কী হয়? ✅ উত্তর: টেবিলের সব Row পরিবর্তন হয়ে যাবে। এটি বিপজ্জনক।
❓ প্রশ্ন ৪: GRANT ও REVOKE কী কাজ করে? ✅ উত্তর: GRANT ব্যবহারকারীকে অনুমতি দেয়, REVOKE অনুমতি বাতিল করে।
📝 HSC পরীক্ষার প্রস্তুতি
পরীক্ষায় যা আসতে পারে
🎯 SQL এর সংজ্ঞা ও DDL/DML/DCL বর্ণনা (৪ নম্বর) 🎯 CREATE TABLE লেখো (৩ নম্বর) 🎯 INSERT, SELECT, UPDATE, DELETE উদাহরণ (৪ নম্বর) 🎯 SQL ব্যবহার করে নির্দিষ্ট তথ্য বের করো (৫ নম্বর)
সাধারণ ভুলসমূহ
⚠️ SELECT এর পরিবর্তে INSERT লেখা — SELECT পড়ে, INSERT লেখে ⚠️ WHERE ছাড়া DELETE — বিপজ্জনক! সব মুছে যাবে ⚠️ DDL ও DML গুলিয়ে ফেলা — DDL কাঠামো, DML ডেটা
মনে রাখার কৌশল
💡 DML CRUD: Create=INSERT, Read=SELECT, Update=UPDATE, Delete=DELETE 💡 DDL CDA: Create=CREATE, Define/Modify=ALTER, Delete=DROP 💡 WHERE ছাড়া UPDATE/DELETE = বিপদ!
✅ সারাংশ
- SQL: ডেটাবেজের সাথে কথা বলার ভাষা — Standard, Non-procedural
- DDL: CREATE (তৈরি), ALTER (পরিবর্তন), DROP (মুছা)
- DML: INSERT (যোগ), SELECT (পড়া), UPDATE (পরিবর্তন), DELETE (মুছা)
- DCL: GRANT (অনুমতি দেওয়া), REVOKE (বাতিল)
- WHERE: শর্ত নির্ধারণ — ছাড়া সব Row এ কাজ হয়
SQL কমান্ড — দ্রুত তুলনা
| কমান্ড | বিভাগ | কাজ | উদাহরণ |
|---|---|---|---|
| CREATE | DDL | টেবিল তৈরি | CREATE TABLE Students |
| ALTER | DDL | টেবিল পরিবর্তন | ALTER TABLE ... ADD ... |
| DROP | DDL | টেবিল মুছা | DROP TABLE Students |
| INSERT | DML | রেকর্ড যোগ | INSERT INTO ... VALUES |
| SELECT | DML | রেকর্ড পড়া | SELECT * FROM ... |
| UPDATE | DML | রেকর্ড পরিবর্তন | UPDATE ... SET ... WHERE |
| DELETE | DML | রেকর্ড মুছা | DELETE FROM ... WHERE |
| GRANT | DCL | অনুমতি দেওয়া | GRANT SELECT ON ... |
| REVOKE | DCL | অনুমতি বাতিল | REVOKE DELETE FROM ... |
🎯 অনুশীলন প্রশ্ন
১. একটি Library টেবিল তৈরি করো যেখানে Book_ID, Title, Author, Year, Price থাকবে।
২. নিচের প্রশ্নগুলোর SQL লেখো:
- বিজ্ঞান বিভাগের ছাত্রদের নাম দেখাও
- ৮০০ এর বেশি নম্বর পাওয়া ছাত্রের তথ্য দেখাও
৩. DDL ও DML এর মধ্যে পার্থক্য কী? প্রতিটির ২টি উদাহরণ দাও।
৪. GRANT ও REVOKE কমান্ড কেন দরকার?
৫. MCQ: SQL এ নতুন রেকর্ড যোগ করার কমান্ড কোনটি? (ক) ADD (খ) INSERT (গ) CREATE (ঘ) UPDATE উত্তর: (খ) INSERT