৬.৫ এসকিউএল (SQL) পরিচিতি ও DDL কমান্ড (Introduction to SQL and DDL)

এইচএসসি আইসিটি অধ্যায় ৬: এসকিউএল (SQL) এর পরিচিতি। ডেটা টাইপ এবং DDL কমান্ড (CREATE, ALTER, DROP) দিয়ে টেবিল তৈরির পদ্ধতি।

শেখা শুরু করুন

৬.৫ এসকিউএল (SQL) পরিচিতি ও DDL কমান্ড

  1. এসকিউএল (SQL) পরিচিতি ও DDL কমান্ড
  2. কম্পিউটারের সাথে কথা বলার ভাষা
  3. SQL (Structured Query Language) কী?
  4. SQL কমান্ডের প্রকারভেদ
  5. SQL ডেটা টাইপ (Data Types) - ১
  6. SQL ডেটা টাইপ (Data Types) - ২
  7. DDL (Data Definition Language) কী?
  8. CREATE TABLE কমান্ড: সিনট্যাক্স
  9. উদাহরণ: Student টেবিল তৈরি
  10. ALTER TABLE: নতুন কলাম যোগ করা
  11. ALTER TABLE: কলাম পরিবর্তন (Modify)
  12. DROP এবং TRUNCATE কমান্ড
  13. সারসংক্ষেপ

এসকিউএল (SQL) পরিচিতি ও DDL কমান্ড

এই লেকচার শেষে আমরা-

১। এসকিউএল (SQL) কী এবং এর ব্যবহার ব্যাখ্যা করতে পারব।
২। SQL এর বিভিন্ন ডেটা টাইপ (Data Types) বর্ণনা করতে পারব।
৩। DDL (Data Definition Language) এর ধারণা ব্যাখ্যা করতে পারব।
৪। CREATE, ALTER ও DROP কমান্ড ব্যবহার করে টেবিল ব্যবস্থাপনা করতে পারব।

স্বাগতম সবাইকে! আজ আমরা ডেটাবেজের ভাষা শিখব। এই লেকচার শেষে আমরা- ১। এসকিউএল কী তা জানব, ২। ডেটা টাইপগুলো চিনব, এবং ৩ ও ৪ নম্বরে আমরা দেখব কীভাবে কোড লিখে টেবিল তৈরি বা পরিবর্তন করা যায়। চলো শুরু করি!

কম্পিউটারের সাথে কথা বলার ভাষা

মানুষের ভাষা: 'আমাকে সব ছাত্রের তালিকা দাও'
(কম্পিউটার বুঝবে না)

কম্পিউটারের ভাষা (SQL): SELECT * FROM Students;
(কম্পিউটার বুঝবে এবং উত্তর দেবে)

SQL = Structured Query Language

  • ডেটাবেজ সাধারণ বাংলা বা ইংরেজি বোঝে না
  • তাকে নির্দিষ্ট ফরম্যাটে প্রশ্ন করতে হয়
  • সেই ফরম্যাটই হলো SQL

আচ্ছা, মনে করো তুমি লাইব্রেরিতে গিয়ে লাইব্রেরিয়ানকে বললে, 'আমাকে বিজ্ঞান বিভাগের সব বই দিন'। তিনি বুঝবেন এবং দেবেন। কিন্তু কম্পিউটারের ডেটাবেজকে যদি মুখে বলো, সে কিচ্ছু বুঝবে না। তাকে তার ভাষায় বলতে হবে। আর সেই ভাষাটাই হলো SQL। স্ক্রিনে দেখো, আমরা যখন কোড লিখে বলি SELECT * FROM Students, তখন সে ঠিকই বুঝে নেয়। তাহলে SQL আসলে কী? এটা কি কোনো প্রোগ্রামিং ল্যাঙ্গুয়েজ? চলো দেখি।

SQL (Structured Query Language) কী?

পূর্ণরূপ: Structured Query Language

বৈশিষ্ট্য:
* এটি RDBMS এ ডেটা প্রসেস করার স্ট্যান্ডার্ড ল্যাঙ্গুয়েজ
* এটি Case Insensitive (SELECT এবং select একই)।
* এটি কোনো কেইস-সেনসিটিভ প্রোগ্রামিং ল্যাঙ্গুয়েজ (যেমন C, Java) নয়, এটি একটি কুয়েরি ল্যাঙ্গুয়েজ

ইতিহাস: ১৯৭০ সালে IBM এর গবেষকরা এটি তৈরি করেন।

এসকিউএল বা স্ট্রাকচারড কুয়েরি ল্যাঙ্গুয়েজ হলো রিলেশনাল ডেটাবেজ ম্যানেজমেন্ট সিস্টেম বা RDBMS এর ভাষা। মজার বিষয় হলো, এটা কিন্তু সি বা পাইথনের মতো কোনো প্রসিডিউরাল ল্যাঙ্গুয়েজ না। এখানে লুপ বা ফাংশন নিয়ে চিন্তা করতে হয় না। শুধু কী চাও, সেটা বললেই হয়। আর একটা বড় সুবিধা হলো, এটা Case Insensitive। অর্থাৎ তুমি কমান্ডগুলো বড় হাতের বা ছোট হাতের—যেভাবেই লেখো, কম্পিউটার বুঝে নেবে।

SQL কমান্ডের প্রকারভেদ

SQL কমান্ড প্রধানত ৪ প্রকার:

  1. DDL (Data Definition Language) - গঠন তৈরি/পরিবর্তন
  2. DML (Data Manipulation Language) - ডেটা নিয়ে কাজ
  3. DCL (Data Control Language) - পারমিশন কন্ট্রোল
  4. TCL (Transaction Control Language) - লেনদেন ব্যবস্থাপনা

আজকের আলোচ্য বিষয়: DDL

SQL এর অনেক কাজ, তাই একে ৪ ভাগে ভাগ করা হয়েছে। পাশের ডায়াগ্রামটা খেয়াল করো। DDL হলো ইঞ্জিনিয়ারের মতো, যে ঘরবাড়ি বা টেবিল বানায়। আর DML হলো সেই ঘরে বসবাসকারী মানুষের মতো বা ডেটা। আজ আমরা ইঞ্জিনিয়ার হব, মানে DDL শিখব। বাকিগুলো আমরা পরের লেকচারে জানব।

SQL ডেটা টাইপ (Data Types) - ১

টেবিল তৈরির আগে ফিল্ডের ধরন ঠিক করতে হয়।

১. Numeric (সংখ্যা):
* INT / INTEGER: পূর্ণসংখ্যা (যেমন: Roll, Age)
* FLOAT / DOUBLE: দশমিক যুক্ত সংখ্যা (যেমন: GPA, Salary)

