SQLite কী এবং কেন শিখবেন? সম্পূর্ণ ওভারভিউ ও কমান্ড ক্লাসিফিকেশন (DDL, DML, DQL)

Blog / SQLite কী এবং কেন শিখবেন? সম্পূর্ণ ওভারভিউ ও কমান্ড ক্লাসিফিকেশন (DDL, DML, DQL)

SQLite কী এবং কেন শিখবেন? সম্পূর্ণ ওভারভিউ ও কমান্ড ক্লাসিফিকেশন (DDL, DML, DQL) Detail Page

SQLite কী এবং কেন শিখবেন? সম্পূর্ণ ওভারভিউ ও কমান্ড ক্লাসিফিকেশন (DDL, DML, DQL)

SQLite পরিচিতি ও বেসিক কমান্ড – বাংলা টিউটোরিয়াল

আমরা আগের পর্বে SQLite ইন্সটল করে প্রথম ডাটাবেস তৈরি করেছি। আজ আমরা আরেকটু গভীরে যাব। SQLite কী, কেন এটি এত জনপ্রিয়, এর ইতিহাস, সীমাবদ্ধতাগুলো কী কী, এবং SQLite-তে ব্যবহৃত SQL কমান্ডগুলোকে কীভাবে ভাগ করা হয় – সবকিছু উদাহরণসহ বুঝব। এই পর্বটি পুরো সিরিজের ভিত্তি তৈরি করবে, কারণ পরের ধাপগুলোতে আমরা একেকটি কমান্ড বিস্তারিত শিখব।


SQLite কী?

SQLite হলো একটি ইন-প্রসেস লাইব্রেরি যা স্বয়ংসম্পূর্ণ (self-contained), সার্ভারবিহীন (serverless), জিরো-কনফিগারেশন (zero-configuration) এবং ট্রানজ্যাকশনাল SQL ডাটাবেস ইঞ্জিন বাস্তবায়ন করে। সহজ ভাষায়, SQLite এমন একটি ডাটাবেস যা আপনার অ্যাপ্লিকেশনের ভেতরেই চলতে পারে, আলাদা করে কোনো সার্ভার প্রোগ্রাম চালাতে হয় না। আপনি এটি আপনার সফটওয়্যারের সাথে স্ট্যাটিক বা ডায়নামিক লাইব্রেরি হিসেবে যুক্ত করে নিতে পারেন।

মজার ব্যাপার হলো, একটি সম্পূর্ণ SQLite ডাটাবেস মাত্র একটি ক্রস-প্ল্যাটফর্ম ফাইলে সংরক্ষিত হয়। আপনার কম্পিউটারের সাধারণ ফাইলের মতোই আপনি এটিকে কপি, ডিলিট বা শেয়ার করতে পারেন।


কেন SQLite ব্যবহার করবেন?

  • সার্ভার প্রয়োজন নেই: কোনো আলাদা সার্ভার প্রসেস সেটআপ বা রক্ষণাবেক্ষণ ছাড়াই ডাটাবেস ব্যবহার করা যায়।
  • জিরো-কনফিগারেশন: ইন্সটল ও কনফিগার করার কোনো ঝামেলা নেই। অধিকাংশ অপারেটিং সিস্টেমেই এটি আগে থেকে থাকে।
  • একটিমাত্র ফাইল: পুরো ডাটাবেস একটি মাত্র ফাইলে থাকে, সহজে স্থানান্তরযোগ্য।
  • হালকা ও ছোট: সম্পূর্ণ কনফিগার করেও সাইজ ৪০০ কিলোবাইটের কম। কিছু ফিচার বাদ দিলে ২৫০ কেবির নিচেও আনা যায়।
  • স্বয়ংসম্পূর্ণ: বাইরের কোনো লাইব্রেরির ওপর নির্ভর করে না।
  • ACID-কমপ্লায়েন্ট ট্রানজ্যাকশন: ডাটা নিরাপদ থাকে একাধিক প্রসেস বা থ্রেড থেকে একসাথে অ্যাক্সেস করলেও।
  • SQL92 স্ট্যান্ডার্ডের বেশিরভাগ ফিচার সাপোর্ট করে।
  • ANSI-C তে লেখা: সহজ API, বিভিন্ন প্রোগ্রামিং ভাষা থেকে ব্যবহার করা যায়।
  • ক্রস-প্ল্যাটফর্ম: ইউনিক্স (লিনাক্স, ম্যাক, অ্যান্ড্রয়েড, আইওএস) ও উইন্ডোজে কাজ করে।

