Table of Contents

    Class - XII: SEMESTER – IV: Unit – 1: Database Management System: Section 5:SQL

    SQL

    Structured Query Language | Class 12 Bangla Medium Students-এর জন্য বিস্তারিত অধ্যায়

    ১. Introduction বা পরিচিতি

    SQL-এর পূর্ণরূপ হলো Structured Query Language। এটি relational database-এর সঙ্গে communicate করার একটি standard language। SQL ব্যবহার করে database তৈরি করা, table তৈরি করা, table structure পরিবর্তন করা, data insert করা, data update করা, data delete করা এবং প্রয়োজনীয় data query করে retrieve করা যায়।

    Relational database-এ data table আকারে থাকে। SQL সেই table-এর উপর operation চালানোর জন্য ব্যবহার করা হয়। যেমন school database-এ Student table, Teacher table, Subject table থাকতে পারে। SQL command ব্যবহার করে আমরা এই table-গুলো create, modify এবং query করতে পারি।

    সহজ সংজ্ঞা:
    SQL হলো একটি database language, যার সাহায্যে relational database-এর data create, store, update, delete এবং retrieve করা যায়।
    উদাহরণ:
    যদি Student table থেকে সব students-এর নাম দেখতে চাই, তাহলে SQL query লেখা যায়:
    SELECT Name FROM Student;

    ২. SQL-এর প্রধান কাজ

    • Database তৈরি করা।
    • Database select বা use করা।
    • Table তৈরি করা।
    • Table-এর structure modify করা।
    • Table-এ data insert করা।
    • Existing data update করা।
    • Unwanted data delete করা।
    • Condition অনুযায়ী data select করা।
    • Aggregate calculation করা, যেমন sum, average, count।
    • Multiple tables join করে data retrieve করা।

    ৩. SQL Commands-এর ধরন

    SQL commands সাধারণত কাজের ধরন অনুযায়ী বিভিন্ন category-তে ভাগ করা হয়। এই syllabus-এ মূলত DDL এবং DML গুরুত্বপূর্ণ।

    Command Type Full Form কাজ Examples
    DDL Data Definition Language Database object-এর structure তৈরি, পরিবর্তন বা delete করে। CREATE, ALTER, DROP
    DML Data Manipulation Language Table-এর data insert, update, delete করে। INSERT, UPDATE, DELETE
    DQL Data Query Language Database থেকে data retrieve করে। SELECT

    ৪. Data Definition Language বা DDL

    DDL commands database structure define বা modify করতে ব্যবহার করা হয়। Database, table, view ইত্যাদি object create, alter বা drop করার জন্য DDL ব্যবহার করা হয়।

    DDL:
    Data Definition Language হলো SQL command-এর set, যা database structure বা schema define, modify বা delete করতে ব্যবহৃত হয়।

    DDL Commands

    • CREATE DATABASE — নতুন database তৈরি করে।
    • CREATE TABLE — নতুন table তৈরি করে।
    • ALTER TABLE — table structure পরিবর্তন করে।
    • DROP DATABASE — database delete করে।
    • DROP TABLE — table delete করে।

    ৫. Data Manipulation Language বা DML

    DML commands table-এর data manipulate করতে ব্যবহার করা হয়। Data insert, update এবং delete করার জন্য DML ব্যবহার হয়।

    DML:
    Data Manipulation Language হলো SQL command-এর set, যা table-এর data insert, update এবং delete করতে ব্যবহৃত হয়।

    DML Commands

    • INSERT — table-এ নতুন record যোগ করে।
    • UPDATE — existing record modify করে।
    • DELETE — table থেকে record delete করে।

    ৬. SQL Data Types

    Data type বলে দেয় কোনো column-এ কী ধরনের value store করা যাবে। SQL table তৈরি করার সময় প্রতিটি column-এর data type define করতে হয়।

    Data Type বাংলা ব্যাখ্যা উদাহরণ
    CHAR(n) Fixed length character data store করে। n হলো length। CHAR(5) → 'A101 '
    VARCHAR(n) Variable length character data store করে। VARCHAR(50) → Name
    INT Integer বা পূর্ণসংখ্যা store করে। 101, 25, 500
    FLOAT Decimal number store করে। 85.75, 10.5
    DATE Date value store করে। '2026-05-26'
    Exam Note:
    CHAR fixed length, VARCHAR variable length। Name, address-এর জন্য VARCHAR বেশি ব্যবহৃত হয়।

    ৭. SQL Constraints

    Constraints হলো rules, যা table-এর data valid ও reliable রাখতে সাহায্য করে। Constraint ব্যবহার করলে invalid data entry prevent করা যায়।

    Constraint বাংলা ব্যাখ্যা উদাহরণ
    NOT NULL Column blank বা NULL হতে দেয় না। Name VARCHAR(50) NOT NULL
    UNIQUE Column-এর সব values unique হবে। Email VARCHAR(100) UNIQUE
    PRIMARY KEY প্রতিটি row uniquely identify করে। এটি NOT NULL এবং UNIQUE-এর combination। Roll_No INT PRIMARY KEY

    ৮. Database Commands

    ৮.১ Create Database

    CREATE DATABASE SchoolDB;

    এই command SchoolDB নামে নতুন database তৈরি করে।

    ৮.২ Show Databases

    SHOW DATABASES;

    এই command server-এ থাকা databases-এর list দেখায়।

    ৮.৩ Use Database

    USE SchoolDB;

    এই command SchoolDB database select করে। এরপর table creation বা query এই database-এর মধ্যে হবে।

    ৮.৪ Drop Database

    DROP DATABASE SchoolDB;
    সতর্কতা:
    DROP DATABASE database সম্পূর্ণ delete করে। তাই practical system-এ এই command খুব carefully ব্যবহার করতে হয়।

    ৯. Table Commands

    ৯.১ Show Tables

    SHOW TABLES;

    Selected database-এর সব tables দেখায়।

    ৯.২ Create Table

    CREATE TABLE Student (
        Roll_No INT PRIMARY KEY,
        Name VARCHAR(50) NOT NULL,
        Class VARCHAR(10),
        Marks FLOAT,
        DOB DATE
    );

    এখানে Student নামে table তৈরি করা হয়েছে। Roll_No primary key, Name not null, Marks float এবং DOB date type।

    ৯.৩ Describe Table

    DESC Student;

    অথবা:

    DESCRIBE Student;

    এই command Student table-এর structure দেখায়, যেমন columns, data types, null allowed কি না, key আছে কি না।

    ৯.৪ Drop Table

    DROP TABLE Student;

    Student table সম্পূর্ণ delete করে।

    ১০. ALTER TABLE Command

    ALTER TABLE command table-এর structure modify করতে ব্যবহার করা হয়।

    ১০.১ Add an Attribute বা Column Add করা

    ALTER TABLE Student
    ADD Email VARCHAR(100);

    Student table-এ Email নামে নতুন column add হবে।

    ১০.২ Remove an Attribute বা Column Remove করা

    ALTER TABLE Student
    DROP COLUMN Email;

    Student table থেকে Email column remove হবে।

    ১০.৩ Add Primary Key

    যদি table create করার সময় primary key না দেওয়া হয়, পরে add করা যায়।

    ALTER TABLE Student
    ADD PRIMARY KEY (Roll_No);

    ১০.৪ Remove Primary Key

    ALTER TABLE Student
    DROP PRIMARY KEY;
    Note:
    Primary key remove করার syntax DBMS অনুযায়ী একটু ভিন্ন হতে পারে। MySQL-এ সাধারণত DROP PRIMARY KEY ব্যবহার করা হয়।

    ১১. INSERT Command

    INSERT command table-এ নতুন data বা record যোগ করতে ব্যবহার করা হয়।

    INSERT INTO Student (Roll_No, Name, Class, Marks, DOB)
    VALUES (101, 'Riya', 'XII', 88.5, '2008-05-12');

    এখানে Student table-এ Riya নামের student-এর record insert করা হয়েছে।

    Multiple Rows Insert

    INSERT INTO Student (Roll_No, Name, Class, Marks, DOB)
    VALUES
    (102, 'Arman', 'XII', 76.0, '2008-02-10'),
    (103, 'Sohini', 'XII', 91.5, '2008-09-22');

    ১২. SELECT Command

    SELECT command database থেকে data retrieve করতে ব্যবহার করা হয়।

    ১২.১ Select All Columns

    SELECT * FROM Student;

    Student table-এর সব columns এবং সব rows দেখাবে।

    ১২.২ Select Specific Columns

    SELECT Name, Marks FROM Student;

    শুধু Name এবং Marks columns দেখাবে।

    ১৩. WHERE Clause

    WHERE clause condition অনুযায়ী rows filter করতে ব্যবহার করা হয়।

    SELECT * FROM Student
    WHERE Marks > 80;

    যেসব student-এর Marks 80-এর বেশি, তাদের records দেখাবে।

    ১৪. DELETE Command

    DELETE command table থেকে record delete করতে ব্যবহার করা হয়।

    DELETE FROM Student
    WHERE Roll_No = 103;

    Roll_No 103-এর student record delete করবে।

    সতর্কতা:
    WHERE clause ছাড়া DELETE command দিলে table-এর সব records delete হয়ে যেতে পারে।
    DELETE FROM Student;

    এই command Student table-এর সব rows delete করবে, কিন্তু table structure থাকবে।

    ১৫. UPDATE Command

    UPDATE command existing record modify করতে ব্যবহার করা হয়।

    UPDATE Student
    SET Marks = 92
    WHERE Roll_No = 101;

    Roll_No 101 student-এর Marks update করে 92 করা হবে।

    সতর্কতা:
    WHERE clause ছাড়া UPDATE command দিলে table-এর সব rows update হয়ে যেতে পারে।

    ১৬. SQL Operators

    SQL operators condition, calculation এবং logical comparison করতে ব্যবহার করা হয়।

    ১৬.১ Mathematical বা Arithmetic Operators

    Operator Meaning Example
    + Addition Marks + 5
    - Subtraction Marks - 5
    * Multiplication Price * Quantity
    / Division Total / 2
    % Modulus বা remainder Marks % 2
    SELECT Name, Marks, Marks + 5 AS Updated_Marks
    FROM Student;

    ১৬.২ Relational বা Comparison Operators

    Operator Meaning Example
    = Equal to Marks = 80
    <> বা != Not equal to Class <> 'XI'
    > Greater than Marks > 80
    < Less than Marks < 40
    >= Greater than or equal Marks >= 90
    <= Less than or equal Marks <= 50

    ১৬.৩ Logical Operators

    Operator Meaning Example
    AND দুই condition true হলে result true। Marks > 80 AND Class = 'XII'
    OR যেকোনো একটি condition true হলে result true। Marks > 90 OR Marks < 40
    NOT Condition-এর opposite result দেয়। NOT Class = 'XI'
    SELECT * FROM Student
    WHERE Marks > 80 AND Class = 'XII';

    ১৭. Aliasing

    Aliasing ব্যবহার করে column বা table-এর temporary name দেওয়া যায়। এটি output readable করতে সাহায্য করে। SQL-এ alias-এর জন্য সাধারণত AS keyword ব্যবহার করা হয়।

    SELECT Name AS Student_Name, Marks AS Final_Marks
    FROM Student;

    Output-এ Name column Student_Name নামে এবং Marks column Final_Marks নামে দেখাবে।

    ১৮. DISTINCT Clause

    DISTINCT clause duplicate values remove করে unique values দেখায়।

    SELECT DISTINCT Class
    FROM Student;

    Student table-এ যত class আছে, duplicate বাদ দিয়ে unique class names দেখাবে।

    ১৯. IN Operator

    IN operator multiple values-এর মধ্যে match check করতে ব্যবহার করা হয়।

    SELECT * FROM Student
    WHERE Class IN ('XI', 'XII');

    Class XI বা XII-এর students দেখাবে।

    ২০. BETWEEN Operator

    BETWEEN operator কোনো value নির্দিষ্ট range-এর মধ্যে আছে কি না check করে।

    SELECT * FROM Student
    WHERE Marks BETWEEN 60 AND 90;

    Marks 60 থেকে 90-এর মধ্যে হলে সেই records দেখাবে।

    ২১. ORDER BY Clause

    ORDER BY clause result sort করতে ব্যবহার করা হয়। Ascending order-এর জন্য ASC এবং descending order-এর জন্য DESC ব্যবহার করা হয়।

    SELECT * FROM Student
    ORDER BY Marks ASC;
    SELECT * FROM Student
    ORDER BY Marks DESC;

    প্রথম query Marks ascending order-এ এবং দ্বিতীয় query descending order-এ result দেখাবে।

    ২২. Meaning of NULL

    SQL-এ NULL মানে unknown, missing বা not available value। NULL zero নয়, blank string নয় এবং space নয়। NULL মানে value নেই বা value জানা নেই।

    NULL:
    NULL হলো এমন value, যা unknown, unavailable বা missing information বোঝায়।

    ২২.১ IS NULL

    SELECT * FROM Student
    WHERE Phone IS NULL;

    যেসব student-এর Phone value নেই, তাদের records দেখাবে।

    ২২.২ IS NOT NULL

    SELECT * FROM Student
    WHERE Phone IS NOT NULL;

    যেসব student-এর Phone value আছে, তাদের records দেখাবে।

    Important:
    NULL check করার জন্য = NULL ব্যবহার করা হয় না। ব্যবহার করতে হয় IS NULL বা IS NOT NULL

    ২৩. LIKE Operator

    LIKE operator pattern matching-এর জন্য ব্যবহার করা হয়। সাধারণত wildcard characters ব্যবহার করা হয়।

    Wildcard Meaning Example
    % Zero বা more characters represent করে। 'A%'
    _ Exactly one character represent করে। 'R_ya'
    SELECT * FROM Student
    WHERE Name LIKE 'R%';

    যেসব students-এর Name R দিয়ে শুরু, তাদের records দেখাবে।

    SELECT * FROM Student
    WHERE Name LIKE '%a';

    যেসব students-এর Name a দিয়ে শেষ, তাদের records দেখাবে।

    ২৪. Aggregate Functions

    Aggregate functions অনেক rows-এর উপর calculation করে single result দেয়।

    Function Meaning Example
    MAX() Maximum value দেয়। MAX(Marks)
    MIN() Minimum value দেয়। MIN(Marks)
    AVG() Average value দেয়। AVG(Marks)
    SUM() Total sum দেয়। SUM(Marks)
    COUNT() Rows count করে। COUNT(*)
    SELECT MAX(Marks) FROM Student;
    SELECT MIN(Marks) FROM Student;
    SELECT AVG(Marks) FROM Student;
    SELECT SUM(Marks) FROM Student;
    SELECT COUNT(*) FROM Student;

    ২৫. GROUP BY Clause

    GROUP BY clause same values অনুযায়ী rows group করে। Aggregate functions-এর সঙ্গে GROUP BY বেশি ব্যবহৃত হয়।

    SELECT Class, AVG(Marks) AS Average_Marks
    FROM Student
    GROUP BY Class;

    প্রতিটি Class অনুযায়ী average marks দেখাবে।

    ২৬. HAVING Clause

    HAVING clause group-এর উপর condition apply করতে ব্যবহৃত হয়। WHERE row-level condition apply করে, আর HAVING group-level condition apply করে।

    SELECT Class, AVG(Marks) AS Average_Marks
    FROM Student
    GROUP BY Class
    HAVING AVG(Marks) > 75;

    যেসব class-এর average marks 75-এর বেশি, সেগুলো দেখাবে।

    WHERE vs HAVING:
    WHERE group করার আগে rows filter করে। HAVING group করার পরে groups filter করে।

    ২৭. Joins in SQL

    Join ব্যবহার করে দুই বা ততোধিক tables থেকে related data combine করে retrieve করা হয়। Relational database-এ data বিভিন্ন table-এ ভাগ করে রাখা হয়। তাই related information আনতে join দরকার হয়।

    Sample Tables

    Student Table

    Roll_No Name Class_ID
    101 Riya 1
    102 Arman 2

    Class Table

    Class_ID Class_Name
    1 XII Science
    2 XII Commerce

    ২৮. Cartesian Product on Two Tables

    Cartesian product দুই table-এর প্রতিটি row-এর সঙ্গে অন্য table-এর প্রতিটি row combine করে। যদি first table-এ 2 rows এবং second table-এ 2 rows থাকে, result হবে 2 × 2 = 4 rows।

    SELECT *
    FROM Student, Class;

    এই query Student এবং Class table-এর cartesian product তৈরি করবে। Practical use-এ সাধারণত condition ছাড়া cartesian product avoid করা হয়, কারণ result অনেক বড় এবং meaningless হতে পারে।

    ২৯. Equi-Join

    Equi-Join হলো এমন join যেখানে equality condition ব্যবহার করা হয়। Common বা related column-এর value equal হলে rows combine হয়।

    SELECT Student.Roll_No, Student.Name, Class.Class_Name
    FROM Student, Class
    WHERE Student.Class_ID = Class.Class_ID;

    এখানে Student table-এর Class_ID এবং Class table-এর Class_ID match করলে result দেখানো হবে।

    ৩০. Natural Join

    Natural Join automatically same name-এর common column-এর উপর join করে। এতে duplicate common column সাধারণত একবারই দেখানো হয়।

    SELECT *
    FROM Student
    NATURAL JOIN Class;

    Student এবং Class table-এ common column Class_ID থাকলে natural join সেই column-এর উপর ভিত্তি করে result তৈরি করবে।

    সতর্কতা:
    Natural Join ব্যবহার করার সময় common column name ঠিক আছে কি না খেয়াল করতে হয়। ভুল common column থাকলে unexpected result আসতে পারে।

    ৩১. Complete SQL Practice Example

    নিচের example-টি students-এর জন্য complete practice হিসেবে ব্যবহার করা যেতে পারে।

    CREATE DATABASE SchoolDB;
    USE SchoolDB;
    
    CREATE TABLE Student (
        Roll_No INT PRIMARY KEY,
        Name VARCHAR(50) NOT NULL,
        Class VARCHAR(10),
        Marks FLOAT,
        DOB DATE
    );
    
    INSERT INTO Student VALUES
    (101, 'Riya', 'XII', 88.5, '2008-05-12'),
    (102, 'Arman', 'XII', 76.0, '2008-02-10'),
    (103, 'Sohini', 'XII', 91.5, '2008-09-22'),
    (104, 'Rahul', 'XI', 65.0, '2009-01-15');
    
    SELECT * FROM Student;
    
    SELECT Name, Marks
    FROM Student
    WHERE Marks > 80
    ORDER BY Marks DESC;
    
    SELECT Class, AVG(Marks) AS Average_Marks
    FROM Student
    GROUP BY Class
    HAVING AVG(Marks) > 70;

    ৩২. Important Differences

    DDL এবং DML-এর পার্থক্য

    DDL DML
    Database structure নিয়ে কাজ করে। Table-এর data নিয়ে কাজ করে।
    CREATE, ALTER, DROP INSERT, UPDATE, DELETE
    Table/database create বা modify করে। Records insert/update/delete করে।
    Example: CREATE TABLE Student Example: INSERT INTO Student

    DELETE এবং DROP-এর পার্থক্য

    DELETE DROP
    Table থেকে records delete করে। Table বা database object সম্পূর্ণ delete করে।
    Table structure থাকে। Table structure-ও delete হয়।
    WHERE clause ব্যবহার করা যায়। WHERE clause ব্যবহার করা যায় না।
    DML command। DDL command।

    WHERE এবং HAVING-এর পার্থক্য

    WHERE HAVING
    Rows filter করে। Groups filter করে।
    GROUP BY-এর আগে কাজ করে। GROUP BY-এর পরে কাজ করে।
    Aggregate function সরাসরি condition হিসেবে সাধারণত ব্যবহার করা হয় না। Aggregate function-এর উপর condition দেওয়া যায়।
    Example: WHERE Marks > 80 Example: HAVING AVG(Marks) > 75

    ৩৩. Common Mistakes in SQL

    • String value single quotes-এর মধ্যে না লেখা। যেমন 'Riya'
    • WHERE clause ছাড়া UPDATE বা DELETE ব্যবহার করা।
    • NULL check করার জন্য = NULL ব্যবহার করা। সঠিক হলো IS NULL
    • GROUP BY ছাড়া aggregate query ভুলভাবে লেখা।
    • Primary key duplicate insert করার চেষ্টা করা।
    • NOT NULL column blank রেখে insert করা।
    • DROP এবং DELETE confuse করা।
    • Natural join-এ common column ভুল বোঝা।
    • BETWEEN range inclusive কিনা না জানা। সাধারণত BETWEEN দুই boundary value-সহ range check করে।

    ৩৪. Chapter Summary

    SQL হলো relational database-এর standard language। SQL ব্যবহার করে database create করা, table create করা, structure modify করা, data insert, update, delete এবং retrieve করা যায়। SQL commands-এর মধ্যে DDL database structure নিয়ে কাজ করে, DML table-এর data manipulate করে এবং SELECT query data retrieve করে।

    SQL data types যেমন CHAR, VARCHAR, INT, FLOAT, DATE column-এর value type define করে। Constraints যেমন NOT NULL, UNIQUE এবং PRIMARY KEY data validity ও uniqueness বজায় রাখে। CREATE DATABASE, USE DATABASE, SHOW DATABASES, DROP DATABASE, CREATE TABLE, ALTER TABLE, DROP TABLE ইত্যাদি database এবং table management-এর জন্য ব্যবহৃত হয়।

    SELECT query-এর সঙ্গে WHERE, IN, BETWEEN, ORDER BY, DISTINCT, LIKE, IS NULL, IS NOT NULL ইত্যাদি clauses ব্যবহার করে data filter ও arrange করা যায়। Aggregate functions যেমন MAX, MIN, AVG, SUM, COUNT calculation করতে সাহায্য করে। GROUP BY data group করে এবং HAVING group-এর উপর condition apply করে। Join ব্যবহার করে multiple tables থেকে related data retrieve করা যায়। Cartesian product, equi-join এবং natural join SQL-এর গুরুত্বপূর্ণ join concepts।

    ৩৫. Important Key Points for Class 12

    • SQL-এর পূর্ণরূপ Structured Query Language।
    • DDL database structure define করে।
    • DML table-এর data manipulate করে।
    • CHAR fixed length, VARCHAR variable length data store করে।
    • PRIMARY KEY unique এবং not null।
    • NOT NULL column blank হতে দেয় না।
    • UNIQUE duplicate value prevent করে।
    • SELECT data retrieve করে।
    • WHERE row filter করে।
    • DISTINCT duplicate values remove করে।
    • NULL মানে unknown বা missing value।
    • NULL check করার জন্য IS NULL ব্যবহার করা হয়।
    • LIKE pattern matching করে।
    • GROUP BY same values group করে।
    • HAVING group-এর উপর condition apply করে।
    • Equi-join equality condition ব্যবহার করে।
    • Natural join same name common column-এর উপর join করে।

    ৩৬. Short Questions and Answers

    প্রশ্ন ১: SQL কী?

    উত্তর: SQL হলো Structured Query Language, যার মাধ্যমে relational database-এর data create, manipulate এবং retrieve করা যায়।

    প্রশ্ন ২: DDL কী?

    উত্তর: DDL বা Data Definition Language database structure create, alter এবং drop করতে ব্যবহৃত হয়।

    প্রশ্ন ৩: DML কী?

    উত্তর: DML বা Data Manipulation Language table-এর data insert, update এবং delete করতে ব্যবহৃত হয়।

    প্রশ্ন ৪: PRIMARY KEY কী?

    উত্তর: PRIMARY KEY হলো এমন constraint যা table-এর প্রতিটি row uniquely identify করে এবং null বা duplicate হতে পারে না।

    প্রশ্ন ৫: NOT NULL constraint কী?

    উত্তর: NOT NULL constraint কোনো column-কে blank বা NULL value গ্রহণ করতে দেয় না।

    প্রশ্ন ৬: DISTINCT কী করে?

    উত্তর: DISTINCT duplicate values remove করে unique values দেখায়।

    প্রশ্ন ৭: NULL কী?

    উত্তর: NULL মানে unknown, unavailable বা missing value।

    প্রশ্ন ৮: LIKE operator কেন ব্যবহৃত হয়?

    উত্তর: LIKE operator pattern matching-এর জন্য ব্যবহৃত হয়।

    প্রশ্ন ৯: GROUP BY কী?

    উত্তর: GROUP BY same values অনুযায়ী rows group করে, সাধারণত aggregate functions-এর সঙ্গে ব্যবহৃত হয়।

    প্রশ্ন ১০: HAVING clause কী?

    উত্তর: HAVING clause group-এর উপর condition apply করে।

    প্রশ্ন ১১: Equi-Join কী?

    উত্তর: Equi-Join হলো এমন join যেখানে equality condition ব্যবহার করে দুই table-এর related rows combine করা হয়।

    প্রশ্ন ১২: Natural Join কী?

    উত্তর: Natural Join same name common column-এর উপর automatically join করে।

    ৩৭. Long Answer Type Questions

    প্রশ্ন ১: SQL-এর পরিচিতি এবং DDL ও DML commands ব্যাখ্যা করো।

    উত্তর: SQL বা Structured Query Language হলো relational database-এর সঙ্গে communicate করার standard language। SQL ব্যবহার করে database তৈরি, table তৈরি, data insert, update, delete এবং retrieve করা যায়। SQL-এর commands কাজের ধরন অনুযায়ী বিভিন্ন ভাগে বিভক্ত। এর মধ্যে DDL এবং DML খুব গুরুত্বপূর্ণ।

    DDL বা Data Definition Language database-এর structure define ও modify করতে ব্যবহার করা হয়। CREATE command database বা table তৈরি করে, ALTER command table structure পরিবর্তন করে এবং DROP command database object delete করে। অন্যদিকে DML বা Data Manipulation Language table-এর actual data নিয়ে কাজ করে। INSERT command নতুন record insert করে, UPDATE command existing record modify করে এবং DELETE command record delete করে।

    প্রশ্ন ২: SQL data types এবং constraints ব্যাখ্যা করো।

    উত্তর: SQL data type column-এ কী ধরনের value store করা যাবে তা define করে। CHAR(n) fixed length character data store করে, VARCHAR(n) variable length character data store করে, INT integer value store করে, FLOAT decimal value store করে এবং DATE date value store করে।

    Constraints হলো rules, যা table-এর data valid ও reliable রাখতে সাহায্য করে। NOT NULL constraint column blank হতে দেয় না। UNIQUE constraint column-এর values duplicate হতে দেয় না। PRIMARY KEY constraint প্রতিটি row uniquely identify করে এবং এটি duplicate বা null হতে পারে না। Constraints database-এর data accuracy এবং integrity বজায় রাখতে সাহায্য করে।

    প্রশ্ন ৩: SELECT command-এর বিভিন্ন clauses ব্যাখ্যা করো।

    উত্তর: SELECT command database থেকে data retrieve করতে ব্যবহৃত হয়। SELECT * FROM Student command table-এর সব data দেখায়। Specific columns দেখতে SELECT Name, Marks FROM Student লেখা যায়। WHERE clause condition অনুযায়ী rows filter করে। DISTINCT duplicate values remove করে। IN operator multiple values-এর মধ্যে match check করে এবং BETWEEN operator range check করে।

    ORDER BY clause result sort করে। ASC ascending order এবং DESC descending order বোঝায়। LIKE operator pattern matching-এর জন্য ব্যবহার হয়। NULL value check করার জন্য IS NULL এবং IS NOT NULL ব্যবহার করা হয়। Aggregate functions যেমন MAX, MIN, AVG, SUM এবং COUNT calculation করতে ব্যবহৃত হয়। GROUP BY same values group করে এবং HAVING group-এর উপর condition apply করে।

    প্রশ্ন ৪: SQL joins ব্যাখ্যা করো।

    উত্তর: SQL joins ব্যবহার করে দুই বা ততোধিক tables থেকে related data retrieve করা হয়। Relational database-এ data সাধারণত বিভিন্ন table-এ ভাগ করে রাখা হয়, তাই combined information পেতে join দরকার হয়। Cartesian product দুই table-এর প্রতিটি row-এর সঙ্গে অন্য table-এর প্রতিটি row combine করে। এটি condition ছাড়া অনেক বড় result তৈরি করতে পারে।

    Equi-join equality condition ব্যবহার করে related rows combine করে। যেমন Student.Class_ID = Class.Class_ID condition দিয়ে student-এর class name বের করা যায়। Natural join same name common column-এর উপর automatically join করে এবং duplicate common column সাধারণত একবার দেখায়। Join database query-এর একটি গুরুত্বপূর্ণ concept, বিশেষ করে multiple related tables থেকে report তৈরি করার জন্য।

    প্রশ্ন ৫: GROUP BY এবং HAVING clause উদাহরণসহ ব্যাখ্যা করো।

    উত্তর: GROUP BY clause same values অনুযায়ী rows group করতে ব্যবহৃত হয়। Aggregate functions-এর সঙ্গে GROUP BY বেশি ব্যবহৃত হয়। যেমন প্রতিটি class-এর average marks বের করতে Class column-এর উপর GROUP BY ব্যবহার করা যায়।

    SELECT Class, AVG(Marks)
    FROM Student
    GROUP BY Class;

    HAVING clause group-এর উপর condition apply করে। WHERE row-level condition apply করে, কিন্তু HAVING group-level condition apply করে। যেমন যেসব class-এর average marks 75-এর বেশি, সেগুলো দেখতে:

    SELECT Class, AVG(Marks)
    FROM Student
    GROUP BY Class
    HAVING AVG(Marks) > 75;

    ৩৮. Conclusion বা উপসংহার

    SQL relational database ব্যবহারের মূল language। Database তৈরি, table তৈরি, data insert, update, delete, এবং query করার জন্য SQL অপরিহার্য। SQL-এর DDL, DML, constraints, operators, clauses, aggregate functions এবং joins ভালোভাবে জানলে database management সহজ হয়।

    Class 12 students-এর জন্য SQL শেখা খুব গুরুত্বপূর্ণ, কারণ এটি DBMS-এর practical part। SQL commands practice করলে relational model, integrity constraints, primary key, foreign key এবং joins-এর concept আরও পরিষ্কার হয়। Real-life system যেমন school management, banking, hospital, library এবং e-commerce—সব ক্ষেত্রেই SQL ব্যবহার করা হয়।