২. Character (অক্ষর/টেক্সট):
* CHAR(size): নির্দিষ্ট দৈর্ঘ্যের ক্যারেক্টার (Fixed)
* VARCHAR(size): পরিবর্তনশীল দৈর্ঘ্যের ক্যারেক্টার (Variable) - নামের জন্য উত্তম।

তুমি যখন টেবিল বানাবে, কম্পিউটারকে আগে বলে দিতে হবে কোন ঘরে কী ধরণের তথ্য থাকবে। যদি রোল নাম্বারের ঘরে কেউ নাম লেখে, তাহলে তো সমস্যা! তাই ডেটা টাইপ খুব জরুরি। পূর্ণসংখ্যার জন্য আমরা ব্যবহার করি INT। আর নামের জন্য VARCHAR। VARCHAR খুব স্মার্ট, যতটুকু নাম ততটুকুই মেমোরি নেয়। তাই নামের জন্য আমরা সবসময় VARCHAR ব্যবহার করব।

SQL ডেটা টাইপ (Data Types) - ২

৩. Date/Time:
* DATE: শুধু তারিখ (YYYY-MM-DD)
* DATETIME: তারিখ ও সময়
* উদাহরণ: জন্মতারিখ, জয়েনিং ডেট।

৪. Boolean/Binary:
* BOOL / BOOLEAN: সত্য/মিথ্যা (True/False) বা ০/১।
* উদাহরণ: ছাত্র উপস্থিত কি না?

সংখ্যার বাইরেও আমাদের তারিখ বা সময়ের দরকার হয়। যেমন জন্মতারিখের জন্য আমরা DATE টাইপ ব্যবহার করি। ফরম্যাটটা মনে রাখবে—বছর, মাস, তারপর দিন। আর কোনো কিছু হ্যাঁ বা না হলে, যেমন—তুমি কি আজ ক্লাসে আছো? উত্তর হবে True বা False। এর জন্য BOOLEAN টাইপ ব্যবহার করা হয়।

DDL (Data Definition Language) কী?

সংজ্ঞা: যে কমান্ডগুলো দিয়ে ডেটাবেজের কাঠামো (Structure) বা স্কিমা তৈরি, পরিবর্তন বা মুছে ফেলা হয়।

প্রধান কমান্ডসমূহ:
১. CREATE: নতুন টেবিল তৈরি করা।
২. ALTER: টেবিলের কাঠামো পরিবর্তন করা (কলাম যোগ/বিয়োগ)।
৩. DROP: পুরো টেবিল ডিলিট করা।
৪. TRUNCATE: টেবিলের সব ডেটা মুছে ফেলা (কাঠামো রেখে)।

এখন আমরা মূল কাজে আসি। DDL মানেই হলো স্ট্রাকচার বা কাঠামো নিয়ে কাজ। মনে রাখবে, DDL দিয়ে আমরা কিন্তু ডেটা ইনপুট দেই না, আমরা ডেটা রাখার জায়গাটা বানাই। অর্থাৎ টেবিলটা তৈরি করি। এর প্রধান ৪টি হাতিয়ার হলো CREATE, ALTER, DROP এবং TRUNCATE। চলো একটা একটা করে দেখি।

CREATE TABLE কমান্ড: সিনট্যাক্স

সিনট্যাক্স (লেখার নিয়ম):

CREATE TABLE TableName (
    Column1 DataType Constraint,
    Column2 DataType,
    ...
);

বিঃদ্রঃ প্রতিটি স্টেটমেন্টের শেষে সেমিকোলন (;) দিতে হবে।

SQL এ কমান্ড লেখার একটা নিয়ম আছে, যাকে সিনট্যাক্স বলে। প্রথমে লিখতে হয় CREATE TABLE, এরপর তুমি যে নামের টেবিল চাও সেটা। তারপর প্রথম ব্র্যাকেটের ভেতর কলামের নাম আর তার ডেটা টাইপ। শেষে অবশ্যই সেমিকোলন দিতে ভুলবে না! সেমিকোলন না দিলে কিন্তু এরর আসবে।

উদাহরণ: Student টেবিল তৈরি

আমরা একটি Student টেবিল তৈরি করব যেখানে Roll, Name এবং GPA থাকবে।

SQL কোড:

CREATE TABLE Student (
    Roll INT PRIMARY KEY,
    Name VARCHAR(50),
    GPA FLOAT
);

ব্যাখ্যা:
* Roll হলো প্রাইমারি কি (অদ্বিতীয়)।
* Name সর্বোচ্চ ৫০ অক্ষরের হতে পারবে।

চলো একটা উদাহরণ দেখি। আমরা Student নামে একটা টেবিল বানাচ্ছি। প্রথমে Roll, যেটা INT বা সংখ্যা। পাশে লিখেছি PRIMARY KEY—এর মানে হলো এক রোল দুইজনের হতে পারবে না, এটা ইউনিক। এরপর Name, যেটা VARCHAR। আর শেষে GPA। এটা রান করলেই ডেটাবেজে একটা ফাঁকা টেবিল তৈরি হয়ে যাবে, ঠিক ছবির মতো।

ALTER TABLE: নতুন কলাম যোগ করা

টেবিল তৈরির পর যদি নতুন কলাম (যেমন: Address) দরকার হয়।

সিনট্যাক্স:
ALTER TABLE TableName ADD ColumnName DataType;

উদাহরণ:

ALTER TABLE Student ADD Address VARCHAR(100);

ধরো টেবিল বানানোর পর মনে হলো, আরে! ছাত্রদের ঠিকানা বা Address তো নিইনি! এখন কি টেবিল ভেঙে আবার বানাব? না! আমরা ALTER কমান্ড দিয়ে নতুন কলাম যোগ করব। কোডটা দেখো—ALTER TABLE Student ADD Address। খুব সহজ, তাই না? ছবির দিকে তাকালে দেখবে কীভাবে পুরনো টেবিলে নতুন একটা কলাম যুক্ত হয়ে গেছে।

ALTER TABLE: কলাম পরিবর্তন (Modify)

যদি কোনো কলামের ডেটা টাইপ বা সাইজ পরিবর্তন করতে হয়।

উদাহরণ: Name এর সাইজ ৫০ থেকে বাড়িয়ে ১০০ করতে চাই।

কোড:

ALTER TABLE Student MODIFY Name VARCHAR(100);

(বিঃদ্রঃ কিছু ডেটাবেজে MODIFY এর বদলে ALTER COLUMN ব্যবহৃত হয়)