সংক্ষিপ্ত ইতিহাস

  • ২০০০: ডি. রিচার্ড হিপ SQLite ডিজাইন করেন, যার লক্ষ্য ছিল এমন একটি ডাটাবেস তৈরি করা যা কোনো অ্যাডমিনিস্ট্রেশন ছাড়াই প্রোগ্রাম চালাতে পারে।
  • ২০০০, আগস্ট: GNU Database Manager সহ SQLite 1.0 রিলিজ হয়।
  • ২০১১: হিপ SQLite ডাটাবেসে UNQL ইন্টারফেস যোগ করার এবং UNQLite (ডকুমেন্ট-ওরিয়েন্টেড ডাটাবেস) তৈরির ঘোষণা দেন।
  • বর্তমানে SQLite বিশ্বের সবচেয়ে বহুল ব্যবহৃত ডাটাবেস ইঞ্জিন, যা কোটি কোটি ডিভাইসে চলছে।

SQLite এর সীমাবদ্ধতা

যদিও SQLite অনেক শক্তিশালী, তবুও SQL92 স্ট্যান্ডার্ডের কিছু ফিচার এটি সাপোর্ট করে না। নিচের টেবিলে প্রধান সীমাবদ্ধতাগুলো দেখানো হলো:

ক্রমিকফিচার ও বিবরণ
RIGHT OUTER JOIN – শুধু LEFT OUTER JOIN ইমপ্লিমেন্ট করা আছে।
FULL OUTER JOIN – সমর্থিত নয়।
ALTER TABLE – RENAME TABLE এবং ADD COLUMN সমর্থিত। DROP COLUMN, ALTER COLUMN, ADD CONSTRAINT সমর্থিত নয়।
ট্রিগার – FOR EACH ROW ট্রিগার কাজ করে, কিন্তু FOR EACH STATEMENT ট্রিগার নেই।
VIEW – SQLite-তে ভিউ কেবল পড়ার জন্য; আপনি ভিউর উপরে DELETE, INSERT, UPDATE চালাতে পারবেন না।
GRANT এবং REVOKE – কোনো ইউজার-পারমিশন সিস্টেম নেই। শুধু অপারেটিং সিস্টেমের ফাইল পারমিশন কাজ করে।

সুতরাং, বিশাল এন্টারপ্রাইজ অ্যাপ্লিকেশনের যেখানে জটিল ইউজার রোল বা অ্যাডভান্সড জয়েন প্রয়োজন, সেখানে SQLite উপযুক্ত নাও হতে পারে। কিন্তু ব্যক্তিগত প্রকল্প, মোবাইল অ্যাপ, এমবেডেড সিস্টেমের জন্য এটি আদর্শ।


SQLite কমান্ডের শ্রেণীবিভাগ

SQLite-তে ব্যবহৃত SQL কমান্ডগুলোকে আমরা তিনটি প্রধান ভাগে ভাগ করতে পারি – DDL, DML, DQL। এগুলো শেখার আগে প্রথমেই ছোট্ট একটি ডাটাবেস ও টেবিল তৈরি করে নেই।

প্রাথমিক সেটআপ

(আপনার সিস্টেমে SQLite ইন্সটল করা না থাকলে আমাদের সিরিজের প্রথম পর্বটি দেখে নিন। টার্মিনাল খুলুন, একটি ফোল্ডারে গিয়ে নিচের কমান্ড দিন।)

bash

sqlite3 overview_example.db

এটি overview_example.db নামে ডাটাবেস ফাইল তৈরি করবে এবং SQLite শেলে নিয়ে যাবে।

টেবিল বানাই:

sql

CREATE TABLE books (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    title TEXT NOT NULL,
    author TEXT NOT NULL,
    price REAL
);

১. DDL – ডাটা ডেফিনিশন ল্যাঙ্গুয়েজ

ডাটাবেসের গঠন (স্ট্রাকচার) তৈরি ও পরিবর্তন করে।

কমান্ডবিবরণ
CREATEনতুন টেবিল, ভিউ বা অন্যান্য অবজেক্ট তৈরি করে।
ALTERবিদ্যমান কোনো ডাটাবেস অবজেক্ট পরিবর্তন করে (সীমিতভাবে, যেমন টেবিলের নাম বদলানো বা কলাম যোগ)।
DROPসম্পূর্ণ টেবিল, ভিউ বা অন্য অবজেক্ট ডিলিট করে।

