৬.৫ এসকিউএল (SQL) পরিচিতি ও DDL কমান্ড (Introduction to SQL and DDL)
এইচএসসি আইসিটি অধ্যায় ৬: এসকিউএল (SQL) এর পরিচিতি। ডেটা টাইপ এবং DDL কমান্ড (CREATE, ALTER, DROP) দিয়ে টেবিল তৈরির পদ্ধতি।
৬.৫ এসকিউএল (SQL) পরিচিতি ও DDL কমান্ড
- এসকিউএল (SQL) পরিচিতি ও DDL কমান্ড
- কম্পিউটারের সাথে কথা বলার ভাষা
- SQL (Structured Query Language) কী?
- SQL কমান্ডের প্রকারভেদ
- SQL ডেটা টাইপ (Data Types) - ১
- SQL ডেটা টাইপ (Data Types) - ২
- DDL (Data Definition Language) কী?
- CREATE TABLE কমান্ড: সিনট্যাক্স
- উদাহরণ: Student টেবিল তৈরি
- ALTER TABLE: নতুন কলাম যোগ করা
- ALTER TABLE: কলাম পরিবর্তন (Modify)
- DROP এবং TRUNCATE কমান্ড
- সারসংক্ষেপ
এসকিউএল (SQL) পরিচিতি, ডেটা টাইপ ও DDL কমান্ড: বিস্তারিত আলোচনা ও পরীক্ষার প্রস্তুতি
বর্তমান তথ্যপ্রযুক্তির যুগে ডেটাবেজ ম্যানেজমেন্ট সিস্টেম (DBMS) একটি অপরিহার্য অংশ। আর এই ডেটাবেজের সাথে যোগাযোগ করার জন্য যে ভাষাটি সারা বিশ্বে স্ট্যান্ডার্ড হিসেবে ব্যবহৃত হয়, সেটি হলো এসকিউএল বা SQL (Structured Query Language)। একজন ব্যবহারকারী এবং ডেটাবেজের মধ্যে সেতুবন্ধন তৈরি করে এই ভাষা। আজকের পাঠে আমরা এসকিউএল-এর পরিচিতি, এর বিভিন্ন ডেটা টাইপ এবং ডেটাবেজ তৈরির জন্য ব্যবহৃত DDL কমান্ডগুলো সম্পর্কে বিস্তারিত জানব। এই পাঠটি এইচএসসি আইসিটি পরীক্ষার জন্য অত্যন্ত গুরুত্বপূর্ণ, কারণ এখান থেকে প্রতি বছরই সৃজনশীল এবং বহুনির্বাচনী প্রশ্ন থাকে।
এসকিউএল (SQL) পরিচিতি ও বৈশিষ্ট্য
মানুষের যেমন ভাব বিনিময়ের জন্য ভাষা আছে (যেমন বাংলা বা ইংরেজি), তেমনি ডেটাবেজের সাথে কথা বলার বা তাকে নির্দেশ দেওয়ার জন্যও একটি ভাষা আছে। সেটিই হলো SQL।
সংজ্ঞা (Definition): এসকিউএল (SQL - Structured Query Language) হলো একটি ডোমেইন-স্পেসিফিক ল্যাঙ্গুয়েজ যা রিলেশনাল ডেটাবেজ ম্যানেজমেন্ট সিস্টেমে (RDBMS) ডেটা সংরক্ষণ, পুনরুদ্ধার, পরিবর্তন এবং ব্যবস্থাপনার জন্য ব্যবহৃত হয়।
এটি কোনো পূর্ণাঙ্গ প্রোগ্রামিং ল্যাঙ্গুয়েজ (যেমন C বা Java) নয়, বরং এটি একটি Non-Procedural Language বা Query Language। এর অর্থ হলো, এই ভাষায় কম্পিউটারকে শুধু বলে দিতে হয় "কী করতে হবে" (What to do), কিন্তু "কীভাবে করতে হবে" (How to do) তা বলে দেওয়ার প্রয়োজন হয় না।
এসকিউএল-এর সুবিধাসমূহ
- Case Insensitive: এসকিউএল কেস সেনসিটিভ নয়। অর্থাৎ,
SELECT,Selectবাselectলিখলে একই কাজ করবে। তবে স্ট্যান্ডার্ড হলো কমান্ডগুলো বড় হাতের অক্ষরে (UPPERCASE) লেখা। - সহজ সিনট্যাক্স: এর কমান্ডগুলো ইংরেজি ভাষার মতো সহজ, যা দ্রুত শেখা যায়।
- স্ট্যান্ডার্ড: এটি ANSI (American National Standards Institute) এবং ISO স্বীকৃত স্ট্যান্ডার্ড ভাষা।
মনে রাখা জরুরি:
SQL-এর প্রতিটি কমান্ড বা স্টেটমেন্টের শেষে অবশ্যই সেমিকোলন (;) ব্যবহার করতে হবে। এটি স্টেটমেন্টের সমাপ্তি নির্দেশ করে।
এসকিউএল কমান্ডের প্রকারভেদ
কাজের ধরণ অনুযায়ী SQL কমান্ডগুলোকে প্রধানত ৪টি ভাগে ভাগ করা যায়:
| প্রকারভেদ | পূর্ণরূপ | কাজ | উদাহরণ কমান্ড |
|---|---|---|---|
| DDL | Data Definition Language | ডেটাবেজ বা টেবিলের কাঠামো তৈরি ও পরিবর্তন করা। | CREATE, ALTER, DROP, TRUNCATE |
| DML | Data Manipulation Language | টেবিলের ভেতরের ডেটা নিয়ে কাজ করা। | SELECT, INSERT, UPDATE, DELETE |
| DCL | Data Control Language | ডেটাবেজের নিরাপত্তা ও অনুমতি নিয়ন্ত্রণ করা। | GRANT, REVOKE |
| TCL | Transaction Control Language | ডেটাবেজের লেনদেন নিয়ন্ত্রণ করা। | COMMIT, ROLLBACK |
আজকের পাঠে আমরা মূলত DDL (Data Definition Language) নিয়ে বিস্তারিত আলোচনা করব।
এসকিউএল ডেটা টাইপ (SQL Data Types)
একটি ডেটাবেজ টেবিল তৈরি করার সময় সবচেয়ে গুরুত্বপূর্ণ সিদ্ধান্ত হলো প্রতিটি কলাম বা ফিল্ডে কী ধরণের ডেটা থাকবে তা নির্ধারণ করা। একেই বলা হয় ডেটা টাইপ। সঠিক ডেটা টাইপ নির্বাচন না করলে ডেটাবেজের মেমোরি অপচয় হয় এবং প্রসেসিং ধীরগতির হয়ে যায়।
নিচে এইচএসসি সিলেবাস অনুযায়ী বহুল ব্যবহৃত কিছু ডেটা টাইপ আলোচনা করা হলো:
১. নিউমেরিক ডেটা টাইপ (Numeric Types)
সংখ্যাবাচক ডেটা সংরক্ষণের জন্য ব্যবহৃত হয়।
- INT / INTEGER: পূর্ণসংখ্যা (যেমন: ১০, ৫০, ১০০) সংরক্ষণের জন্য।
- FLOAT / NUMBER(p,s): দশমিক বা ভগ্নাংশ (যেমন: ৩.১৪, ১০.৫০) সংরক্ষণের জন্য। NUMBER(p,s)-এ p হলো মোট অঙ্ক সংখ্যা এবং s হলো দশমিকের পরের অঙ্ক সংখ্যা।
২. ক্যারেক্টার ডেটা টাইপ (Character Types)
অক্ষর, শব্দ বা বাক্য সংরক্ষণের জন্য ব্যবহৃত হয়। এখানে দুটি প্রধান টাইপ রয়েছে যা পরীক্ষায় প্রায়ই তুলনা করতে বলা হয়।
৩. তারিখ ও সময় (Date Types)
- DATE: তারিখ সংরক্ষণের জন্য। সাধারণ ফরম্যাট হলো
DD-MON-YYYY(যেমন: 01-JAN-2023) বাYYYY-MM-DD।
৪. লজিক্যাল ডেটা (Boolean Types)
- BOOLEAN: সত্য (True) বা মিথ্যা (False) সংরক্ষণের জন্য।
কনস্ট্রেইন্টস (Constraints) বা শর্তাবলী
টেবিল তৈরি করার সময় ডেটার সঠিকতা ও নির্ভরযোগ্যতা বজায় রাখার জন্য কিছু নিয়ম বা শর্ত আরোপ করা হয়, একে Constraints বলা হয়।
সংজ্ঞা (Constraints): কনস্ট্রেইন্ট হলো ডেটাবেজ টেবিলের কলামের ওপর আরোপিত বিশেষ নিয়ম যা নির্ধারণ করে ওই কলামে কী ধরণের ডেটা ইনপুট দেওয়া যাবে বা যাবে না।
গুরুত্বপূর্ণ কিছু কনস্ট্রেইন্টস:
১. PRIMARY KEY: এটি দ্বারা টেবিলের প্রতিটি রেকর্ডকে অদ্বিতীয়ভাবে (Uniquely) শনাক্ত করা যায়। এটি UNIQUE এবং NOT NULL এর সংমিশ্রণ। একটি টেবিলে কেবল একটি প্রাইমারি কি থাকতে পারে।
২. NOT NULL: এই কনস্ট্রেইন্ট থাকলে ওই কলামটি খালি বা ফাঁকা রাখা যাবে না। অবশ্যই ডেটা দিতে হবে।
৩. UNIQUE: এই কলামের প্রতিটি মান ভিন্ন হতে হবে, অর্থাৎ ডুপ্লিকেট ভ্যালু দেওয়া যাবে না।
DDL কমান্ড-১: টেবিল তৈরি (CREATE TABLE)
ডেটাবেজে ডেটা রাখার জন্য প্রথমে একটি কাঠামো বা টেবিল তৈরি করতে হয়। এর জন্য CREATE TABLE কমান্ড ব্যবহৃত হয়। এটি পরীক্ষার জন্য সবচেয়ে গুরুত্বপূর্ণ কমান্ড।
সিনট্যাক্স (Syntax):
CREATE TABLE table_name (
column1 data_type(size) [constraint],
column2 data_type(size) [constraint],
....
columnN data_type(size)
);
বাস্তব উদাহরণ (Practical Example):
ধরি, একটি কলেজের ছাত্রদের জন্য Student নামে একটি টেবিল তৈরি করতে হবে যেখানে Roll (পূর্ণসংখ্যা ও প্রাইমারি কি), Name (নাম), GPA (দশমিক সংখ্যা) এবং AdmissionDate (তারিখ) থাকবে।
SQL কোড:
CREATE TABLE Student (
Roll INT PRIMARY KEY,
Name VARCHAR(50) NOT NULL,
GPA FLOAT,
AdmissionDate DATE
);
ব্যাখ্যা:
- CREATE TABLE Student: 'Student' নামে একটি নতুন টেবিল তৈরির নির্দেশ।
- Roll INT PRIMARY KEY: রোলের জন্য পূর্ণসংখ্যা এবং এটি হবে প্রাইমারি কি (কারও রোল ডুপ্লিকেট হবে না)।
- Name VARCHAR(50) NOT NULL: নামের জন্য ৫০ অক্ষরের জায়গা রাখা হয়েছে এবং নাম খালি রাখা যাবে না।
- GPA FLOAT: জিপিএ দশমিক হতে পারে, তাই ফ্লোট।
- AdmissionDate DATE: ভর্তির তারিখের জন্য ডেট টাইপ।
- শেষে ; দিয়ে কমান্ড শেষ করা হয়েছে।