অনেক সময় নাম লেখার জায়গা ৫০ অক্ষরে হচ্ছে না, আমাদের ১০০ অক্ষর দরকার। তখন আমরা MODIFY কমান্ড ব্যবহার করি। এটা দিয়ে কলামের সাইজ বা টাইপ বদলে ফেলা যায়। তবে মনে রাখবে, একেক ডেটাবেজ সফটওয়্যারে এটা একটু ভিন্ন হতে পারে, কিন্তু মূল ধারণা একই।

DROP এবং TRUNCATE কমান্ড

১. DROP TABLE:
* টেবিলটি ডেটাবেজ থেকে সম্পূর্ণ মুছে ফেলে।
* গঠন (Structure) এবং ডেটা—সব হারিয়ে যায়।
* কোড: DROP TABLE Student;

২. TRUNCATE TABLE:
* টেবিলের সব ডেটা মুছে ফেলে, কিন্তু টেবিলের কাঠামো (Structure) রেখে দেয়।
* কোড: TRUNCATE TABLE Student;

এই দুটি কমান্ড খুব সাবধানে ব্যবহার করতে হয়। DROP মানে হলো একদম ধুলিসাৎ করে দেওয়া—টেবিল আর খুঁজে পাবে না, সব শেষ। আর TRUNCATE মানে হলো ঘর থেকে আসবাবপত্র বের করে দেওয়া, কিন্তু ঘরটা (টেবিলটা) ঠিকই থাকবে। অর্থাৎ ডেটা চলে যাবে, কিন্তু স্ট্রাকচার থাকবে। পার্থক্যটা খুব ভালো করে মনে রেখো।

সারসংক্ষেপ

আজ আমরা যা শিখলাম:

  1. SQL ডেটাবেজের সাথে কথা বলার ভাষা।
  2. টেবিল তৈরির আগে ডেটা টাইপ (INT, VARCHAR, DATE) ঠিক করতে হয়।
  3. DDL কমান্ডগুলো হলো: CREATE (তৈরি), ALTER (পরিবর্তন), DROP (মুছে ফেলা)।
  4. CREATE TABLE কমান্ডটি সবচেয়ে গুরুত্বপূর্ণ।

আজকে আমরা অনেক গুরুত্বপূর্ণ বিষয় শিখেছি। SQL এর বেসিক, ডেটা টাইপ এবং কীভাবে টেবিল বানাতে বা ভাঙতে হয়, মানে DDL। এগুলো প্র্যাকটিস করা খুব জরুরি। নিজেরা খাতায় বা কম্পিউটারে কোডগুলো লেখার চেষ্টা করবে। পরবর্তী লেকচারে আমরা দেখব কীভাবে এই টেবিলে ডেটা ঢোকানো যায়। সবাই ভালো থেকো!

এসকিউএল (SQL) পরিচিতি, ডেটা টাইপ ও DDL কমান্ড: বিস্তারিত আলোচনা ও পরীক্ষার প্রস্তুতি

পড়তে প্রায় 25 মিনিট

বর্তমান তথ্যপ্রযুক্তির যুগে ডেটাবেজ ম্যানেজমেন্ট সিস্টেম (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) তা বলে দেওয়ার প্রয়োজন হয় না।

এসকিউএল-এর সুবিধাসমূহ
  1. Case Insensitive: এসকিউএল কেস সেনসিটিভ নয়। অর্থাৎ, SELECT, Select বা select লিখলে একই কাজ করবে। তবে স্ট্যান্ডার্ড হলো কমান্ডগুলো বড় হাতের অক্ষরে (UPPERCASE) লেখা।
  2. সহজ সিনট্যাক্স: এর কমান্ডগুলো ইংরেজি ভাষার মতো সহজ, যা দ্রুত শেখা যায়।
  3. স্ট্যান্ডার্ড: এটি 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)

অক্ষর, শব্দ বা বাক্য সংরক্ষণের জন্য ব্যবহৃত হয়। এখানে দুটি প্রধান টাইপ রয়েছে যা পরীক্ষায় প্রায়ই তুলনা করতে বলা হয়।

| বৈশিষ্ট্য | **CHAR(size)** | **VARCHAR / VARCHAR2(size)** | |---|---|---| | **পূর্ণরূপ** | Fixed Length Character | Variable Length Character | | **মেমোরি ব্যবহার** | নির্ধারিত সাইজ অনুযায়ী পূর্ণ মেমোরি দখল করে। | যতটুকু ডেটা লিখবে, ঠিক ততটুকুই মেমোরি দখল করে। | | **উদাহরণ** | যদি `CHAR(10)` ডিক্লেয়ার করে "HSC" (৩ অক্ষর) লেখা হয়, তবে এটি ১০ বাইট মেমোরিই দখল করবে (বাকি ৭টি স্পেস দিয়ে পূর্ণ হবে)। | যদি `VARCHAR(10)` ডিক্লেয়ার করে "HSC" লেখা হয়, তবে এটি মাত্র ৩ বাইট মেমোরি দখল করবে। | | **উপযুক্ত ব্যবহার** | যে সব ডেটার দৈর্ঘ্য নির্দিষ্ট (যেমন: মোবাইল নম্বর, জেন্ডার 'M'/'F')। | যে সব ডেটার দৈর্ঘ্য পরিবর্তনশীল (যেমন: নাম, ঠিকানা)। |
৩. তারিখ ও সময় (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: ভর্তির তারিখের জন্য ডেট টাইপ।
- শেষে ; দিয়ে কমান্ড শেষ করা হয়েছে।

SQL Create Table Diagram

পরীক্ষার টিপস (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, SalaryEmp_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 টেবিলের উল্লম্ব অংশ যা নির্দিষ্ট ধরণের ডেটা ধারণ করে।

অনুশীলনের প্রশ্ন

সৃজনশীল প্রশ্ন

সৃজনশীল প্রশ্ন ১

সফিপুর কলেজের অধ্যক্ষ মহোদয় শিক্ষার্থীদের তথ্য সংরক্ষণের জন্য একটি ডেটাবেজ তৈরির নির্দেশ দিলেন। আইসিটি শিক্ষক ‘Student_Info’ নামে একটি টেবিল তৈরির পরিকল্পনা করলেন যেখানে শিক্ষার্থীদের রোল (পূর্ণসংখ্যা), নাম (অক্ষর) এবং জন্মতারিখ সংরক্ষণের ব্যবস্থা থাকবে। পরবর্তীতে তিনি শিক্ষার্থীদের মোবাইল নম্বর সংরক্ষণের জন্য টেবিলে নতুন একটি ফিল্ড যুক্ত করার প্রয়োজনীয়তা অনুভব করলেন।

ক) DDL এর পূর্ণরূপ কী?
খ) SQL কে কেন নন-প্রসিডিউরাল ল্যাঙ্গুয়েজ বলা হয়?
গ) উদ্দীপকের টেবিলটি তৈরির জন্য প্রয়োজনীয় SQL কমান্ড লিখ।
ঘ) উদ্দীপকের শিক্ষকের পরবর্তী প্রয়োজনটি মেটানোর জন্য যে কমান্ডটি ব্যবহার করবেন তার কাজ ও গুরুত্ব বিশ্লেষণ কর।

