SQL কী? ডেটাবেস ভাষা সহজ ভাষায় ব্যাখ্যা
SQL (Structured Query Language, যাকে "S-Q-L" বা "sequel" বলা হয়) হলো রিলেশনাল ডেটাবেসের সাথে কাজ করার আদর্শ ভাষা — সেই ধরনের ডেটাবেস যা সারি ও কলামের টেবিলে ডেটা রাখে, যেমন Postgres, MySQL, SQLite ও SQL Server। আপনি SQL দিয়ে ডেটাকে প্রশ্ন করেন ("এই মাসে কোন গ্রাহকরা বুক করেছেন?") এবং রেকর্ড যোগ, পরিবর্তন বা মুছে দেন। এটি ১৯৭০-এর দশক থেকে চলে আসছে, একটি আন্তর্জাতিক মান, এবং বিশ্বের বিপুল সংখ্যক অ্যাপকে চালায়।
AI দিয়ে বানানোর সময় SQL কেন গুরুত্বপূর্ণ
আপনি যখন একটি AI অ্যাপ builder-কে "অর্ডার সংরক্ষণ করো" বা "আসন্ন বুকিংয়ের তালিকা দেখাও" বলেন, তখন কিছু একটি ডেটাবেসের সাথে কথা বলতে হয় — এবং বেশির ভাগ অ্যাপে তা SQL, সরাসরি লেখা হোক বা একটি ORM-এর মাধ্যমে তৈরি হোক।
আপনাকে নিজে SQL লিখতে হবে না, কিন্তু সামান্য বোঝাপড়া কাজে লাগে:
- আপনি নিজের ডেটা যাচাই করতে পারেন। একটি ছোট কোয়েরি "এই সপ্তাহে কতজন সাইন-আপ করেছে?"-এর উত্তর দেয়, নতুন স্ক্রিন বানানোর চেয়ে দ্রুত।
- আপনি আরও ভালো রিপোর্ট চাইতে পারেন। "মাস ও সেবা অনুযায়ী রাজস্ব গ্রুপ করো" একটি SQL ধারণা। এটি জানলে আপনার অনুরোধ আরও স্পষ্ট হয়।
- আপনি বিপজ্জনক পরিবর্তন চিহ্নিত করতে পারেন।
WHEREধারা ছাড়া একটিDELETEবাUPDATEপ্রতিটি সারিকে প্রভাবিত করে। চালানোর আগে এটি ধরা গুরুত্বপূর্ণ। - আপনার ডেটা আটকে থাকে না। SQL একটি ভাগ করা মান, তাই SQL ডেটাবেসের ডেটা অনেক টুল দিয়ে সরানো ও পড়া যায়।
একটি দৈনন্দিন উপমা
একটি অত্যন্ত সুসংগঠিত গ্রন্থাগারের কথা ভাবুন, যেখানে এমন একজন গ্রন্থাগারিক আছেন যিনি শুধু একটি সুনির্দিষ্ট, সহজ ভাষায় কথা বলেন।
আপনি নিজে তাকে খুঁজতে যান না। আপনি গ্রন্থাগারিকের হাতে একটি কার্ড দেন: "এই লেখকের সব বই খুঁজে আনো, ২০১০-এর পরে প্রকাশিত, নতুনটি আগে।" গ্রন্থাগারিক ভবনটি ভালো করে জানেন এবং ঠিক সেই বইগুলো, সেই ক্রমে, ফিরিয়ে আনেন।
SQL হলো সেই কার্ডের ভাষা। আপনি বলেন কী চান, কীভাবে খুঁজতে হবে তা নয় — ডেটাবেস নিজেই দ্রুততম পথ বের করে।
SQL কীভাবে কাজ করে: টেবিল, সারি ও কলাম
একটি রিলেশনাল ডেটাবেস ডেটা টেবিলে রাখে। প্রতিটি টেবিলে এক ধরনের জিনিস থাকে, প্রতিটি সারি একটি রেকর্ড এবং প্রতিটি কলাম একটি তথ্যের অংশ:
customers
| id | name | city | |
|---|---|---|---|
| 1 | Lena Ortiz | lena@example.com | Lisbon |
| 2 | Sam Patel | sam@example.com | Leeds |
orders
| id | customer_id | total | placed_at |
|---|---|---|---|
| 101 | 1 | 42.00 | 2026-09-20 |
| 102 | 2 | 18.50 | 2026-09-22 |
| 103 | 1 | 25.00 | 2026-09-27 |
customer_id কলামটি প্রতিটি অর্ডারকে একজন গ্রাহকের সাথে যুক্ত করে। এই যোগসূত্রই ডেটাবেসকে "রিলেশনাল" করে।
একটি কাজের উদাহরণ: বাস্তব প্রশ্নের উত্তর দেওয়া
১. ডেটা পড়া — "লিসবনের সব গ্রাহক দেখাও":
SELECT name, email
FROM customers
WHERE city = 'Lisbon';
২. সাজানো ও সীমিত করা — "সবচেয়ে সাম্প্রতিক পাঁচটি অর্ডার":
SELECT id, total, placed_at
FROM orders
ORDER BY placed_at DESC
LIMIT 5;
৩. টেবিল যুক্ত করা — "প্রতিটি অর্ডার গ্রাহকের নামসহ":
SELECT o.id, c.name, o.total
FROM orders o
JOIN customers c ON c.id = o.customer_id;
৪. সারসংক্ষেপ — "প্রতি গ্রাহকের মোট খরচ":
SELECT c.name, SUM(o.total) AS total_spent
FROM customers c
JOIN orders o ON o.customer_id = c.id
GROUP BY c.name
ORDER BY total_spent DESC;
উপরের নমুনা ডেটায় এটি Lena Ortiz-কে 67.00 এবং Sam Patel-কে 18.50 দেখায়।
৫. ডেটা পরিবর্তন:
INSERT INTO customers (name, email, city)
VALUES ('Ana Silva', 'ana@example.com', 'Porto');
UPDATE customers SET city = 'Porto' WHERE id = 1;
DELETE FROM orders WHERE id = 102;
এগুলো প্রায় প্রতিটি অ্যাপের চারটি মৌলিক কাজের সাথে মেলে — তৈরি, পড়া, আপডেট ও মোছা, যা CRUD নামে পরিচিত।
একটি সতর্কবার্তা: UPDATE customers SET city = 'Porto'; কোনো WHERE ধারা ছাড়া প্রতিটি গ্রাহককে বদলে দেয়। কোনো পরিবর্তন চালানোর আগে সবসময় WHERE যাচাই করুন।
SQL-এর প্রধান অংশ
| কমান্ড | এটি কী করে |
|---|---|
SELECT | ডেটা পড়ে |
INSERT | নতুন সারি যোগ করে |
UPDATE | বিদ্যমান সারি বদলায় |
DELETE | সারি মোছে |
CREATE TABLE / ALTER TABLE | টেবিলের কাঠামো তৈরি বা বদলায় |
WHERE | কোন সারিগুলো প্রভাবিত হবে তা ছাঁকে |
JOIN | সম্পর্কিত টেবিল যুক্ত করে |
GROUP BY | সারিগুলোকে দলে ভাগ করে সারসংক্ষেপ করে, COUNT, SUM, AVG-সহ |
ORDER BY / LIMIT | ফলাফল সাজায় ও সীমিত করে |
SQL একটি মানে আবদ্ধ, কিন্তু প্রতিটি ডেটাবেস নিজস্ব অতিরিক্ত ফিচার যোগ করে, যাকে ডায়ালেক্ট বলা হয়। Postgres, MySQL ও SQLite সবই উপরের উদাহরণগুলো বোঝে, যদিও তারিখ ফাংশনের মতো বিবরণ সামান্য আলাদা।
মূল শব্দাবলি
| শব্দ | অর্থ |
|---|---|
| Query | একটি SQL বিবৃতি, বিশেষত যা ডেটা পড়ে। |
| Table / row / column | এক ধরনের জিনিস / একটি রেকর্ড / একটি বৈশিষ্ট্য। |
| Primary key | যে কলাম প্রতিটি সারিকে অনন্যভাবে চিহ্নিত করে, সাধারণত id। |
| Foreign key | অন্য টেবিলের একটি সারিকে নির্দেশ করা কলাম, যেমন customer_id। |
| Index | একটি খোঁজার কাঠামো যা একটি কলামে খোঁজাকে অনেক দ্রুত করে। |
| Schema | সব টেবিল ও কলামের কাঠামো। |
| Transaction | একগুচ্ছ পরিবর্তন যা একসাথে সফল বা ব্যর্থ হয়। |
| SQL injection | এমন আক্রমণ যেখানে ব্যবহারকারীর ইনপুট কোয়েরিতে ঢুকিয়ে দেওয়া হয়। Parameterised কোয়েরি দিয়ে এটি ঠেকানো যায়। |
সাধারণ ভুল ধারণা
- "SQL একটি ডেটাবেস।" SQL হলো ভাষা; Postgres, MySQL ও SQLite হলো সেই ভাষায় কথা বলা ডেটাবেস।
- "SQL পুরনো, তাই অচল।" এটি পরিণত, অচল নয়। আধুনিক ডেটাবেস ও ডেটা টুল এখনও এটি ব্যবহার করে, এবং নতুনগুলোও প্রায়ই SQL সমর্থন যোগ করে।
- "শুধু ডেভেলপাররাই SQL ব্যবহার করতে পারেন।" বিশ্লেষক, মার্কেটার ও প্রতিষ্ঠাতারা প্রতিদিন সহজ কোয়েরি ব্যবহার করেন।
- "SQL নমনীয় ডেটা সামলাতে পারে না।" অনেক SQL ডেটাবেস JSON-ও সংরক্ষণ করে। যেমন Postgres-এ একটি
jsonbধরন আছে। দেখুন SQL বনাম NoSQL। - "AI-কে প্রোডাকশন ডেটাতে যেকোনো SQL চালাতে দেওয়া ঠিক।" পড়া কম ঝুঁকিপূর্ণ; লাইভ ডেটায় পরিবর্তন ও মোছার জন্য ব্যাকআপ ও দ্বিতীয় দৃষ্টি দরকার। দেখুন আপনার অ্যাপের ডেটাবেসের ব্যাকআপ কীভাবে নেবেন।
আপনার AI builder-কে কী জিজ্ঞেস করবেন
- "আমার ডেটাবেসের টেবিলগুলো এবং প্রতিটি কলামের অর্থ দেখাও।"
- "একটি শুধু-পঠন কোয়েরি লেখো: গত ৩০ দিনে প্রতিদিন কতজন নতুন সাইন-আপ করেছে?"
- "কোনো UPDATE বা DELETE চালানোর আগে কোয়েরিটি এবং কতগুলো সারি প্রভাবিত হবে তা দেখাও।"
- "যেসব কলামে আমরা সবচেয়ে বেশি ছাঁকি ও সাজাই সেগুলোতে index যোগ করো।"
- "ব্যবহারকারীর ইনপুট ব্যবহার করে এমন প্রতিটি কোয়েরি parameterised করো।"
- "অর্ডার ও পেমেন্ট আপডেটগুলো একটি transaction-এ মোড়ো, যাতে অর্ধেক সফল না হয়।"
Mythex-এ SQL
আপনার অ্যাপের ডেটা সংরক্ষণ করতে হলে Mythex প্রজেক্টে একটি নির্দিষ্ট Postgres ডেটাবেস যোগ করে — চ্যাটে জিজ্ঞেস করুন, যেমন "ওয়েটলিস্টের ইমেইল একটি ডেটাবেসে সংরক্ষণ করো", অথবা /database কমান্ড ব্যবহার করুন (Database)। এজেন্ট টেবিল তৈরি করে এবং কোয়েরি লেখে, এবং Ask মোডে আপনি যেকোনো কোয়েরি সাধারণ ভাষায় ব্যাখ্যা করতে বলতে পারেন। ডেটাবেস নিজে সম্পর্কে আরও জানতে পড়ুন Postgres কী।
প্রশ্নোত্তর
সহজ ভাষায় SQL কী?
SQL (Structured Query Language) হলো রিলেশনাল ডেটাবেসের সাথে কাজ করার আদর্শ ভাষা। আপনি এটি দিয়ে আপনার ডেটাকে প্রশ্ন করেন, যেমন "এই সপ্তাহে কোন অর্ডারগুলো হয়েছে", এবং রেকর্ড যোগ, পরিবর্তন বা মুছেন।
SQL কীভাবে উচ্চারণ করা হয়?
"S-Q-L" (অক্ষর আলাদা করে বলা) এবং "sequel" দুটিই প্রচলিত ও সঠিক। ভাষাটির মূল নাম ছিল SEQUEL, সেখান থেকেই দ্বিতীয় উচ্চারণটি এসেছে।
SQL কি একটি প্রোগ্রামিং ভাষা?
SQL ডেটা পরিচালনার জন্য ডিজাইন করা একটি কোয়েরি ভাষা। আপনি বর্ণনা করেন কী ফল চান, আর ডেটাবেস বের করে কীভাবে তা পাওয়া যাবে। এটি একা পুরো অ্যাপ বানানোর জন্য ব্যবহৃত হয় না, কিন্তু রিলেশনাল ডেটাবেস ব্যবহারকারী প্রায় প্রতিটি অ্যাপের অংশ।
SQL শেখা কি কঠিন?
মূল বিষয়গুলো সহজ: SELECT, WHERE, ORDER BY, INSERT, UPDATE ও DELETE বেশির ভাগ দৈনন্দিন প্রয়োজন মেটায় এবং প্রায় ইংরেজির মতো পড়া যায়। Join, গ্রুপিং ও পারফরম্যান্স টিউনিং আয়ত্ত করতে বেশি সময় লাগে।
AI দিয়ে অ্যাপ বানাতে কি SQL জানা দরকার?
না। একটি AI builder আপনার জন্য SQL বা ডেটাবেস কোড লেখে। সামান্য জানলে আপনি আপনার ডেটা যাচাই করতে, রিপোর্ট চাইতে এবং ঝুঁকিপূর্ণ পরিবর্তন ঘটার আগেই তা ধরতে পারেন।