পরীক্ষার টিপস (Exam Tip):
উদ্দীপকে প্রায়ই একটি টেবিলের ছবি দেওয়া থাকে এবং বলা হয় "উদ্দীপকের টেবিলটি তৈরির জন্য SQL কমান্ড লিখ"। সেক্ষেত্রে:
১. টেবিলের উপরের নামটিকে CREATE TABLE এর পরে বসাবে।
২. কলামের নামগুলো হুবহু লিখবে।
৩. ডেটা দেখে টাইপ বুঝবে (সংখ্যা হলে INT/FLOAT, নাম হলে VARCHAR)।
৪. রোল নম্বর বা আইডি থাকলে সেটাকে অবশ্যই PRIMARY KEY ঘোষণা করবে।
DDL কমান্ড-২: টেবিল পরিবর্তন (ALTER) ও মুছে ফেলা (DROP)
অনেক সময় টেবিল তৈরির পর নতুন কলাম যোগ করার বা পুরনো কলাম বাদ দেওয়ার প্রয়োজন হয়। আবার কখনো পুরো টেবিলটিই মুছে ফেলার দরকার হয়।
১. টেবিল পরিবর্তন (ALTER TABLE)
টেবিলের কাঠামো পরিবর্তন করতে ALTER কমান্ড ব্যবহার করা হয়।
ক. নতুন কলাম যোগ করা (ADD):
যদি Student টেবিলে নতুন করে Address কলাম যোগ করতে চাই:
ALTER TABLE Student ADD Address VARCHAR(100);
খ. কলামের ধরন বা সাইজ পরিবর্তন করা (MODIFY):
যদি Name কলামের সাইজ ৫০ থেকে বাড়িয়ে ১০০ করতে চাই:
ALTER TABLE Student MODIFY Name VARCHAR(100);
(বি:দ্র: কিছু ডেটাবেজ সিস্টেমে MODIFY এর বদলে ALTER COLUMN ব্যবহার হয়, তবে এইচএসসিতে MODIFY বা TYPE বেশি প্রচলিত)।
গ. কলাম মুছে ফেলা (DROP COLUMN):
ALTER TABLE Student DROP COLUMN GPA;
২. টেবিল মুছে ফেলা (DROP vs TRUNCATE)
এখানে দুটি কমান্ড আছে যা প্রায় একই রকম মনে হলেও এদের মধ্যে বড় পার্থক্য রয়েছে।
পার্থক্য: DROP বনাম TRUNCATE
| বৈশিষ্ট্য | DROP TABLE | TRUNCATE TABLE |
|---|---|---|
| কাজ | টেবিলের সম্পূর্ণ কাঠামো এবং ভেতরের সব ডেটা মুছে ফেলে। | টেবিলের কাঠামো ঠিক রেখে শুধু ভেতরের সব ডেটা মুছে ফেলে। |
| ফলাফল | টেবিলটি আর ডেটাবেজে অস্তিত্ব রাখে না। | টেবিলটি খালি (Empty) অবস্থায় ডেটাবেজে থাকে। |
| কমান্ড টাইপ | DDL | DDL |
| উদাহরণ | DROP TABLE Student; |
TRUNCATE TABLE Student; |
সতর্কতা: DELETE কমান্ড (যা DML এর অংশ) ব্যবহার করেও ডেটা মোছা যায়। কিন্তু DELETE দিয়ে শর্ত সাপেক্ষে (WHERE condition) নির্দিষ্ট রেকর্ড মোছা যায়, আর TRUNCATE দিয়ে একবারে সব রেকর্ড মুছে ফেলা হয় এবং এটি DELETE এর চেয়ে দ্রুত কাজ করে।
সৃজনশীল প্রশ্নের নমুনা সমাধান কৌশল
প্রশ্ন: দৃশ্যকল্প-১ এ 'Employee' নামে একটি টেবিল আছে যার ফিল্ডগুলো হলো Emp_ID, Emp_Name, Salary। Emp_ID ফিল্ডটি ডুপ্লিকেট হতে পারে না। টেবিলটি তৈরির জন্য SQL কোড লিখ।
সমাধান লেখার নিয়ম:
১. প্রথমে টেবিলের নাম এবং ফিল্ডগুলো শনাক্ত করবে।
২. Emp_ID যেহেতু ডুপ্লিকেট হবে না, তাই এটি PRIMARY KEY।
৩. নামের জন্য VARCHAR এবং স্যালারির জন্য INT বা FLOAT বা NUMBER ব্যবহার করবে।
উত্তর:
CREATE TABLE Employee (
Emp_ID INT PRIMARY KEY,
Emp_Name VARCHAR(30),
Salary NUMBER(10, 2)
);
সংক্ষিপ্ত সারাংশ (Quick Revision)
একনজরে আজকের পাঠ:
- SQL: ডেটাবেজ ম্যানেজমেন্টের জন্য ব্যবহৃত স্ট্যান্ডার্ড কুয়েরি ল্যাঙ্গুয়েজ।
- DDL: ডেটাবেজের কাঠামো তৈরির কমান্ড (CREATE, ALTER, DROP, TRUNCATE)।
- ডেটা টাইপ: পূর্ণসংখ্যার জন্য INT, দশমিকের জন্য FLOAT, নামের জন্য VARCHAR, তারিখের জন্য DATE।
- CHAR vs VARCHAR: CHAR ফিক্সড মেমোরি নেয়, VARCHAR ডায়নামিক বা প্রয়োজনীয় মেমোরি নেয়।
- Primary Key: রেকর্ডকে ইউনিকলি চেনার উপায়, যা নাল (Null) হতে পারে না।
পরিভাষা (Glossary)
| শব্দ | ব্যাখ্যা |
|---|---|
| Query (কুয়েরি) | ডেটাবেজ থেকে তথ্য জানতে চাওয়া বা কোনো নির্দেশ দেওয়া। |
| Syntax (সিনট্যাক্স) | কোড লেখার ব্যাকরণ বা সুনির্দিষ্ট নিয়ম। |
| Schema (স্কিমা) | ডেটাবেজের লজিক্যাল কাঠামো বা ব্লু-প্রিন্ট। |
| RDBMS | Relational Database Management System (যেখানে ডেটা টেবিল আকারে থাকে)। |
| Field/Column | টেবিলের উল্লম্ব অংশ যা নির্দিষ্ট ধরণের ডেটা ধারণ করে। |