উত্তর

(ক) DDL এর পূর্ণরূপ হলো Data Definition Language

(খ) SQL বা Structured Query Language-কে নন-প্রসিডিউরাল (Non-procedural) ল্যাঙ্গুয়েজ বলা হয় কারণ এতে কোনো সমস্যা সমাধানের জন্য "কীভাবে" (How) কাজটি করতে হবে তা বলে দিতে হয় না, শুধুমাত্র "কী" (What) করতে হবে তা বলে দিলেই হয়। অর্থাৎ ধাপে ধাপে নির্দেশনা দেওয়ার প্রয়োজন হয় না, কেবল কুয়েরি কমান্ড দিলেই ডেটাবেজ সিস্টেম ফলাফল প্রদান করে।

(গ) উদ্দীপকে বর্ণিত ‘Student_Info’ টেবিলটি তৈরির জন্য CREATE TABLE কমান্ড ব্যবহার করতে হবে। এখানে তিনটি ফিল্ড বা কলাম থাকবে: রোল (Roll), নাম (Name), এবং জন্মতারিখ (DoB)।

নিচে টেবিলটি তৈরির SQL কমান্ড দেওয়া হলো:

CREATE TABLE Student_Info (
    Roll INT(10) PRIMARY KEY,
    Name VARCHAR(50),
    DoB DATE
);

ব্যাখ্যা:
১. CREATE TABLE Student_Info: এটি নতুন একটি টেবিল তৈরি করবে যার নাম হবে Student_Info।
২. Roll INT(10): রোল নম্বরের জন্য পূর্ণসংখ্যা বা Integer ডেটা টাইপ নেওয়া হয়েছে।
৩. Name VARCHAR(50): নামের জন্য ভেরিয়েবল ক্যারেক্টার বা VARCHAR নেওয়া হয়েছে যাতে নাম লিখতে মেমোরি সাশ্রয় হয়।
৪. DoB DATE: জন্মতারিখের জন্য DATE ডেটা টাইপ ব্যবহার করা হয়েছে।

(ঘ) উদ্দীপকের শিক্ষকের পরবর্তী প্রয়োজনটি ছিল শিক্ষার্থীদের মোবাইল নম্বর সংরক্ষণের জন্য টেবিলে নতুন একটি ফিল্ড যুক্ত করা। বিদ্যমান কোনো টেবিলে নতুন কলাম বা ফিল্ড যুক্ত করতে SQL-এর DDL অংশের অন্তর্ভুক্ত ALTER TABLE কমান্ড ব্যবহার করা হয়।

নতুন ফিল্ড যুক্ত করার জন্য কমান্ডটি হবে নিম্নরূপ:

ALTER TABLE Student_Info ADD Mobile_No VARCHAR(15);

বিশ্লেষণ ও গুরুত্ব:
১. গঠন পরিবর্তন: ALTER TABLE কমান্ডের সাহায্যে ডেটাবেজের কোনো টেবিল ডিলিট না করেই তার গঠনে পরিবর্তন আনা যায়। শিক্ষক যদি এই কমান্ড ব্যবহার না করতেন, তবে তাকে পুরো টেবিলটি মুছে আবার নতুন করে তৈরি করতে হতো, যা সময়সাপেক্ষ এবং ডেটা লসের ঝুঁকি তৈরি করত।
২. ফ্লেক্সিবিলিটি: সময়ের প্রয়োজনে ডেটাবেজের স্কীমা বা গঠন পরিবর্তনের দরকার হয়। ALTER কমান্ড এই নমনীয়তা প্রদান করে।
৩. ডেটা নিরাপত্তা: বিদ্যমান ডেটা অক্ষত রেখেই নতুন কলাম ‘Mobile_No’ যুক্ত করা সম্ভব হয়েছে।

সুতরাং, শিক্ষকের জন্য ALTER কমান্ড ব্যবহার করা অত্যন্ত যৌক্তিক ও গুরুত্বপূর্ণ সিদ্ধান্ত, কারণ এটি ডেটাবেজ ম্যানেজমেন্টকে সহজ ও গতিশীল করে।


সৃজনশীল প্রশ্ন ২

একটি আইটি ফার্মের ডেটাবেজ অ্যাডমিনিস্ট্রেটর জনাব রায়হান ‘Employee’ নামের একটি টেবিলে নতুন কর্মীদের তথ্য এন্ট্রি করছিলেন। কাজ করার সময় তিনি লক্ষ্য করলেন ‘Salary’ ফিল্ডের ডেটা টাইপ ভুলভাবে নির্বাচিত হয়েছে, যা তিনি সংশোধন করতে চান। অন্যদিকে, তার এক জুনিয়র কলিগ ভুলবশত অপ্রয়োজনীয় মনে করে ‘Old_Data’ নামের একটি টেবিল পুরোপুরি ডেটাবেজ থেকে মুছে ফেলার জন্য DELETE কমান্ড ব্যবহার করার চেষ্টা করছেন, কিন্তু টেবিলটি স্ট্রাকচারসহ মুছছে না।

ক) ডেটা টাইপ কী?
খ) CHAR ও VARCHAR এর মধ্যে পার্থক্য লেখ।
গ) জনাব রায়হানের সমস্যা সমাধানের জন্য প্রয়োজনীয় SQL কমান্ড ব্যাখ্যা কর।
ঘ) জুনিয়র কলিগের ব্যর্থতার কারণ কী? টেবিলটি স্থায়ীভাবে মুছে ফেলার জন্য সঠিক কমান্ডটি বিশ্লেষণপূর্বক মতামত দাও।

উত্তর

(ক) ডেটা টাইপ হলো ডেটাবেজের ফিল্ড বা কলামে এন্ট্রি করা ডেটা কোন প্রকৃতির হবে (যেমন- সংখ্যা, অক্ষর, তারিখ ইত্যাদি) তা নির্ধারণ করার ব্যবস্থা।