উদাহরণ:

sql

-- নতুন কলাম যোগ (শুধুমাত্র ADD COLUMN সাপোর্ট করে)
ALTER TABLE books ADD COLUMN published_year INTEGER;

-- টেবিল ডিলিট
DROP TABLE books;  -- পুরো টেবিল ও তার সব ডাটা মুছে যাবে

২. DML – ডাটা ম্যানিপুলেশন ল্যাঙ্গুয়েজ

টেবিলের ভিতরের ডাটা (রেকর্ড) নিয়ে কাজ করে।

কমান্ডবিবরণ
INSERTনতুন রেকর্ড যোগ করে।
UPDATEবিদ্যমান রেকর্ড পরিবর্তন করে।
DELETEরেকর্ড মুছে ফেলে।

উদাহরণ:

sql

-- ডাটা ইনসার্ট
INSERT INTO books (title, author, price, published_year)
VALUES ('পথের পাঁচালী', 'বিভূতিভূষণ বন্দ্যোপাধ্যায়', 250.00, 1929);

INSERT INTO books (title, author, price)
VALUES ('শেষের কবিতা', 'রবীন্দ্রনাথ ঠাকুর', 150.00);

-- আপডেট
UPDATE books SET price = 275.00 WHERE title = 'পথের পাঁচালী';

-- ডিলিট
DELETE FROM books WHERE author = 'রবীন্দ্রনাথ ঠাকুর';

৩. DQL – ডাটা কোয়েরি ল্যাঙ্গুয়েজ

টেবিল থেকে ডাটা খুঁজে আনে।

কমান্ডবিবরণ
SELECTএক বা একাধিক টেবিল থেকে নির্দিষ্ট রেকর্ড বের করে আনে।

উদাহরণ:

sql

-- সব বই দেখুন
SELECT * FROM books;

-- নির্দিষ্ট কলাম
SELECT title, price FROM books;

-- শর্তসাপেক্ষ
SELECT * FROM books WHERE price > 200;

বাস্তব উদাহরণ: পুরো ফ্লো একসাথে

sql

-- টেবিল পুনরায় তৈরি
DROP TABLE IF EXISTS books;
CREATE TABLE books (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    title TEXT NOT NULL,
    author TEXT NOT NULL,
    price REAL DEFAULT 0.0
);

-- ইনসার্ট
INSERT INTO books (title, author, price) VALUES ('গীতাঞ্জলি', 'রবীন্দ্রনাথ ঠাকুর', 120.00);
INSERT INTO books (title, author, price) VALUES ('চোখের বালি', 'রবীন্দ্রনাথ ঠাকুর', 90.00);

-- দেখি কী আছে
SELECT * FROM books;
/*
আউটপুট:
1|গীতাঞ্জলি|রবীন্দ্রনাথ ঠাকুর|120.0
2|চোখের বালি|রবীন্দ্রনাথ ঠাকুর|90.0
*/

-- আপডেট
UPDATE books SET price = 130.00 WHERE title = 'গীতাঞ্জলি';

-- ডিলিট
DELETE FROM books WHERE id = 2;

সবশেষে .quit দিয়ে বেরিয়ে আসুন।


ডিরেক্টরি স্ট্রাকচার ও প্যাকেজ

এই পুরো পর্বে আমরা কোনো বাড়তি প্যাকেজ ব্যবহার করিনি। শুধু sqlite3 কমান্ড-লাইন টুলই যথেষ্ট। আপনার প্রজেক্ট ফোল্ডারে একটি ফাইল তৈরি হয়েছে:

text

sqlite-bangla-tutorial/
└── overview_example.db

এই .db ফাইলটিই আপনার সম্পূর্ণ ডাটাবেস। ভবিষ্যতে যেকোনো প্রোগ্রামিং ভাষায় SQLite লাইব্রেরি দিয়ে একই ফাইলে অ্যাক্সেস করতে পারবেন।


পরবর্তী পর্বে

আমরা SQLite-এর ডেটা টাইপ ও টেবিল তৈরির খুঁটিনাটি শিখব। কীভাবে প্রাইমারি কি, অটোইনক্রিমেন্ট, ইউনিক কনস্ট্রেইন্ট কাজ করে – বিস্তারিত উদাহরণসহ।

