আমাদের আগের আর্টিকেলে আমরা ডাটাবেসের প্রাথমিক ধারণা (ডাটাবেস পরিচিতি: তথ্য সংরক্ষণ এবং ব্যবস্থাপনার মূল ভিত্তি) নিয়ে আলোচনা করেছি এবং জেনেছি যে ডাটাবেস মূলত দুই প্রকার: SQL এবং NoSQL। আজকের এই পোস্টে আমরা SQL বা রিলেশনাল ডাটাবেসের একেবারে মূল ভিত্তি – টেবিল, রো, কলাম – এবং কিভাবে সাধারণ SQL কোয়েরি ব্যবহার করে ডেটা পরিচালনা করতে হয়, সে বিষয়ে বিস্তারিত জানবো। PostgreSQL এবং MySQL এর মতো জনপ্রিয় SQL ডাটাবেসগুলো এই মৌলিক ধারণাগুলোর উপর ভিত্তি করেই কাজ করে।
SQL ডাটাবেসের মূল ভিত্তি (Core Foundation of SQL Databases)
রিলেশনাল ডাটাবেস, যা সাধারণত SQL ডাটাবেস নামে পরিচিত, ডেটা সংরক্ষণ করে একটি অত্যন্ত সুগঠিত (structured) উপায়ে। এই কাঠামোর মূল উপাদানগুলো হলো:
টেবিল (Table)
সহজভাবে বললে, একটি SQL ডাটাবেসের টেবিল (Table) অনেকটা একটি স্প্রেডশীট বা ফাইলিং ক্যাবিনেটের ড্রয়ারের মতো। এটি সম্পর্কিত ডেটা এন্ট্রিগুলোর একটি সংগ্রহশালা যা নির্দিষ্ট নিয়ম অনুযায়ী সাজানো থাকে। প্রতিটি টেবিল সাধারণত একটি নির্দিষ্ট ধরণের এনটিটি (Entity) বা বিষয়বস্তুকে উপস্থাপন করে।
- উদাহরণ: একটি অ্যাপ্লিকেশনের ব্যবহারকারীদের তথ্য রাখার জন্য একটি Users টেবিল, পণ্যের তথ্য রাখার জন্য একটি Products টেবিল, অথবা অর্ডারের তথ্য রাখার জন্য একটি Orders টেবিল থাকতে পারে।
কলাম (Column)
একটি টেবিলের প্রতিটি কলাম (Column) সেই টেবিলের এনটিটির একটি নির্দিষ্ট বৈশিষ্ট্য বা অ্যাট্রিবিউট (Attribute) প্রকাশ করে। অনেকটা স্প্রেডশীটের কলাম হেডিংয়ের মতো। প্রতিটি কলামের একটি নির্দিষ্ট নাম থাকে এবং এটি কী ধরণের ডেটা ধারণ করবে তার একটি ডেটা টাইপ (Data Type) সংজ্ঞায়িত করা থাকে।
- উদাহরণ: Users টেবিলে user_id (ইউজার আইডি, সাধারণত Integer টাইপ), username (ইউজারনেম, সাধারণত VARCHAR বা Text টাইপ), email (ইমেইল, VARCHAR টাইপ), registration_date (রেজিস্ট্রেশনের তারিখ, DATE বা TIMESTAMP টাইপ) ইত্যাদি কলাম থাকতে পারে।
রো (Row) / রেকর্ড (Record)
একটি টেবিলের প্রতিটি রো (Row), যা রেকর্ড (Record) নামেও পরিচিত, ঐ টেবিল দ্বারা সংজ্ঞায়িত এনটিটির একটি একক ইনস্ট্যান্স বা ঘটনাকে উপস্থাপন করে। প্রতিটি রো টেবিলের কলামগুলোতে নির্দিষ্ট মান (Value) ধারণ করে।
- উদাহরণ: Users টেবিলের একটি রো হতে পারে একজন নির্দিষ্ট ব্যবহারকারীর সম্পূর্ণ তথ্য, যেমন:
- user_id: 101
- username: ‘johndoe’
- email: ‘[email address removed]’
- registration_date: ‘2025-01-15’
প্রাইমারি কী (Primary Key)
প্রতিটি টেবিলে সাধারণত একটি কলাম (বা একাধিক কলামের সমষ্টি) থাকে যা ঐ টেবিলের প্রতিটি রো-কে অনন্যভাবে (uniquely) শনাক্ত করতে সাহায্য করে। একে প্রাইমারি কী (Primary Key) বলা হয়। এটি ডেটা ইন্টিগ্রিটি বজায় রাখতে এবং টেবিলগুলোর মধ্যে সম্পর্ক স্থাপন করতে অত্যন্ত গুরুত্বপূর্ণ।
- উদাহরণ: Users টেবিলে user_id একটি ভালো প্রাইমারি কী হতে পারে, কারণ প্রতিটি ইউজারের আইডি ভিন্ন হবে।
ফরেন কী (Foreign Key)
একটি টেবিলের কোনো কলাম যখন অন্য একটি টেবিলের প্রাইমারি কী-কে নির্দেশ করে, তখন তাকে ফরেন কী (Foreign Key) বলে। এটি দুটি টেবিলের মধ্যে সম্পর্ক (Relationship) স্থাপন করতে ব্যবহৃত হয়।
- উদাহরণ: একটি Orders টেবিলে user_id নামে একটি কলাম থাকতে পারে, যা Users টেবিলের user_id-কে নির্দেশ করে। এর মাধ্যমে কোন অর্ডারটি কোন ইউজার করেছেন তা জানা যায়।
বেসিক SQL কোয়েরি: ডেটার সাথে ইন্টারঅ্যাকশন (Basic SQL Queries: Interacting with Data)
SQL (Structured Query Language) হলো রিলেশনাল ডাটাবেসের সাথে কথা বলার স্ট্যান্ডার্ড ভাষা। এর মাধ্যমে আমরা ডাটাবেসে ডেটা সংরক্ষণ, পুনরুদ্ধার, আপডেট এবং মুছে ফেলতে পারি। এই চারটি মৌলিক কাজকে সাধারণত CRUD অপারেশন বলা হয় (Create, Read, Update, Delete)। আসুন দেখি কিভাবে SQL ব্যবহার করে এই কাজগুলো করা যায়:
ডেটা রিট্রিভ করা (Retrieving Data): SELECT
ডেটাবেস থেকে তথ্য খুঁজে বের করার জন্য SELECT স্টেটমেন্ট ব্যবহার করা হয়।
- সিনট্যাক্স:
SQL
SELECT column1, column2, …
FROM table_name
WHERE condition; - উদাহরণ:
- Users টেবিল থেকে সকল কলামের সব রো সিলেক্ট করা:
SQL
SELECT * FROM Users;
(* মানে হলো সকল কলাম) - শুধুমাত্র username এবং email কলাম সিলেক্ট করা:
SQL
SELECT username, email FROM Users; - শুধুমাত্র নির্দিষ্ট শর্ত পূরণকারী রো সিলেক্ট করা (যেমন, যারা 2025 সালের পরে রেজিস্টার করেছে):
SQL
SELECT * FROM Users
WHERE registration_date >= ‘2025-01-01’;
(WHERE ক্লজ ব্যবহার করে শর্ত যোগ করা হয়)
নতুন ডেটা প্রবেশ করানো (Inserting Data): INSERT INTO
টেবিলে নতুন রো বা রেকর্ড যোগ করার জন্য INSERT INTO স্টেটমেন্ট ব্যবহার করা হয়।
- সিনট্যাক্স:
SQL
INSERT INTO table_name (column1, column2, …)
VALUES (value1, value2, …); - ** উদাহরণ:** Users টেবিলে একজন নতুন ইউজার যোগ করা:
SQL
INSERT INTO Users (username, email, registration_date)
VALUES (‘janedoe’, ‘jane.doe@example.com’, ‘2025-04-02’);
(যদি user_id অটো-ইনক্রিমেন্টিং প্রাইমারি কী হয়, তবে সেটি সাধারণত ইনসার্ট করার প্রয়োজন হয় না, ডাটাবেস নিজে থেকেই একটি ইউনিক আইডি জেনারেট করে নেয়।)
ডেটা আপডেট করা (Updating Data): UPDATE
টেবিলের বিদ্যমান কোনো রো বা রেকর্ডের ডেটা পরিবর্তন করার জন্য UPDATE স্টেটমেন্ট ব্যবহার করা হয়।
- সিনট্যাক্স:
SQL
UPDATE table_name
SET column1 = value1, column2 = value2, …
WHERE condition; - সতর্কতা: UPDATE স্টেটমেন্টে WHERE ক্লজ ব্যবহার করা অত্যন্ত গুরুত্বপূর্ণ। WHERE ক্লজ নির্দিষ্ট করে দেয় কোন রো বা রোগুলো আপডেট করতে হবে। এটি ব্যবহার না করলে টেবিলের সকল রো আপডেট হয়ে যাবে!
- উদাহরণ: janedoe নামের ইউজারের ইমেইল আপডেট করা:
SQL
UPDATE Users
SET email = ‘jane.d@newdomain.com’
WHERE username = ‘janedoe’;
ডেটা মুছে ফেলা (Deleting Data): DELETE
টেবিল থেকে এক বা একাধিক রো মুছে ফেলার জন্য DELETE স্টেটমেন্ট ব্যবহার করা হয়।
- সিনট্যাক্স:
SQL
DELETE FROM table_name
WHERE condition; - সতর্কতা: DELETE স্টেটমেন্টেও WHERE ক্লজ ব্যবহার করা অপরিহার্য। WHERE ক্লজ ছাড়া DELETE স্টেটমেন্ট চালালে টেবিলের সকল ডেটা মুছে যাবে!
- উদাহরণ: janedoe নামের ইউজারকে টেবিল থেকে মুছে ফেলা:
SQL
DELETE FROM Users
WHERE username = ‘janedoe’;
PostgreSQL বনাম MySQL (Briefly)
PostgreSQL এবং MySQL দুটিই অত্যন্ত জনপ্রিয় এবং শক্তিশালী ওপেন-সোর্স রিলেশনাল ডাটাবেস ম্যানেজমেন্ট সিস্টেম (RDBMS)। যদিও তাদের মধ্যে আর্কিটেকচার এবং কিছু ফিচার সেটে পার্থক্য রয়েছে, উপরে আলোচিত মৌলিক SQL ধারণা (টেবিল, রো, কলাম) এবং বেসিক কোয়েরিগুলো (SELECT, INSERT, UPDATE, DELETE) উভয় ডাটাবেসেই প্রায় একই রকমভাবে কাজ করে।
- MySQL: ওয়েব অ্যাপ্লিকেশন (বিশেষ করে LAMP/LEMP স্ট্যাকে) এর জন্য খুব জনপ্রিয়, দ্রুত পারফরম্যান্স এবং তুলনামূলক সহজ ব্যবহারের জন্য পরিচিত।
- PostgreSQL: spesso ফিচার-সমৃদ্ধ, SQL স্ট্যান্ডার্ডের সাথে বেশি সামঞ্জস্যপূর্ণ, জটিল কোয়েরি এবং ডেটা অ্যানালিটিক্সের জন্য শক্তিশালী এবং এক্সটেনসিবিলিটির জন্য পরিচিত।
আপনি কোনটি ব্যবহার করবেন তা নির্ভর করবে আপনার প্রোজেক্টের চাহিদা, স্কেলিং স্ট্র্যাটেজি এবং পার্সোনাল পছন্দের উপর। তবে মৌলিক SQL জ্ঞান উভয় ক্ষেত্রেই প্রযোজ্য।
শেষ কথা (Conclusion)
SQL ডাটাবেসের মূল ভিত্তি হলো টেবিল, রো এবং কলাম – যা ডেটাকে একটি সুসংগঠিত কাঠামো প্রদান করে। SELECT, INSERT, UPDATE, এবং DELETE এই চারটি মৌলিক SQL কোয়েরি ব্যবহার করে আমরা ডাটাবেসের সাথে ইন্টারঅ্যাক্ট করতে পারি, অর্থাৎ ডেটা পড়তে, লিখতে, পরিবর্তন করতে এবং মুছতে পারি।
PostgreSQL বা MySQL-এর মতো শক্তিশালী রিলেশনাল ডাটাবেস ব্যবহার করার প্রথম ধাপ হলো এই মৌলিক ধারণা এবং কোয়েরিগুলো ভালোভাবে বোঝা এবং অনুশীলন করা। একজন সফটওয়্যার বা ব্যাকএন্ড ইঞ্জিনিয়ার হিসেবে এই জ্ঞান থাকা অপরিহার্য। এরপর আপনি SQL-এর আরও গভীরে যেতে পারেন – বিভিন্ন ডেটা টাইপ, কনস্ট্রেইন্টস (Constraints), ইনডেক্সিং (Indexing), জয়েন (JOIN) অপারেশন এবং আরও জটিল কোয়েরি সম্পর্কে জানতে পারেন যা আপনাকে আরও কার্যকরভাবে ডেটা পরিচালনা করতে সাহায্য করবে।
Primary Bengali Keyword(s): এসকিউএল ডাটাবেস, এসকিউএল কোয়েরি, টেবিল, রো, কলাম
Secondary Bengali Keyword(s): PostgreSQL, MySQL, রিলেশনাল ডাটাবেস, ডেটা ম্যানিপুলেশন, SELECT, INSERT, UPDATE, DELETE, প্রাথমিক এসকিউএল