(খ) CHAR ও VARCHAR এর মধ্যে পার্থক্য নিচে দেওয়া হলো:
১. মেমোরি ব্যবহার: CHAR হলো ফিক্সড লেন্থ (Fixed Length) ক্যারেক্টার ডেটা টাইপ, এটি নির্ধারিত মেমোরি পুরোটাই দখল করে রাখে। অন্যদিকে, VARCHAR হলো ভেরিয়েবল লেন্থ (Variable Length) ক্যারেক্টার ডেটা টাইপ, এটি যতটুকু ডেটা লেখা হয় ঠিক ততটুকু মেমোরিই দখল করে।
২. গতি: CHAR এর প্রসেসিং স্পিড কিছুটা বেশি, কিন্তু VARCHAR মেমোরি সাশ্রয়ী।

(গ) উদ্দীপকে জনাব রায়হান ‘Employee’ টেবিলের ‘Salary’ ফিল্ডের ডেটা টাইপ সংশোধন বা পরিবর্তন করতে চান। বিদ্যমান টেবিলের কোনো কলামের ডেটা টাইপ পরিবর্তন করতে ALTER TABLE কমান্ডের সাথে MODIFY ক্লজ ব্যবহার করতে হয়।

ধরি, তিনি Salary ফিল্ডকে INT বা NUMBER টাইপে পরিবর্তন করতে চান। সেক্ষেত্রে কমান্ডটি হবে:

ALTER TABLE Employee MODIFY Salary NUMBER(10,2);

অথবা (সফটওয়্যার ভেদে):

ALTER TABLE Employee ALTER COLUMN Salary DECIMAL(10,2);

এই কমান্ডের মাধ্যমে ‘Employee’ টেবিলের গঠনে পরিবর্তন আসবে এবং ‘Salary’ কলামটি নতুন ডেটা টাইপ ধারণ করবে। এটি একটি DDL (Data Definition Language) অপারেশন।

(ঘ) জুনিয়র কলিগের ব্যর্থতার মূল কারণ হলো তিনি টেবিলটি স্ট্রাকচারসহ মুছে ফেলার জন্য ভুল কমান্ড DELETE ব্যবহার করার চেষ্টা করেছিলেন।

বিশ্লেষণ:
১. DELETE কমান্ডটি হলো DML (Data Manipulation Language) এর অংশ। এটি টেবিলের ভেতরের রেকর্ড বা ডেটা মুছে ফেলতে পারে, কিন্তু টেবিলের স্ট্রাকচার বা অস্তিত্ব মুছে ফেলতে পারে না। তাই DELETE কমান্ড দিয়ে টেবিলটি পুরোপুরি রিমুভ করা সম্ভব নয়।
২. টেবিলটিকে ডেটাবেজ থেকে তার গঠন বা স্ট্রাকচারসহ স্থায়ীভাবে মুছে ফেলার জন্য DDL এর অন্তর্ভুক্ত DROP কমান্ড ব্যবহার করতে হবে।

সঠিক কমান্ডটি হলো:

DROP TABLE Old_Data;

মতামত:
জুনিয়র কলিগ যদি DELETE FROM Old_Data; ব্যবহার করতেন, তবে টেবিলটি খালি হয়ে যেত কিন্তু ডেটাবেজে ‘Old_Data’ নামে টেবিলটি থেকে যেত। যেহেতু উদ্দেশ্য ছিল টেবিলটি পুরোপুরি মুছে ফেলা, তাই DROP TABLE কমান্ডটিই এখানে একমাত্র কার্যকর সমাধান। এটি টেবিলের মেমোরি স্পেসও ফ্রি করে দেয়।


সৃজনশীল প্রশ্ন ৩

আইসিটি ক্লাসে শিক্ষক বোর্ডে নিচের টেবিল স্ট্রাকচারটি লিখলেন এবং বললেন, "আমরা আজ ডেটাবেজ তৈরি ও বাতিল করার কমান্ড শিখব।"

টেবিল নাম: Book_List

Book_ID Book_Name Writer Price
101 ICT N.K. 250
102 Physics S.H. 300

শিক্ষক বললেন, "যদি কখনো মনে হয় পুরো টেবিলের ডেটা খালি করা দরকার কিন্তু টেবিলটি রেখে দিতে হবে, তবে একটি বিশেষ কমান্ড ব্যবহার করা যায়।"

ক) প্রাইমারি কি (Primary Key) কী?
খ) DROP এবং TRUNCATE কমান্ড কি একই কাজ করে? ব্যাখ্যা কর।
গ) উদ্দীপকের টেবিলটি তৈরির জন্য সঠিক SQL কোড লিখ (Book_ID কে প্রাইমারি কি হিসেবে ধরবে)।
ঘ) শিক্ষকের শেষ উক্তিটির আলোকে DELETE এবং TRUNCATE কমান্ডের তুলনামূলক বিশ্লেষণ কর।

উত্তর

(ক) প্রাইমারি কি (Primary Key) হলো এমন একটি ফিল্ড বা ফিল্ডের সমষ্টি যা দ্বারা কোনো ডেটাবেজ টেবিলের প্রতিটি রেকর্ডকে অদ্বিতীয়ভাবে (Uniquely) শনাক্ত করা যায়।

(খ) না, DROP এবং TRUNCATE কমান্ড একই কাজ করে না।
* DROP: এই কমান্ডটি টেবিলকে ডেটা এবং স্ট্রাকচারসহ ডেটাবেজ থেকে সম্পূর্ণভাবে মুছে ফেলে। এটি ব্যবহারের পর টেবিলের কোনো অস্তিত্ব থাকে না।
* TRUNCATE: এই কমান্ডটি টেবিলের সব ডেটা বা রেকর্ড একবারে মুছে ফেলে কিন্তু টেবিলের স্ট্রাকচার (কলাম, ডেটা টাইপ) রেখে দেয়। এটি টেবিলকে পুনরায় ব্যবহারের উপযোগী করে খালি করে দেয়।

(গ) উদ্দীপকের Book_List টেবিলটি তৈরির জন্য SQL কোড নিচে দেওয়া হলো:

CREATE TABLE Book_List (
    Book_ID INT(5) PRIMARY KEY,
    Book_Name VARCHAR(50),
    Writer VARCHAR(30),
    Price NUMBER(10,2)
);

এখানে Book_ID কে প্রাইমারি কি করা হয়েছে যাতে প্রতিটি বইয়ের আইডি আলাদা হয়।

(ঘ) শিক্ষকের উক্তিটি ছিল—"পুরো টেবিলের ডেটা খালি করা দরকার কিন্তু টেবিলটি রেখে দিতে হবে"। এই কাজটি DELETE এবং TRUNCATE উভয় কমান্ড দিয়েই করা সম্ভব, তবে এদের মধ্যে কার্যপদ্ধতিগত পার্থক্য রয়েছে।

