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 ব্যবহার করা হয়।
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 ব্যবহার হয়।
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' |
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;
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 হলো এমন 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 দেখাবে।
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 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 ব্যবহার করা হয়।