লেখকের কথা: পুরো টিউটোরিয়ালটি আমরা সর্বশেষ SQLite 3.51.1 ভার্সনের সাথে মিল রেখে তৈরি করছি। বাংলায় প্রযুক্তি শেখাকে সহজ করাই আমাদের লক্ষ্য। কোনো প্রশ্ন থাকলে কমেন্টে জানান, এবং সিরিজের সব আপডেট পেতে ব্লগে সাবস্ক্রাইব করুন। শেয়ার করতে ভুলবেন না!



SQLite Full Course

  1. SQLite পরিচিতি ও ইন্সটলেশন গাইড – বাংলায় প্রথম ডাটাবেস তৈরি
  2. SQLite কী এবং কেন শিখবেন? সম্পূর্ণ ওভারভিউ ও কমান্ড ক্লাসিফিকেশন (DDL, DML, DQL)
  3. SQLite ইন্সটলেশন গাইড – Windows, Linux ও Mac-এ ধাপে ধাপে সেটআপ
  4. SQLite ডট কমান্ড (Dot Commands) – সম্পূর্ণ গাইড, আউটপুট ফরম্যাট ও sqlite_master
  5. SQLite সিনট্যাক্স (Syntax) – কেস সেনসিটিভিটি, কমেন্ট, সব কমান্ডের গঠন ও উদাহরণ
  6. SQLite ডেটা টাইপ (Data Type) – স্টোরেজ ক্লাস, টাইপ অ্যাফিনিটি, বুলিয়ান ও ডেট-টাইম
  7. SQLite ডেটাবেস তৈরি (Create Database) – ধাপে ধাপে গাইড, .dump এক্সপোর্ট ও রিস্টোর
  8. SQLite ATTACH DATABASE – একাধিক ডাটাবেস সংযুক্ত করার সম্পূর্ণ গাইড (বাংলা)
  9. SQLite DETACH DATABASE – সংযুক্ত ডাটাবেস বিচ্ছিন্ন করার পূর্ণাঙ্গ গাইড
  10. SQLite CREATE TABLE স্টেটমেন্ট – টেবিল তৈরি করার পূর্ণাঙ্গ গাইড (বাংলা)
  11. SQLite DROP TABLE স্টেটমেন্ট – টেবিল ডিলিট করার সম্পূর্ণ গাইড (বাংলা)
  12. SQLite INSERT INTO স্টেটমেন্ট – ডেটা ইনসার্ট করার সম্পূর্ণ গাইড (বাংলা)
  13. SQLite SELECT স্টেটমেন্ট – টেবিল থেকে ডেটা ফেচ করার সম্পূর্ণ গাইড (বাংলা)
  14. SQLite অপারেটর (Operators) – Arithmetic, Comparison, Logical, Bitwise (বাংলা টিউটোরিয়াল)
  15. SQLite এক্সপ্রেশন (Expressions) – বুলিয়ান, নিউমেরিক ও ডেট এক্সপ্রেশন (বাংলা টিউটোরিয়াল)
  16. SQLite AND ও OR অপারেটর – একাধিক শর্ত দিয়ে ডেটা ফিল্টার (বাংলা টিউটোরিয়াল)
  17. SQLite UPDATE Query – টেবিলের ডেটা পরিবর্তন করার সম্পূর্ণ গাইড (বাংলা)
  18. SQLite DELETE Query – টেবিল থেকে ডেটা মুছে ফেলার সম্পূর্ণ গাইড (বাংলা)
  19. SQLite LIKE Operator – প্যাটার্ন মিলিয়ে ডেটা খোঁজার সম্পূর্ণ গাইড (বাংলা)
  20. SQLite GLOB Operator – কেস-সেনসিটিভ প্যাটার্ন মিলিয়ে ডেটা খোঁজা (বাংলা)
  21. SQLite LIMIT Clause – ডেটা সীমিত করে আনার সম্পূর্ণ গাইড (বাংলা)
  22. SQLite ORDER BY ক্লজ – ডেটা সাজানোর সম্পূর্ণ গাইড (বাংলা)
  23. SQLite GROUP BY ক্লজ – ডেটা গ্রুপ করে বিশ্লেষণ করার সম্পূর্ণ গাইড (বাংলা)
  24. SQLite HAVING ক্লজ – গ্রুপের উপর শর্ত দিয়ে ডেটা ফিল্টার (বাংলা টিউটোরিয়াল)
  25. SQLite DISTINCT Keyword – ডুপ্লিকেট ডেটা বাদ দিয়ে ইউনিক ভ্যালু পাওয়া (বাংলা)
  26. SQLite PRAGMA কমান্ড – ডাটাবেস কনফিগারেশন ও সেটিংস (বাংলা টিউটোরিয়াল)
  27. SQLite Constraints – NOT NULL, DEFAULT, UNIQUE, PRIMARY KEY, CHECK (বাংলা টিউটোরিয়াল)
  28. SQLite JOINS – CROSS JOIN, INNER JOIN, LEFT OUTER JOIN (বাংলা টিউটোরিয়াল)
  29. SQLite UNION ও UNION ALL – একাধিক SELECT একত্রিত করার সম্পূর্ণ গাইড (বাংলা)
  30. SQLite NULL Values – NULL কী, IS NULL, IS NOT NULL (বাংলা টিউটোরিয়াল)
  31. SQLite ALIAS Syntax – টেবিল ও কলামের অস্থায়ী নাম (বাংলা টিউটোরিয়াল)
  32. SQLite Triggers – স্বয়ংক্রিয় ট্রিগার তৈরি, ব্যবহার ও মুছে ফেলা (বাংলা টিউটোরিয়াল)
  33. SQLite Indexes – CREATE, UNIQUE, COMPOSITE, DROP INDEX (বাংলা টিউটোরিয়াল)
  34. SQLite INDEXED BY Clause – নির্দিষ্ট ইনডেক্স ব্যবহার ও NOT INDEXED (বাংলা)
  35. SQLite ALTER TABLE Command – টেবিলের গঠন পরিবর্তন (বাংলা টিউটোরিয়াল)
  36. SQLite TRUNCATE TABLE Command – DELETE ও DROP দিয়ে টেবিল খালি করা (বাংলা)
  37. SQLite Views – ভার্চুয়াল টেবিল তৈরি, ব্যবহার ও ডিলিট (বাংলা টিউটোরিয়াল)
  38. SQLite Transactions – BEGIN, COMMIT, ROLLBACK ও ACID প্রপার্টি (বাংলা)
  39. SQLite Subqueries – SELECT, INSERT, UPDATE, DELETE-এ সাবকোয়েরি ব্যবহার (বাংলা টিউটোরিয়াল)
  40. SQLite AUTOINCREMENT – স্বয়ংক্রিয়ভাবে প্রাইমারি কি মান বৃদ্ধি (বাংলা টিউটোরিয়াল)
  41. SQLite SQL Injection – কী, কেন বিপজ্জনক ও প্রতিরোধের উপায় (বাংলা টিউটোরিয়াল)
  42. SQLite EXPLAIN ও EXPLAIN QUERY PLAN – কোয়েরি বিশ্লেষণ (বাংলা টিউটোরিয়াল)
  43. SQLite VACUUM – ডাটাবেস পরিষ্কার, স্পেস রিক্লেইম ও অটো-ভ্যাকুয়াম (বাংলা টিউটোরিয়াল)
  44. SQLite Date & Time ফাংশন – date(), time(), datetime(), julianday(), strftime() (বাংলা টিউটোরিয়াল)
  45. SQLite Useful Functions – COUNT, MAX, MIN, AVG, SUM, RANDOM, ABS, UPPER, LOWER, LENGTH (বাংলা টিউটোরিয়াল)
  46. SQLite C/C++ প্রোগ্রামিং – sqlite3_open, exec, close, callback (বাংলা টিউটোরিয়াল)
  47. SQLite PHP প্রোগ্রামিং – PHP-তে SQLite ডাটাবেস ব্যবহার (বাংলা টিউটোরিয়াল)
  48. SQLite Perl প্রোগ্রামিং – DBI/DBD::SQLite দিয়ে ডাটাবেস অপারেশন (বাংলা)
  49. SQLite Python প্রোগ্রামিং – sqlite3 মডিউল দিয়ে CRUD অপারেশন (বাংলা টিউটোরিয়াল)
  50. SQLite Quick Guide – বাংলায় পূর্ণাঙ্গ সংক্ষিপ্ত টিউটোরিয়াল (শেখার সহজ গাইড)

Leave a Reply

Welcome to To Learn Team, a dynamic educational platform where knowledge meets collaboration. Designed for students, educators, and lifelong learners, we provide a curated hub of interactive study groups, expert tutorials, and comprehensive resources across diverse subjects. We believe that learning is most powerful when done together. By uniting a global community, we transform curiosity into confidence and individual aspirations into shared achievements. Join the To Learn Team today—elevate your intellect and grow with us!

Get In Touch

Address

Dhaka, Bangladesh

Email

abir43tee@gmail.com

Phone

+880 1711427737

Quick Search