তুলনামূলক বিশ্লেষণ:

  1. কাজের ধরন:
    * DELETE কমান্ড দিয়ে WHERE ক্লজ ব্যবহার করে নির্দিষ্ট ডেটা বা DELETE FROM TableName দিয়ে সব ডেটা মুছা যায়। এটি একটি DML কমান্ড।
    * TRUNCATE কমান্ড দিয়ে টেবিলের সব ডেটা একবারে দ্রুত মুছে ফেলা যায়, কিন্তু নির্দিষ্ট কোনো রো বা রেকর্ড মুছা যায় না। এটি একটি DDL কমান্ড।

  2. গতি ও দক্ষতা:
    * TRUNCATE কমান্ড DELETE এর চেয়ে অনেক দ্রুত কাজ করে কারণ এটি প্রতিটি রো বা রেকর্ড আলাদাভাবে ডিলিট করে লগ তৈরি করে না, বরং পুরো ডেটা ব্লক খালি করে দেয়।
    * DELETE কমান্ড প্রতিটি রো ধরে ধরে ডিলিট করে, তাই এটি ধীরগতির।

  3. মেমোরি:
    * TRUNCATE টেবিলের স্পেস রিসেট করে বা ফ্রি করে দেয়।
    * DELETE কমান্ড স্পেস ফ্রি করে না।

উপসংহার:
শিক্ষকের নির্দেশিত কাজটির জন্য (সব ডেটা দ্রুত খালি করা এবং স্ট্রাকচার রাখা) TRUNCATE TABLE Book_List; কমান্ডটি DELETE কমান্ডের চেয়ে বেশি সাশ্রয়ী ও উপযুক্ত।

এমসিকিউ

১। SQL এর পূর্ণরূপ কী?

ক) Structured Question Language
খ) Standard Query Language
গ) Structured Query Language
ঘ) Simple Query Language

সঠিক উত্তর: গ) Structured Query Language

ব্যাখ্যা: SQL বা Structured Query Language হলো রিলেশনাল ডেটাবেজ ম্যানেজমেন্ট সিস্টেমের (RDBMS) ডেটা তৈরি, পরিচালনা এবং নিয়ন্ত্রণের জন্য ব্যবহৃত একটি স্ট্যান্ডার্ড ভাষা।


২। ডেটাবেজের স্ট্রাকচার বা কাঠামো তৈরি ও পরিবর্তনের জন্য কোন ধরনের কমান্ড ব্যবহার করা হয়?

ক) DML
খ) DDL
গ) DCL
ঘ) TCL

সঠিক উত্তর: খ) DDL

ব্যাখ্যা: DDL বা Data Definition Language ডেটাবেজের স্কীমা বা গঠন নির্ধারণ করে। এর কমান্ডগুলো হলো CREATE, ALTER, DROP, TRUNCATE ইত্যাদি।


৩। ডেটাবেজ থেকে কোনো টেবিলকে সম্পূর্ণভাবে মুছে ফেলার জন্য কোন কমান্ডটি ব্যবহৃত হয়?

ক) DELETE
খ) REMOVE
গ) ERASE
ঘ) DROP

সঠিক উত্তর: ঘ) DROP

ব্যাখ্যা: DROP TABLE কমান্ডটি ডেটাবেজ থেকে টেবিল এবং এর ভেতরের সব ডেটা বা রেকর্ড স্থায়ীভাবে মুছে ফেলে। DELETE কমান্ড শুধুমাত্র ডেটা বা রেকর্ড মুছে দেয়, কিন্তু টেবিলের গঠন রেখে দেয়।


৪। টেবিলে নতুন কোনো কলাম বা ফিল্ড যুক্ত করতে কোন কমান্ড প্রয়োজন?

ক) INSERT
খ) UPDATE
গ) ALTER
ঘ) CREATE

সঠিক উত্তর: গ) ALTER

ব্যাখ্যা: বিদ্যমান টেবিলে নতুন ফিল্ড বা কলাম যোগ করতে, ফিল্ডের নাম পরিবর্তন করতে বা ডেটা টাইপ পরিবর্তন করতে ALTER TABLE কমান্ড ব্যবহার করা হয়।


৫। কোনটি সঠিক SQL ডেটা টাইপ নয়?

ক) NUMBER
খ) VARCHAR
গ) CHARACTER
ঘ) TEXTNUM

সঠিক উত্তর: ঘ) TEXTNUM

ব্যাখ্যা: SQL-এ সাধারণত NUMBER, VARCHAR, CHAR, DATE ইত্যাদি ডেটা টাইপ ব্যবহৃত হয়। TEXTNUM নামে কোনো স্ট্যান্ডার্ড ডেটা টাইপ নেই।


৬। কোন ডেটা টাইপটি মেমোরি সাশ্রয়ী?

ক) CHAR
খ) VARCHAR
গ) TEXT
ঘ) OLE Object

সঠিক উত্তর: খ) VARCHAR

ব্যাখ্যা: CHAR ফিক্সড লেন্থের ডেটা টাইপ, অর্থাৎ এটি যতটুকু সাইজ দেওয়া হয় পুরোটাই দখল করে। কিন্তু VARCHAR বা Variable Character ভেরিয়েবল লেন্থের, অর্থাৎ যতটুকু ডেটা লেখা হয় ঠিক ততটুকু মেমোরিই দখল করে।


৭। TRUNCATE কমান্ডের কাজ কী?

ক) টেবিলের নাম পরিবর্তন করা
খ) টেবিলের সব ডেটা মুছে ফেলা কিন্তু স্ট্রাকচার রাখা
গ) নির্দিষ্ট শর্ত সাপেক্ষে ডেটা ডিলিট করা
ঘ) টেবিল এবং ডেটা সব মুছে ফেলা

সঠিক উত্তর: খ) টেবিলের সব ডেটা মুছে ফেলা কিন্তু স্ট্রাকচার রাখা

ব্যাখ্যা: TRUNCATE TABLE কমান্ডটি টেবিলের সব রেকর্ড বা ডেটা একবারে দ্রুত মুছে ফেলে এবং টেবিলের স্পেস ফ্রি করে দেয়, কিন্তু টেবিলের কলাম বা স্ট্রাকচার অপরিবর্তিত থাকে।


৮। SQL কমান্ডের শেষে অবশ্যই কোনটি ব্যবহার করতে হয়?

ক) : (Colon)
খ) ; (Semicolon)
গ) . (Dot)
ঘ) , (Comma)

সঠিক উত্তর: খ) ; (Semicolon)

ব্যাখ্যা: প্রতিটি SQL স্টেটমেন্ট বা কমান্ড শেষ করতে সেমিকোলন (;) ব্যবহার করা বাঞ্ছনীয়, যা নির্দেশ করে যে কমান্ডটি এখানে শেষ হয়েছে।


