📌 প্রোগ্রামিং ভাষা কী?
কম্পিউটারকে নির্দেশ দেওয়ার জন্য বিশেষ নিয়ম (Syntax) অনুসারে লেখা ভাষাকে প্রোগ্রামিং ভাষা (Programming Language) বলে। প্রোগ্রামিং ভাষা দিয়ে লেখা নির্দেশাবলিকে Program বা Source Code বলে। একজন প্রোগ্রামার Source Code লেখেন এবং কম্পিউটার তা নির্বাহ (Execute) করে।
- Program: নির্দেশাবলীর সুশৃঙ্খল সমষ্টি — কম্পিউটার Step by Step পালন করে
- Source Code: প্রোগ্রামারের লেখা মূল কোড (Human-readable)
- Object Code: Compiler/Assembler-এর তৈরি Machine-readable কোড
- Bug: প্রোগ্রামের ত্রুটি | Debugging: ত্রুটি খুঁজে সংশোধন করা
- Syntax: ভাষার ব্যাকরণ/নিয়ম | Syntax Error: নিয়ম ভঙ্গ করলে ত্রুটি
- IDE: Integrated Development Environment — কোড লেখা, Compile ও Debug-এর একক সফটওয়্যার (যেমন VS Code, PyCharm, Eclipse)
📌 প্রোগ্রামিং ভাষার প্রজন্ম (Generation)
| প্রজন্ম | নাম | বৈশিষ্ট্য | উদাহরণ | অনুবাদক |
|---|---|---|---|---|
| 1GL | Machine Language | শুধু 0 ও 1 (বাইনারি) — কম্পিউটার সরাসরি বোঝে, অনুবাদক লাগে না | 01001011... | কোনোটি না |
| 2GL | Assembly Language | সংক্ষিপ্ত কোড (Mnemonic) — Machine-এর কাছের ভাষা | MOV, ADD, SUB, JMP | Assembler |
| 3GL | High-Level Language | ইংরেজির কাছাকাছি — Portable, শেখা সহজ | C, Java, Python, C++ | Compiler / Interpreter |
| 4GL | Very High-Level | কম কোডে বেশি কাজ — Domain-specific | SQL, MATLAB, R | বিশেষায়িত ইঞ্জিন |
| 5GL | Natural / AI Language | প্রাকৃতিক ভাষায় কম্পিউটারকে নির্দেশ — AI/Logic ভিত্তিক | Prolog, LISP, Mercury | Inference Engine |
Low-Level = মেশিনের কাছে (1GL, 2GL) — দ্রুত কিন্তু কঠিন, হার্ডওয়্যার নির্ভর
High-Level = মানুষের কাছে (3GL+) — সহজ কিন্তু অনুবাদ দরকার, Portable
"যত নিচে = মেশিনের ভাষা (দ্রুত), যত উপরে = মানুষের ভাষা (সহজ)"
🔑 1GL = সরাসরি Execute (কোনো অনুবাদক লাগে না) — পরীক্ষায় আসে!
📌 জনপ্রিয় প্রোগ্রামিং ভাষা — উদ্ভাবক ও সাল
| ভাষা | উদ্ভাবক | সাল | বিশেষত্ব | ধরন |
|---|---|---|---|---|
| FORTRAN | John Backus (IBM) | ১৯৫৭ | প্রথম High-Level Language — বৈজ্ঞানিক গণনা | Compiled |
| COBOL | Grace Hopper | ১৯৫৯ | ব্যবসায়িক ডেটা প্রসেসিং — ব্যাংক/বীমায় প্রচলিত | Compiled |
| BASIC | Kemeny & Kurtz | ১৯৬৪ | শেখার জন্য সহজ — Beginners' All-purpose Symbolic Instruction Code | Interpreted |
| Pascal | Niklaus Wirth | ১৯৭০ | শিক্ষামূলক, Structured Programming শেখাতে | Compiled |
| C | Dennis Ritchie | ১৯৭২ | সিস্টেম প্রোগ্রামিং, UNIX OS C-তে লেখা — "প্রোগ্রামিং-এর জননী" | Compiled |
| C++ | Bjarne Stroustrup | ১৯৮৩ | C + OOP — গেম, সিস্টেম সফটওয়্যার, ব্রাউজার | Compiled |
| Python | Guido van Rossum | ১৯৯১ | সহজ Syntax, AI/ML ও Data Science-এর প্রধান ভাষা | Interpreted |
| Java | James Gosling (Sun) | ১৯৯৫ | "Write Once, Run Anywhere" — JVM, Android App | Compiled + Interpreted |
| JavaScript | Brendan Eich | ১৯৯৫ | ওয়েব ডেভেলপমেন্ট — ব্রাউজারে চলে, Frontend + Backend (Node.js) | Interpreted (JIT) |
| PHP | Rasmus Lerdorf | ১৯৯৫ | সার্ভার-সাইড ওয়েব ডেভেলপমেন্ট (WordPress, Facebook) | Interpreted |
| C# | Microsoft (Anders Hejlsberg) | ২০০০ | .NET Framework, Windows App, Unity Game | Compiled (CLR) |
| Swift | Apple | ২০১৪ | iOS/macOS App Development | Compiled |
| Kotlin | JetBrains | ২০১১ | Android-এর আধুনিক ভাষা (Google Recommended) | Compiled (JVM) |
- C-এর জনক: Dennis Ritchie (Bell Labs, ১৯৭২) — UNIX OS-ও তিনি তৈরি করেন
- Java-র স্লোগান: "Write Once, Run Anywhere" — JVM (Java Virtual Machine) এ চলে
- প্রথম High-Level Language: FORTRAN (১৯৫৭, John Backus)
- প্রথম প্রোগ্রামার: Ada Lovelace (Charles Babbage-এর Analytical Engine-এর জন্য প্রোগ্রাম লেখেন)
- HTML প্রোগ্রামিং ভাষা নয় — এটি Markup Language (HyperText Markup Language)
- SQL প্রোগ্রামিং ভাষা নয় — এটি Query Language (4GL)
- LISP = AI-র প্রথম ভাষা (John McCarthy, ১৯৫৮) | Prolog = Logic Programming
📌 অনুবাদক প্রোগ্রাম (Language Translator) — বিস্তারিত
High-Level ভাষায় লেখা Source Code-কে কম্পিউটার সরাসরি বোঝে না — Machine Language-এ রূপান্তর দরকার। এই রূপান্তরের কাজ করে অনুবাদক।
| অনুবাদক | ইনপুট | আউটপুট | পদ্ধতি | গতি | উদাহরণ |
|---|---|---|---|---|---|
| Assembler | Assembly Language | Machine Code | এক নির্দেশ → এক Machine নির্দেশ | দ্রুত | NASM, MASM, GAS |
| Compiler | পুরো Source Code | Object File (.exe/.obj) | পুরো কোড একবারে অনুবাদ | Execute দ্রুত | C (GCC), C++, Java (javac) |
| Interpreter | এক লাইন Source Code | সরাসরি Execute | এক লাইন করে অনুবাদ ও সম্পাদন | Execute ধীর | Python, JavaScript, PHP, Ruby |
Compiler vs Interpreter — গুরুত্বপূর্ণ পার্থক্য
| বৈশিষ্ট্য | Compiler | Interpreter |
|---|---|---|
| অনুবাদ পদ্ধতি | পুরো Source Code একবারে অনুবাদ | এক লাইন করে অনুবাদ ও সম্পাদন |
| Object File | তৈরি হয় (.exe, .obj) | তৈরি হয় না |
| Execution Speed | দ্রুত (একবার Compile হলে বারবার চলে) | ধীর (প্রতিবার অনুবাদ করতে হয়) |
| Error Detection | Compile-এর সময় সব Error একসাথে দেখায় | Error পেলে সেখানেই থেমে যায় |
| Memory | বেশি লাগে (Object File রাখে) | কম লাগে |
| Debugging | কঠিন (সব Error একসাথে) | সহজ (এক লাইন করে) |
| উদাহরণ | C, C++, Go, Rust | Python, JavaScript, PHP, Ruby |
Java = Compiler + Interpreter — Java Source Code (.java) প্রথমে javac Compiler দিয়ে Bytecode (.class) তৈরি করে, তারপর JVM (Java Virtual Machine) সেই Bytecode Interpret করে Execute করে। এজন্য Java Platform Independent — "Write Once, Run Anywhere"।
📌 প্রোগ্রামিং প্যারাডাইম (Programming Paradigm)
প্রোগ্রামিং সমস্যা সমাধানের বিভিন্ন দৃষ্টিভঙ্গি বা পদ্ধতিকে Programming Paradigm বলে।
| প্যারাডাইম | বৈশিষ্ট্য | উদাহরণ ভাষা |
|---|---|---|
| Procedural | ধাপে ধাপে নির্দেশ (Function/Procedure ভিত্তিক), Top-down | C, Pascal, FORTRAN |
| Object-Oriented (OOP) | Class ও Object ভিত্তিক — বাস্তব জগতের মডেলিং | Java, C++, Python, C# |
| Functional | Function-কেন্দ্রিক, Side Effect নেই, Immutable Data | Haskell, Lisp, Erlang, Scala |
| Logic | Logic/Rule ভিত্তিক — AI ও Expert System-এ ব্যবহৃত | Prolog, Mercury |
| Scripting | অটোমেশন ও ওয়েবে ব্যবহৃত — হালকা ও দ্রুত লেখা | JavaScript, Python, PHP, Bash |
| Event-Driven | ইভেন্ট (ক্লিক, কী-প্রেস) ঘটলে কোড Execute হয় | JavaScript (Browser), Visual Basic |
📌 অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং (OOP) — বিস্তারিত
OOP হলো বর্তমান যুগের সবচেয়ে জনপ্রিয় প্রোগ্রামিং পদ্ধতি। বাস্তব জগতের বস্তুকে (Object) মডেল করে প্রোগ্রাম লেখা হয়।
| ধারণা | বিবরণ | বাস্তব উপমা |
|---|---|---|
| Class | Object-এর নকশা/ছাঁচ (Blueprint) — বৈশিষ্ট্য ও আচরণ সংজ্ঞায়িত | "গাড়ি" শ্রেণির নকশা |
| Object | Class-এর একটি নির্দিষ্ট উদাহরণ (Instance) | আপনার লাল Toyota গাড়ি |
| Encapsulation | ডেটা ও Method একসাথে ক্যাপসুলে আবদ্ধ করা — বাইরে থেকে সরাসরি প্রবেশ নেই | ওষুধের ক্যাপসুল — ভেতরে কী আছে দেখা যায় না |
| Inheritance | একটি Class-এর বৈশিষ্ট্য অন্য Class-এ উত্তরাধিকার হিসেবে পাওয়া | সন্তান পিতামাতার বৈশিষ্ট্য পায় |
| Polymorphism | একই নামের Method ভিন্ন ভিন্নভাবে কাজ করা | "কথা বলা" — মানুষ বাংলায়, পাখি কিচিরমিচিরে |
| Abstraction | জটিলতা লুকিয়ে রাখা — শুধু প্রয়োজনীয় অংশ দেখানো | গাড়ি চালানো — ইঞ্জিনের ভেতর জানতে হয় না |
Abstraction — জটিলতা লুকানো
Encapsulation — ডেটা আবদ্ধ করা (Data Hiding)
Inheritance — উত্তরাধিকার (পুনর্ব্যবহার)
Polymorphism — বহুরূপিতা (একই নাম, ভিন্ন কাজ)
"AEI Police" — OOP-র Police যারা কোডকে সুশৃঙ্খল রাখে!
- Overloading: একই নামে ভিন্ন Parameter-এর Method (Compile-time Polymorphism)
- Overriding: Parent Class-এর Method Child Class-এ নতুনভাবে লেখা (Runtime Polymorphism)
- Constructor: Object তৈরির সময় স্বয়ংক্রিয়ভাবে চলে — Class-এর নামে Method
- Destructor: Object ধ্বংসের সময় চলে (C++ → ~ClassName, Python → __del__)
- Smalltalk = প্রথম পূর্ণাঙ্গ OOP ভাষা | Alan Kay = OOP ধারণার জনক
📌 অ্যালগরিদম ও ফ্লোচার্ট — বিস্তারিত
অ্যালগরিদম (Algorithm)
কোনো সমস্যা সমাধানের জন্য ধাপে ধাপে সুনির্দিষ্ট নির্দেশাবলীকে অ্যালগরিদম বলে। নাম এসেছে গণিতবিদ আল-খোয়ারিজমি-র নাম থেকে। প্রোগ্রাম লেখার আগে অ্যালগরিদম তৈরি করা হয়।
- Input: এক বা একাধিক ইনপুট থাকবে (শূন্যও হতে পারে)
- Output: অন্তত একটি আউটপুট থাকবে
- Definiteness: প্রতিটি ধাপ সুনির্দিষ্ট ও দ্ব্যর্থহীন হবে
- Finiteness: সীমিত ধাপে শেষ হবে (অসীম লুপ নয়)
- Effectiveness: প্রতিটি ধাপ কার্যকর ও সম্ভব হবে
ফ্লোচার্ট (Flowchart)
অ্যালগরিদমের চিত্ররূপকে ফ্লোচার্ট বলে। বিভিন্ন জ্যামিতিক আকৃতি দিয়ে প্রতিটি ধাপ বোঝানো হয়।
| প্রতীক | আকৃতি | কাজ | উদাহরণ |
|---|---|---|---|
| Oval / Terminal | ডিম্বাকার ⬭ | Start / End (শুরু/শেষ) | "Start", "End" |
| Rectangle / Process | আয়তক্ষেত্র ▭ | প্রক্রিয়া / গণনা | Sum = A + B |
| Diamond / Decision | রম্বস ◇ | সিদ্ধান্ত (শর্ত — হ্যাঁ/না) | "A > B?", "Is Even?" |
| Parallelogram | সামান্তরিক ▱ | Input / Output | "Read A, B", "Print Sum" |
| Arrow / Flow Line | তীর → | প্রবাহের দিক | — |
| Circle / Connector | ছোট বৃত্ত ○ | ফ্লোচার্টের বিভিন্ন অংশ সংযুক্ত | পৃষ্ঠা বদলালে |
| Predefined Process | দ্বি-রেখা আয়তক্ষেত্র | আগে থেকে সংজ্ঞায়িত Subroutine/Function | Call calculateTax() |
Pseudocode (সিউডোকোড)
কোনো নির্দিষ্ট ভাষা ছাড়া সাধারণ ভাষায় অ্যালগরিদম লেখাকে Pseudocode বলে — প্রোগ্রাম লেখার পরিকল্পনা।
BEGIN
READ A, B
IF A > B THEN
PRINT A "is greater"
ELSE
PRINT B "is greater"
ENDIF
END
📌 ডেটা স্ট্রাকচার (Data Structure) — প্রাথমিক ধারণা
ডেটা সুশৃঙ্খলভাবে সংরক্ষণ ও পরিচালনার পদ্ধতিকে ডেটা স্ট্রাকচার বলে।
| ডেটা স্ট্রাকচার | বৈশিষ্ট্য | বাস্তব উপমা | ধরন |
|---|---|---|---|
| Array | একই ধরনের ডেটার ক্রমানুসারী সংগ্রহ — Index (0 থেকে শুরু) | একটি সারিতে বসা ছাত্রদের রোল | Linear |
| Stack | LIFO — Last In, First Out (শেষে ঢুকে প্রথমে বের) | থালার স্তূপ — উপর থেকে নেওয়া হয় | Linear |
| Queue | FIFO — First In, First Out (প্রথমে ঢুকে প্রথমে বের) | টিকেট কাউন্টারের লাইন | Linear |
| Linked List | Node + Pointer — প্রতিটি Node পরবর্তীকে নির্দেশ করে | ট্রেনের বগি (একটি অন্যটির সাথে যুক্ত) | Linear |
| Tree | শ্রেণিবদ্ধ — একটি Root + অনেক Child Node | পারিবারিক বংশলতিকা, ফাইল সিস্টেম | Non-Linear |
| Graph | Node (Vertex) + Edge — যেকোনো সংযোগ | রাস্তার ম্যাপ, Social Network | Non-Linear |
Stack = LIFO (Last In, First Out) — "বইয়ের স্তূপ" → উপরেরটাই আগে তুলবেন
Queue = FIFO (First In, First Out) — "ব্যাংকের লাইন" → আগে আসলে আগে সেবা
Stack-এ: Push (ঢোকানো) ও Pop (বের করা)
Queue-তে: Enqueue (ঢোকানো) ও Dequeue (বের করা)
- Bubble Sort: পাশাপাশি তুলনা করে বড়টি ডানে ঠেলে দেয় — সবচেয়ে সহজ, ধীর O(n²)
- Selection Sort: সবচেয়ে ছোটটি খুঁজে সামনে আনে — O(n²)
- Insertion Sort: একটি একটি করে সঠিক জায়গায় বসায় (তাসের মতো) — O(n²)
- Merge Sort: ভাগ করো ও জয় করো (Divide & Conquer) — দ্রুত O(n log n)
- Quick Sort: Pivot ভিত্তিক Divide & Conquer — Average-এ সবচেয়ে দ্রুত O(n log n)
- Searching: Linear Search O(n) | Binary Search O(log n) — Sorted Array-তে
📌 ডেটাবেস ও DBMS — বিস্তারিত
ডেটাবেস (Database) হলো সংগঠিত ও কাঠামোবদ্ধ ডেটার সমাহার যা সহজে সংরক্ষণ, পুনরুদ্ধার ও ব্যবস্থাপনা করা যায়। ডেটাবেস তৈরি, রক্ষণাবেক্ষণ ও পরিচালনার সফটওয়্যারকে DBMS (Database Management System) বলে।
DBMS-এর ধরন
| ধরন | বৈশিষ্ট্য | উদাহরণ |
|---|---|---|
| Hierarchical DBMS | Tree কাঠামো — Parent-Child সম্পর্ক (1:N) | IMS (IBM) |
| Network DBMS | Graph কাঠামো — Many-to-Many সম্পর্ক | IDMS |
| Relational DBMS (RDBMS) | Table/Relation ভিত্তিক — Row ও Column, SQL ব্যবহৃত | MySQL, Oracle, PostgreSQL, MS SQL Server |
| Object-Oriented DBMS | Object ও Class ভিত্তিক | ObjectDB, db4o |
| NoSQL DBMS | Non-Relational — Schema-free, বড় ডেটা ও দ্রুত Access | MongoDB, Cassandra, Redis |
Dr. E.F. Codd (Edgar Frank Codd) — IBM-এ কর্মরত থাকাকালীন ১৯৭০ সালে "A Relational Model of Data for Large Shared Data Banks" পেপার প্রকাশ করেন। তিনি Relational Database-এর ধারণার জনক। Codd-এর 12টি নিয়ম (Codd's 12 Rules) RDBMS-এর মানদণ্ড নির্ধারণ করে।
📌 Relational Database — মৌলিক ধারণা
| RDBMS টার্ম | ফাইল সিস্টেমে | বিবরণ |
|---|---|---|
| Table (Relation) | File | ডেটার সারি ও কলামের সমষ্টি — RDBMS-এর মূল কাঠামো |
| Row (Tuple/Record) | Record | টেবিলের একটি সারি = একটি সম্পূর্ণ ডেটা এন্ট্রি |
| Column (Attribute/Field) | Field | টেবিলের একটি কলাম = ডেটার একটি বৈশিষ্ট্য (যেমন Name, Age) |
| Domain | — | একটি Attribute-তে যে ধরনের মান থাকতে পারে (যেমন Age → 0-150) |
| Schema | — | ডেটাবেসের সম্পূর্ণ কাঠামো/নকশা (Table, Column, Data Type, Relation) |
| Query | — | ডেটাবেসে প্রশ্ন / অনুসন্ধান — SQL দিয়ে করা হয় |
📌 ডেটাবেস Key — সম্পূর্ণ তালিকা
| Key | বিবরণ | বিশেষত্ব |
|---|---|---|
| Primary Key | প্রতিটি Record-এর অনন্য পরিচয় | Unique + NOT NULL — একটি Table-এ একটিই |
| Foreign Key | অন্য Table-এর Primary Key — দুটি Table-এর মধ্যে সম্পর্ক তৈরি করে | NULL হতে পারে, Duplicate হতে পারে |
| Candidate Key | Primary Key হওয়ার যোগ্য সব Key | Unique + NOT NULL — একাধিক হতে পারে |
| Composite Key | দুই বা ততোধিক Column মিলে একটি Unique Key | আলাদাভাবে Unique নয়, একসাথে Unique |
| Super Key | Unique শনাক্তের জন্য ব্যবহৃত Attribute-এর সমষ্টি | অপ্রয়োজনীয় Attribute থাকতে পারে |
| Alternate Key | Primary Key ছাড়া বাকি Candidate Key | ব্যাকআপ পরিচয় |
Primary Key = আপনার NID নম্বর — আপনার Table-এ আপনাকে চিনতে (Unique, NOT NULL)
Foreign Key = আপনার NID অন্য Table-এ (যেমন ব্যাংক একাউন্টে) — সম্পর্ক তৈরি করে
🔑 Primary Key = অনন্য পরিচয়, Foreign Key = টেবিলগুলোকে জুড়ে দেয়
Entity Relationship (ER) Diagram
| প্রতীক | আকৃতি | কাজ |
|---|---|---|
| Entity | আয়তক্ষেত্র ▭ | বাস্তব জগতের বস্তু (Student, Employee) |
| Attribute | ডিম্বাকার ⬭ | Entity-র বৈশিষ্ট্য (Name, Age, Roll) |
| Relationship | রম্বস ◇ | Entity-র মধ্যে সম্পর্ক (Enrolls, Works_for) |
| Primary Key | Underlined Attribute | অনন্য পরিচয় চিহ্নিত |
Relationship-এর ধরন (Cardinality)
| ধরন | বিবরণ | উদাহরণ |
|---|---|---|
| 1:1 (One-to-One) | একটির সাথে একটি | একজন ব্যক্তি → একটি Passport |
| 1:N (One-to-Many) | একটির সাথে অনেক | একজন শিক্ষক → অনেক ছাত্র |
| M:N (Many-to-Many) | অনেকের সাথে অনেক | ছাত্ররা → অনেক কোর্সে, কোর্সে → অনেক ছাত্র |
📌 SQL (Structured Query Language) — বিস্তারিত
SQL হলো Relational Database পরিচালনার Standard ভাষা। এটি 4GL (4th Generation Language) — IBM-এর Donald Chamberlin ও Raymond Boyce ১৯৭৪ সালে SEQUEL হিসেবে তৈরি করেন, পরে SQL নামকরণ।
SQL-এর ধরন (Category)
| ধরন | পূর্ণরূপ | কাজ | কমান্ড |
|---|---|---|---|
| DDL | Data Definition Language | ডেটাবেস ও টেবিলের কাঠামো তৈরি/পরিবর্তন/মুছে ফেলা | CREATE, ALTER, DROP, TRUNCATE |
| DML | Data Manipulation Language | ডেটা যোগ/পরিবর্তন/মুছে ফেলা | INSERT, UPDATE, DELETE |
| DQL | Data Query Language | ডেটা দেখা/পড়া | SELECT |
| DCL | Data Control Language | ডেটাবেসে Permission/অনুমতি দেওয়া/কেড়ে নেওয়া | GRANT, REVOKE |
| TCL | Transaction Control Language | Transaction ম্যানেজমেন্ট | COMMIT, ROLLBACK, SAVEPOINT |
প্রধান SQL কমান্ড — উদাহরণসহ
| কমান্ড | ধরন | কাজ | উদাহরণ |
|---|---|---|---|
CREATE TABLE | DDL | নতুন টেবিল তৈরি | CREATE TABLE students (id INT PRIMARY KEY, name VARCHAR(50), age INT); |
ALTER TABLE | DDL | টেবিল পরিবর্তন (Column যোগ/মুছে ফেলা) | ALTER TABLE students ADD email VARCHAR(100); |
DROP TABLE | DDL | টেবিল সম্পূর্ণ মুছে ফেলা | DROP TABLE students; |
INSERT INTO | DML | নতুন ডেটা যোগ | INSERT INTO students VALUES (1, 'Rahim', 22); |
SELECT | DQL | ডেটা দেখা/পড়া | SELECT * FROM students WHERE age > 18; |
UPDATE | DML | ডেটা পরিবর্তন | UPDATE students SET name='Karim' WHERE id=1; |
DELETE | DML | নির্দিষ্ট ডেটা মুছে ফেলা | DELETE FROM students WHERE id=5; |
ORDER BY | Clause | ডেটা সাজানো | SELECT * FROM students ORDER BY name ASC; |
GROUP BY | Clause | গ্রুপ করে Aggregate Function ব্যবহার | SELECT age, COUNT(*) FROM students GROUP BY age; |
JOIN | Clause | একাধিক টেবিল সংযুক্ত করে দেখা | SELECT * FROM orders INNER JOIN customers ON orders.cid = customers.id; |
Create = INSERT (তৈরি/যোগ)
Read = SELECT (পড়া/দেখা)
Update = UPDATE (পরিবর্তন)
Delete = DELETE (মুছে ফেলা)
🔑 SELECT * FROM table = টেবিলের সব ডেটা দেখায় (* = সব Column)
SQL Aggregate Functions (পরীক্ষায় আসে)
| Function | কাজ | উদাহরণ |
|---|---|---|
COUNT() | মোট সংখ্যা গণনা | SELECT COUNT(*) FROM students; |
SUM() | যোগফল | SELECT SUM(marks) FROM results; |
AVG() | গড় | SELECT AVG(age) FROM students; |
MAX() | সর্বোচ্চ মান | SELECT MAX(salary) FROM employees; |
MIN() | সর্বনিম্ন মান | SELECT MIN(age) FROM students; |
SQL JOIN — একাধিক টেবিল সংযুক্ত
| JOIN ধরন | বিবরণ |
|---|---|
| INNER JOIN | দুই টেবিলে মিল আছে এমন Row দেখায় (সবচেয়ে বেশি ব্যবহৃত) |
| LEFT JOIN | বাম টেবিলের সব Row + ডান টেবিলে মিল থাকলে সেই ডেটা |
| RIGHT JOIN | ডান টেবিলের সব Row + বাম টেবিলে মিল থাকলে সেই ডেটা |
| FULL OUTER JOIN | উভয় টেবিলের সব Row — মিল না থাকলে NULL |
| CROSS JOIN | প্রতিটি Row-র সাথে প্রতিটি Row-র সংযুক্তি (Cartesian Product) |
📌 Normalization ও ACID Properties
Normalization (স্বল্প পরিচিতি)
ডেটাবেসে Data Redundancy (অপ্রয়োজনীয় পুনরাবৃত্তি) কমানো ও Data Integrity রক্ষার জন্য টেবিলকে ছোট ছোট টেবিলে ভাগ করার প্রক্রিয়াকে Normalization বলে।
| Normal Form | শর্ত |
|---|---|
| 1NF | প্রতিটি Cell-এ একটিই মান (Atomic Value) — কোনো সেটে একাধিক মান নয় |
| 2NF | 1NF + Partial Dependency নেই (সব Non-key Attribute পুরো Primary Key-র উপর নির্ভর) |
| 3NF | 2NF + Transitive Dependency নেই (Non-key Attribute অন্য Non-key-র উপর নির্ভর না) |
| BCNF | 3NF-এর শক্তিশালী রূপ — প্রতিটি Determinant Candidate Key হতে হবে |
ACID Properties (Transaction-এর বৈশিষ্ট্য)
| Property | পূর্ণরূপ | বিবরণ |
|---|---|---|
| A | Atomicity | Transaction হয় সম্পূর্ণ হবে, নয় একদম হবে না ("All or Nothing") |
| C | Consistency | Transaction-এর আগে ও পরে ডেটাবেস সামঞ্জস্যপূর্ণ থাকবে |
| I | Isolation | একসাথে চলা Transaction পরস্পরকে প্রভাবিত করবে না |
| D | Durability | একবার Commit হলে ডেটা স্থায়ী — System Crash-এও থাকবে |
📌 Quick Revision — পরীক্ষায় বারবার আসা তথ্য
- C-এর জনক: Dennis Ritchie (১৯৭২) | C++: Bjarne Stroustrup (১৯৮৩)
- Java: James Gosling — "Write Once, Run Anywhere" (JVM)
- Python: Guido van Rossum — AI/ML ভাষা | JavaScript: Brendan Eich — ওয়েব
- প্রথম HLL: FORTRAN (১৯৫৭) | প্রথম প্রোগ্রামার: Ada Lovelace
- 1GL: Machine (০,১) | 2GL: Assembly | 3GL: HLL | 4GL: SQL | 5GL: AI (Prolog)
- Compiler: পুরো কোড একবারে (C, C++) | Interpreter: এক লাইন করে (Python, JS)
- OOP 4 Pillars: Abstraction, Encapsulation, Inheritance, Polymorphism
- Stack: LIFO | Queue: FIFO
- RDBMS-এর জনক: E.F. Codd (১৯৭০)
- Primary Key: Unique + NOT NULL | Foreign Key: দুই টেবিলের সম্পর্ক
- SQL = 4GL — DDL: CREATE/ALTER/DROP | DML: INSERT/UPDATE/DELETE | DQL: SELECT
- CRUD: Create(INSERT), Read(SELECT), Update(UPDATE), Delete(DELETE)
- ACID: Atomicity, Consistency, Isolation, Durability
- HTML = Markup Language (প্রোগ্রামিং নয়) | SQL = Query Language