৯। CREATE TABLE কমান্ডের সিনট্যাক্সে কোনটি অপরিহার্য?

ক) টেবিলের নাম এবং অন্তত একটি কলামের নাম ও ডেটা টাইপ
খ) শুধুমাত্র টেবিলের নাম
গ) প্রাইমারি কি
ঘ) ডিফল্ট ভ্যালু

সঠিক উত্তর: ক) টেবিলের নাম এবং অন্তত একটি কলামের নাম ও ডেটা টাইপ

ব্যাখ্যা: একটি টেবিল তৈরি করতে হলে অবশ্যই টেবিলের নাম দিতে হবে এবং সেই টেবিলে অন্তত একটি কলাম বা ফিল্ড থাকতে হবে যার ডেটা টাইপ উল্লেখ করা থাকবে।


১০। বুলিয়ান ডেটা টাইপ (Yes/No) মেমোরিতে কতটুকু জায়গা নেয়?

ক) ১ বাইট
খ) ১ বিট
গ) ২ বাইট
ঘ) ৪ বাইট

সঠিক উত্তর: খ) ১ বিট

ব্যাখ্যা: বুলিয়ান বা Yes/No লজিক্যাল ডেটা টাইপ, যা সত্য (১) বা মিথ্যা (০) প্রকাশ করতে মাত্র ১ বিট মেমোরি ব্যবহার করে।


১১। DDL কমান্ডের অন্তর্ভুক্ত হলো—
i. CREATE
ii. ALTER
iii. UPDATE

নিচের কোনটি সঠিক?
ক) i ও ii
খ) i ও iii
গ) ii ও iii
ঘ) i, ii ও iii

সঠিক উত্তর: ক) i ও ii

ব্যাখ্যা: CREATE এবং ALTER হলো DDL (Data Definition Language) কমান্ড। UPDATE হলো DML (Data Manipulation Language) কমান্ড।


১২। DROP কমান্ড ব্যবহারের ফলাফল—
i. টেবিলের সব ডেটা মুছে যায়
ii. টেবিলের স্ট্রাকচার মুছে যায়
iii. টেবিলের ইনডেক্স মুছে যায়

নিচের কোনটি সঠিক?
ক) i ও ii
খ) i ও iii
গ) ii ও iii
ঘ) i, ii ও iii

সঠিক উত্তর: ঘ) i, ii ও iii

ব্যাখ্যা: DROP TABLE কমান্ড দিলে টেবিলের ডেটা, স্ট্রাকচার, ইনডেক্স এবং এর সাথে সম্পর্কিত সব পারমিশন ডেটাবেজ থেকে সম্পূর্ণরূপে মুছে যায়।


১৩। SQL ডেটা টাইপ DATE এর ফরম্যাট হতে পারে—
i. DD-MM-YYYY
ii. MM/DD/YYYY
iii. YYYY-MM-DD

নিচের কোনটি সঠিক?
ক) i ও ii
খ) i ও iii
গ) ii ও iii
ঘ) i, ii ও iii

সঠিক উত্তর: ঘ) i, ii ও iii

ব্যাখ্যা: ডেটাবেজ সফটওয়্যার ভেদে তারিখের ফরম্যাট ভিন্ন হতে পারে। ওরাকলে সাধারণত DD-MON-YY বা DD-MM-YYYY এবং মাইএসকিউএল-এ YYYY-MM-DD ফরম্যাট ব্যবহৃত হয়।


১৪। CHAR(20) ডেটা টাইপের বৈশিষ্ট্য—
i. এটি সর্বোচ্চ ২০টি ক্যারেক্টার ধারণ করতে পারে
ii. কম ক্যারেক্টার লিখলেও ২০ ক্যারেক্টারের মেমোরি দখল করে
iii. এটি ভেরিয়েবল লেন্থ ডেটা টাইপ

নিচের কোনটি সঠিক?
ক) i ও ii
খ) i ও iii
গ) ii ও iii
ঘ) i, ii ও iii

সঠিক উত্তর: ক) i ও ii

ব্যাখ্যা: CHAR হলো ফিক্সড লেন্থ ক্যারেক্টার ডেটা টাইপ। এখানে ২০ সাইজ দিলে এটি ২০ বাইট জায়গাই দখল করবে, চাই ২ টি অক্ষর লেখা হোক বা ২০ টি। এটি ভেরিয়েবল লেন্থ নয়।


১৫। টেবিল তৈরির সময় ফিল্ডের নামের ক্ষেত্রে—
i. স্পেস বা ফাঁকা স্থান রাখা যাবে না
ii. আন্ডারস্কোর (_) ব্যবহার করা যাবে
iii. প্রথম অক্ষরটি সংখ্যা হতে পারবে না

নিচের কোনটি সঠিক?
ক) i ও ii
খ) i ও iii
গ) ii ও iii
ঘ) i, ii ও iii

সঠিক উত্তর: ঘ) i, ii ও iii

ব্যাখ্যা: ফিল্ড বা কলামের নামের মধ্যে স্পেস বা ফাঁকা জায়গা রাখা যায় না (তবে ডাবল কোটেশনে রাখা যেতে পারে, যা স্ট্যান্ডার্ড নয়)। নামের শুরুতে সংখ্যা দেওয়া যায় না এবং বিশেষ ক্যারেক্টার হিসেবে সাধারণত আন্ডারস্কোর ব্যবহৃত হয়।


নিচের অনুচ্ছেদটি পড়ে ১৬ ও ১৭ নং প্রশ্নের উত্তর দাও:
মি. রফিক তার দোকানের পণ্যসামগ্রীর হিসাব রাখার জন্য একটি ডেটাবেজ টেবিল তৈরি করলেন। টেবিলটির নাম দিলেন 'Product'। কিছুদিন পর তিনি দেখলেন পণ্যের নামের জন্য বরাদ্দকৃত জায়গা বা স্পেস যথেষ্ট হচ্ছে না। তিনি ফিল্ডটির সাইজ বাড়ানোর সিদ্ধান্ত নিলেন।

১৬। উদ্দীপকের টেবিলটি তৈরির জন্য সঠিক কমান্ড কোনটি?
ক) MAKE TABLE Product
খ) CREATE TABLE Product
গ) NEW TABLE Product
ঘ) ADD TABLE Product

সঠিক উত্তর: খ) CREATE TABLE Product

ব্যাখ্যা: ডেটাবেজে নতুন টেবিল তৈরির জন্য CREATE TABLE কমান্ড ব্যবহার করা হয়।


১৭। মি. রফিকের সমস্যা সমাধানের জন্য কোন কমান্ডটি উপযুক্ত?
ক) ALTER TABLE Product ADD Column
খ) ALTER TABLE Product MODIFY Column
গ) UPDATE Product SET Column
ঘ) CHANGE TABLE Product

সঠিক উত্তর: খ) ALTER TABLE Product MODIFY Column

ব্যাখ্যা: বিদ্যমান কলামের ডেটা টাইপ বা সাইজ পরিবর্তন করার জন্য ALTER TABLE কমান্ডের সাথে MODIFY (Oracle/MySQL) বা ALTER COLUMN (SQL Server) ক্লজ ব্যবহার করতে হয়।


১৮। নিচের কোনটি সঠিক SQL সিনট্যাক্স?
ক) CREATE TABLE student (id int, name char);
খ) TABLE CREATE student (id int, name char);
গ) CREATE student TABLE (id int, name char);
ঘ) MAKE TABLE student (id int, name char);

সঠিক উত্তর: ক) CREATE TABLE student (id int, name char);

ব্যাখ্যা: সঠিক সিনট্যাক্স হলো CREATE TABLE table_name (column1 datatype, column2 datatype, ...);


১৯। TRUNCATE এবং DELETE এর মধ্যে মূল পার্থক্য কোথায়?
ক) TRUNCATE ফাস্টার কিন্তু রোলব্যাক করা যায় না, DELETE স্লোয়ার এবং রোলব্যাক করা যায়
খ) TRUNCATE কন্ডিশনাল, DELETE আনকন্ডিশনাল
গ) TRUNCATE ডিএমএল, DELETE ডিডিএল
ঘ) কোনো পার্থক্য নেই

সঠিক উত্তর: ক) TRUNCATE ফাস্টার কিন্তু রোলব্যাক করা যায় না, DELETE স্লোয়ার এবং রোলব্যাক করা যায়

ব্যাখ্যা: TRUNCATE হলো DDL কমান্ড যা লগ তৈরি করে না, তাই এটি দ্রুত কাজ করে কিন্তু ট্রানজেকশন লগে সেভাবে রেকর্ড থাকে না বলে রোলব্যাক করা কঠিন। DELETE হলো DML, যা প্রতিটি রো ডিলিট করে লগ রাখে, তাই এটি ধীরগতির এবং রোলব্যাক করা সম্ভব।


নিচের কোডটি লক্ষ্য কর এবং ২০ ও ২১ নং প্রশ্নের উত্তর দাও:

CREATE TABLE Result (
   Roll int(6),
   GPA number(3,2),
   DateOfBirth date
);

২০। উদ্দীপকের Roll ফিল্ডে সর্বোচ্চ কত মানের সংখ্যা রাখা যাবে?
ক) ৯৯৯৯৯৯
খ) ৬
গ) ১০
ঘ) ৬০০০০০

সঠিক উত্তর: ক) ৯৯৯৯৯৯

ব্যাখ্যা: int(6) বা NUMBER(6) বলতে বোঝায় সর্বোচ্চ ৬ অংকের সংখ্যা রাখা যাবে। ৬ অংকের বৃহত্তম সংখ্যা হলো ৯৯৯৯৯৯।


২১। GPA number(3,2) দ্বারা কী বোঝানো হয়েছে?
ক) মোট ৩ অংক, যার মধ্যে ২ অংক দশমিকের পরে
খ) মোট ৩টি সংখ্যা এবং ২টি দশমিক
গ) ৩ থেকে ২ এর মধ্যে যেকোনো সংখ্যা
ঘ) ৩টি পূর্ণসংখ্যা এবং ২টি ভগ্নাংশ

সঠিক উত্তর: ক) মোট ৩ অংক, যার মধ্যে ২ অংক দশমিকের পরে

ব্যাখ্যা: NUMBER(3,2) বা DECIMAL(3,2) এর অর্থ হলো সংখ্যাটিতে মোট ডিজিট থাকবে ৩টি, যার মধ্যে দশমিকের ডানপাশে থাকবে ২টি ডিজিট। উদাহরণস্বরূপ: ৯.৯৯ (মোট ৩ ডিজিট, দশমিকের পর ২)।


২২। কোন ডেটা টাইপটি ছবি বা অডিও সংরক্ষণের জন্য ব্যবহৃত হয়?
ক) OLE Object / BLOB
খ) CHAR
গ) VARCHAR
ঘ) HYPERLINK

সঠিক উত্তর: ক) OLE Object / BLOB

ব্যাখ্যা: বড় বাইনারি অবজেক্ট যেমন ছবি, অডিও, ভিডিও ইত্যাদি সংরক্ষণের জন্য OLE Object (MS Access-এ) বা BLOB (Binary Large Object) ডেটা টাইপ ব্যবহার করা হয়।


২৩। RENAME কমান্ডটি কোন ধরনের SQL কমান্ডের অন্তর্ভুক্ত?
ক) DDL
খ) DML
গ) DCL
ঘ) TCL

সঠিক উত্তর: ক) DDL

ব্যাখ্যা: টেবিল বা ডেটাবেজ অবজেক্টের নাম পরিবর্তনের জন্য ব্যবহৃত RENAME কমান্ডটি ডেটাবেজের স্ট্রাকচার নিয়ে কাজ করে, তাই এটি DDL (Data Definition Language) এর অন্তর্ভুক্ত।


২৪। নিচের কোনটি সঠিক DROP সিনট্যাক্স?
ক) DROP TABLE TableName;
খ) DROP TableName;
গ) DELETE TABLE TableName;
ঘ) REMOVE TABLE TableName;

সঠিক উত্তর: ক) DROP TABLE TableName;

ব্যাখ্যা: টেবিল মুছে ফেলার সঠিক সিনট্যাক্স হলো DROP TABLE এর পর টেবিলের নাম দেওয়া।


২৫। SQL কে বলা হয়—
i. চতুর্থ প্রজন্মের ভাষা (4GL)
ii. কেস সেনসিটিভ ভাষা
iii. নন-প্রসিডিউরাল ভাষা

নিচের কোনটি সঠিক?
ক) i ও ii
খ) i ও iii
গ) ii ও iii
ঘ) i, ii ও iii

সঠিক উত্তর: খ) i ও iii

ব্যাখ্যা: SQL একটি চতুর্থ প্রজন্মের ভাষা (4GL) এবং এটি নন-প্রসিডিউরাল। তবে SQL সাধারণত কেস ইনসেনসিটিভ (Case Insensitive), অর্থাৎ কমান্ডগুলো বড় হাতের বা ছোট হাতের অক্ষরে লিখলে কোনো সমস্যা হয় না। তাই (ii) সঠিক নয়।