SQLite-এ কাজ করার সময় আমরা যে কমান্ডগুলো ব্যবহার করি, সেগুলো দুই ধরনের: SQL কমান্ড (যেমন SELECT, INSERT) আর ডট কমান্ড (যেমন .tables, .schema)। ডট কমান্ডগুলো SQL স্টেটমেন্ট নয় – এগুলো SQLite-এর নিজস্ব কমান্ড-লাইন টুলসের সহায়তাকারী নির্দেশ। এদের বড় বৈশিষ্ট্য হলো, এদের শেষে কখনোই সেমিকোলন (;) দিতে হয় না। আজ আমরা এই ডট কমান্ডগুলোর বিস্তারিত ব্যবহার, আউটপুট ফরম্যাটিং এবং গোপন sqlite_master টেবিল সম্পর্কে শিখব।
শুরু করা যাক
টার্মিনাল বা কমান্ড প্রম্পটে sqlite3 লিখে এন্টার দিন। (যদি ইন্সটল না করে থাকেন, তাহলে সিরিজের তৃতীয় পর্ব দেখুন।) এটি একটি অস্থায়ী ইন-মেমরি ডাটাবেস খুলবে এবং sqlite> প্রম্পট দেখাবে।
bash
$ sqlite3 SQLite version 3.51.1 2025-11-28 17:28:25 Enter ".help" for usage hints. Connected to a transient in-memory database. Use ".open FILENAME" to reopen on a persistent database. sqlite>
এখন .help কমান্ড দিলেই সব ডট কমান্ডের তালিকা দেখা যাবে।
sql
sqlite> .help
তবে এত বড় তালিকা একবারে দেখে ভয় পাওয়ার কিছু নেই। নিচে আমরা গুরুত্বপূর্ণ কমান্ডগুলো একে একে বুঝব।
১. গুরুত্বপূর্ণ SQLite ডট কমান্ডসমূহ
নিচের টেবিলে প্রতিটি কমান্ড, তার সংক্ষিপ্ত বিবরণ এবং ব্যবহার উদাহরণ দেওয়া হলো।
| ক্রমিক | কমান্ড ও বিবরণ | ব্যবহারিক উদাহরণ / ব্যাখ্যা | |
|---|---|---|---|
| 1 | .backup ?DB? FILE – ডাটাবেস (ডিফল্ট “main”) ব্যাকআপ করে FILE-এ সংরক্ষণ করে। | .backup main backup.db | |
| 2 | .bail ON|OFF – কোনো ত্রুটি ঘটলে সাথে সাথে থেমে যাবে কিনা। ডিফল্ট OFF। | .bail ON – এখন কোনো ভুল SQL দিলেই বের হয়ে আসবে। | |
| 3 | .databases – সংযুক্ত সকল ডাটাবেসের নাম ও ফাইল পাথ দেখায়। | sqlite> .databases আউটপুট: main: /path/to/db.sqlite | |
| 4 | .dump ?TABLE? – সম্পূর্ণ ডাটাবেসকে SQL টেক্সট ফরম্যাটে ডাম্প করে। যদি TABLE এর নাম দেওয়া হয়, তাহলে LIKE প্যাটার্ন মেনে শুধু সে সব টেবিল ডাম্প হয়। | .dump (সব), .dump students (শুধু students সম্পর্কিত) | |
| 5 | .echo ON|OFF – কমান্ড ইকো চালু/বন্ধ। | .echo ON – SQL ফাইল থেকে পড়ার সময় প্রতিটি কমান্ড স্ক্রিনে দেখা যায়। | |
| 6 | .exit – SQLite প্রম্পট থেকে বের হওয়া। | .exit (বা .quit) | |
| 7 | .explain ON|OFF – EXPLAIN-এর জন্য উপযুক্ত আউটপুট মোড চালু। | .explain বা .explain ON | |
| 8 | .header(s) ON|OFF – কলামের হেডার প্রদর্শন চালু বা বন্ধ। | .headers ON – SELECT এর আউটপুটে কলামের নাম দেখা যাবে। | |
| 9 | .help – সব ডট কমান্ডের তালিকা দেখায়। | .help | |
| 10 | .import FILE TABLE – FILE থেকে ডাটা ইম্পোর্ট করে TABLE-এ ভরে। | .import data.csv students (CSV ফাইল থেকে শিক্ষার্থী টেবিলে ডাটা ভরবে) | |
| 11 | .indices ?TABLE? – সব ইনডেক্সের নাম দেখায়। TABLE দিলে LIKE প্যাটার্নে ফিল্টার করে। | .indices | |
| 12 | .load FILE ?ENTRY? – একটি এক্সটেনশন লাইব্রেরি লোড করে। | .load ./myextension | |
| 13 | .log FILE|off – লগিং চালু বা বন্ধ করে। FILE হতে পারে কোনো ফাইল, stderr বা stdout। | .log query.log – সব কমান্ড ও আউটপুট query.log ফাইলে জমা হবে। | |
| 14 | .mode MODE – আউটপুট মোড সেট করে। MODE হতে পারে: csv, column, html, insert, line, list, tabs, tcl। | .mode csv, .mode column (সচরাচর column মোডই পড়তে সুবিধাজনক) | |
| 15 | .nullvalue STRING – NULL মানের জায়গায় STRING দেখাবে। | .nullvalue NULL – ফাঁকা না থেকে ‘NULL’ শব্দটি প্রিন্ট হবে। | |
| 16 | .output FILENAME – পরবর্তী সব আউটপুট FILENAME-এ পাঠাবে। | .output result.txt | |
| 17 | .output stdout – আউটপুট আবার স্ক্রিনে পাঠাতে। | .output stdout | |
| 18 | .print STRING… – লিটারেল স্ট্রিং প্রিন্ট করে। | .print "Hello, SQLite!" | |
| 19 | .prompt MAIN CONTINUE – প্রম্পটের টেক্সট বদলায়। | .prompt "sql> " "> " | |
| 20 | .quit – SQLite থেকে বের হওয়া। | .quit | |
| 21 | .read FILENAME – FILENAME-এ থাকা SQL স্টেটমেন্টগুলো এক্সিকিউট করে। | .read create_tables.sql | |
| 22 | .schema ?TABLE? – টেবিলের CREATE স্টেটমেন্ট দেখায়। TABLE দিলে LIKE প্যাটার্ন অনুযায়ী ফিল্টার। | .schema বা .schema students | |
| 23 | .separator STRING – আউটপুট মোড ও .import-এর জন্য সেপারেটর চরিত্র ঠিক করে। ডিফল্ট “ | “। | .separator "," – CSV-র জন্য কমা। |
| 24 | .show – বিভিন্ন সেটিংসের বর্তমান মান দেখায়। | .show (echo, headers, mode ইত্যাদির স্ট্যাটাস দেখতে পারবেন) | |
| 25 | .stats ON|OFF – প্রতিটি কমান্ডের পরে মেমোরি/স্ট্যাটিস্টিকস দেখাবে কিনা। | .stats ON | |
| 26 | .tables ?PATTERN? – LIKE প্যাটার্ন মেনে টেবিলের নাম দেখায়। | .tables (সব), .tables 's%' (s দিয়ে শুরু টেবিল) | |
| 27 | .timeout MS – লক করা টেবিল খোলার জন্য MS মিলিসেকেন্ড অপেক্ষা করে। | .timeout 5000 | |
| 28 | .width NUM NUM – “column” মোডের জন্য কলাম প্রস্থ সেট করে। | .width 5 15 20 – প্রথম কলাম ৫, দ্বিতীয় ১৫, তৃতীয় ২০ অক্ষরের প্রশস্ততা। | |
| 29 | .timer ON|OFF – CPU টাইমার মেজারমেন্ট চালু/বন্ধ। | .timer ON – প্রতিটি কমান্ডের সময় আউটপুট দেখাবে। |
গুরুত্বপূর্ণ টিপ
ডট কমান্ড লেখার সময় sqlite> প্রম্পট এবং কমান্ডের মাঝে কোনো ফাঁকা (space) রাখবেন না। যেমন .help ঠিক আছে, কিন্তু .help কাজ করবে না।
২. .show কমান্ড দিয়ে বর্তমান সেটিংস দেখা
নতুন SQLite সেশন খুলে .show দিলে ডিফল্ট সেটিংস দেখা যায়:
text
sqlite> .show
echo: off
explain: off
headers: off
mode: column
nullvalue: ""
output: stdout
separator: "|"
width:
এখানে headers অফ, mode কলাম (তাই কলামগুলো স্বয়ংক্রিয়ভাবে সারিবদ্ধ হবে), separator হলো পাইপ চিহ্ন “|” ইত্যাদি।
৩. আউটপুট ফরম্যাটিং (সুন্দর করে ডাটা দেখা)
ডিফল্ট অবস্থায় আউটপুট খুব একটা পাঠযোগ্য নয়। তাই আগে আমরা কিছু সেটিং ঠিক করে নেব।
sql
sqlite> .header on sqlite> .mode column sqlite> .timer on
এখন যদি আমরা একটি নমুনা টেবিল তৈরি করি (মনে রাখবেন, আমরা এখনও ইন-মেমরি ডাটাবেসে আছি; চাইলে .open test.db দিয়ে ফাইল খুলতে পারেন)।
sql
sqlite> CREATE TABLE employees ( ...> id INTEGER PRIMARY KEY, ...> name TEXT, ...> age INTEGER, ...> address TEXT, ...> salary REAL ...> ); sqlite> INSERT INTO employees VALUES ...> (1, 'Paul', 32, 'California', 20000.0), ...> (2, 'Allen', 25, 'Texas', 15000.0), ...> (3, 'Teddy', 23, 'Norway', 20000.0), ...> (4, 'Mark', 25, 'Rich-Mond', 65000.0), ...> (5, 'David', 27, 'Texas', 85000.0);
এখন SELECT * FROM employees; চালালে আমরা পাব:
text
id name age address salary CPU Time ---------- ---------- ---------- ---------- ---------- ---------- 1 Paul 32 California 20000.0 user 0... 2 Allen 25 Texas 15000.0 3 Teddy 23 Norway 20000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0
লক্ষ্য করুন, headers অন করার ফলে কলামের নাম শীর্ষে দেখা যাচ্ছে, mode column কলামগুলো সুন্দরভাবে সাজাচ্ছে এবং timer on প্রতিটি কমান্ডের নিচে CPU টাইম দেখাচ্ছে।
বিভিন্ন আউটপুট মোডের ব্যবহার
আমরা চাইলে ডাটাকে CSV বা HTML ফরম্যাটেও এক্সপোর্ট করতে পারি:
CSV ফরম্যাট:
sql
sqlite> .mode csv sqlite> .separator "," sqlite> SELECT * FROM employees;
আউটপুট হবে:
text
id,name,age,address,salary 1,Paul,32,California,20000.0 2,Allen,25,Texas,15000.0 ...
HTML ফরম্যাট:
sql
sqlite> .mode html sqlite> SELECT * FROM employees;
আউটপুট আসবে <TABLE>...</TABLE> ট্যাগসহ, যা ব্রাউজারে টেবিল হিসেবে দেখানো যায়।
আবার আগের অবস্থায় ফিরতে:
sql
sqlite> .mode column sqlite> .separator "|"
৪. sqlite_master টেবিল: ডাটাবেসের নীলনকশা
প্রত্যেকটি SQLite ডাটাবেসে একটি বিশেষ টেবিল থাকে যার নাম sqlite_master। এই টেবিলটি ডাটাবেসের সকল টেবিল, ইনডেক্স, ভিউ ও ট্রিগারের মেটাডেটা সংরক্ষণ করে। এটি SQLite নিজে রক্ষণাবেক্ষণ করে এবং আমরা এটি পড়তে পারি কিন্তু সরাসরি মডিফাই করতে পারি না।
sqlite_master-এর স্কিমা:
sql
sqlite> .schema sqlite_master
আউটপুট:
sql
CREATE TABLE sqlite_master ( type text, -- 'table', 'index', 'view', 'trigger' name text, -- অবজেক্টের নাম tbl_name text, -- সংশ্লিষ্ট টেবিলের নাম rootpage integer, -- B-tree-র রুট পেজ sql text -- অবজেক্ট তৈরির সম্পূর্ণ SQL স্টেটমেন্ট );
উদাহরণ: আমরা আগের employees টেবিল তৈরি করার পর চেক করি:
sql
sqlite> SELECT type, name, tbl_name, sql FROM sqlite_master WHERE type='table';
আউটপুট হবে:
text
type name tbl_name sql ---------- ---------- ---------- --------------------------------------- table employees employees CREATE TABLE employees (id INTEGER PRIMARY KEY, name TEXT, age INTEGER, address TEXT, salary REAL)
এই টেবিল থেকে আমরা সহজেই যেকোনো টেবিলের গঠন এবং তৈরি করার SQL পেতে পারি। .schema কমান্ডও আসলে এই টেবিল থেকেই তথ্য নেয়।
৫. ব্যবহারিক উদাহরণ: ডাটাবেস ব্যাকআপ ও রিস্টোর
একটি নির্দিষ্ট ডাটাবেস ফাইল খুলে কাজ করি:
bash
$ sqlite3 company.db
প্রথমে একটি টেবিল তৈরি করি:
sql
CREATE TABLE products (id INTEGER PRIMARY KEY, name TEXT, price REAL); INSERT INTO products VALUES (1,'Keyboard', 15.99), (2,'Mouse', 8.50);
এখন ব্যাকআপ নেই:
sql
.backup main company_backup.db
চাইলে .dump দিয়ে SQL স্ক্রিপ্টও ফাইলে সংরক্ষণ করা যায়:
sql
.output backup.sql .dump .output stdout
এখন backup.sql ফাইলটিতে পুরো ডাটাবেসের CREATE ও INSERT স্টেটমেন্ট আছে। প্রয়োজনে .read backup.sql দিয়ে রিস্টোর করা যাবে।
ডিরেক্টরি স্ট্রাকচার:
text
project-folder/ ├── company.db (মূল ডাটাবেস) ├── company_backup.db (ব্যাকআপ) └── backup.sql (SQL ডাম্প)
কোনো অতিরিক্ত প্যাকেজের প্রয়োজন নেই; শুধুমাত্র SQLite কমান্ড-লাইন টুলই যথেষ্ট।
পরবর্তী পর্বে
আমরা শিখব SQLite ডেটা টাইপ ও টেবিল তৈরি – কিভাবে সঠিক ডেটা টাইপ নির্বাচন করতে হয়, প্রাইমারি কি, অটোইনক্রিমেন্ট, নট নাল, ইউনিক ইত্যাদি কনস্ট্রেইন্টের ব্যবহার।
লেখকের কথা: বাংলায় SQLite শেখার এই সিরিজটি আপনার কাজে লাগছে তো? কোনো প্রশ্ন থাকলে কমেন্টে জানাতে পারেন। সম্পূর্ণ সিরিজের আপডেট পেতে আমাদের ব্লগ ToLearnTeam.com সাবস্ক্রাইব করুন এবং বন্ধুদের সাথে শেয়ার করুন!
SQLite Full Course
- SQLite পরিচিতি ও ইন্সটলেশন গাইড – বাংলায় প্রথম ডাটাবেস তৈরি
- SQLite কী এবং কেন শিখবেন? সম্পূর্ণ ওভারভিউ ও কমান্ড ক্লাসিফিকেশন (DDL, DML, DQL)
- SQLite ইন্সটলেশন গাইড – Windows, Linux ও Mac-এ ধাপে ধাপে সেটআপ
- SQLite ডট কমান্ড (Dot Commands) – সম্পূর্ণ গাইড, আউটপুট ফরম্যাট ও sqlite_master
- SQLite সিনট্যাক্স (Syntax) – কেস সেনসিটিভিটি, কমেন্ট, সব কমান্ডের গঠন ও উদাহরণ
- SQLite ডেটা টাইপ (Data Type) – স্টোরেজ ক্লাস, টাইপ অ্যাফিনিটি, বুলিয়ান ও ডেট-টাইম
- SQLite ডেটাবেস তৈরি (Create Database) – ধাপে ধাপে গাইড, .dump এক্সপোর্ট ও রিস্টোর
- SQLite ATTACH DATABASE – একাধিক ডাটাবেস সংযুক্ত করার সম্পূর্ণ গাইড (বাংলা)
- SQLite DETACH DATABASE – সংযুক্ত ডাটাবেস বিচ্ছিন্ন করার পূর্ণাঙ্গ গাইড
- SQLite CREATE TABLE স্টেটমেন্ট – টেবিল তৈরি করার পূর্ণাঙ্গ গাইড (বাংলা)
- SQLite DROP TABLE স্টেটমেন্ট – টেবিল ডিলিট করার সম্পূর্ণ গাইড (বাংলা)
- SQLite INSERT INTO স্টেটমেন্ট – ডেটা ইনসার্ট করার সম্পূর্ণ গাইড (বাংলা)
- SQLite SELECT স্টেটমেন্ট – টেবিল থেকে ডেটা ফেচ করার সম্পূর্ণ গাইড (বাংলা)
- SQLite অপারেটর (Operators) – Arithmetic, Comparison, Logical, Bitwise (বাংলা টিউটোরিয়াল)
- SQLite এক্সপ্রেশন (Expressions) – বুলিয়ান, নিউমেরিক ও ডেট এক্সপ্রেশন (বাংলা টিউটোরিয়াল)
- SQLite AND ও OR অপারেটর – একাধিক শর্ত দিয়ে ডেটা ফিল্টার (বাংলা টিউটোরিয়াল)
- SQLite UPDATE Query – টেবিলের ডেটা পরিবর্তন করার সম্পূর্ণ গাইড (বাংলা)
- SQLite DELETE Query – টেবিল থেকে ডেটা মুছে ফেলার সম্পূর্ণ গাইড (বাংলা)
- SQLite LIKE Operator – প্যাটার্ন মিলিয়ে ডেটা খোঁজার সম্পূর্ণ গাইড (বাংলা)
- SQLite GLOB Operator – কেস-সেনসিটিভ প্যাটার্ন মিলিয়ে ডেটা খোঁজা (বাংলা)
- SQLite LIMIT Clause – ডেটা সীমিত করে আনার সম্পূর্ণ গাইড (বাংলা)
- SQLite ORDER BY ক্লজ – ডেটা সাজানোর সম্পূর্ণ গাইড (বাংলা)
- SQLite GROUP BY ক্লজ – ডেটা গ্রুপ করে বিশ্লেষণ করার সম্পূর্ণ গাইড (বাংলা)
- SQLite HAVING ক্লজ – গ্রুপের উপর শর্ত দিয়ে ডেটা ফিল্টার (বাংলা টিউটোরিয়াল)
- SQLite DISTINCT Keyword – ডুপ্লিকেট ডেটা বাদ দিয়ে ইউনিক ভ্যালু পাওয়া (বাংলা)
- SQLite PRAGMA কমান্ড – ডাটাবেস কনফিগারেশন ও সেটিংস (বাংলা টিউটোরিয়াল)
- SQLite Constraints – NOT NULL, DEFAULT, UNIQUE, PRIMARY KEY, CHECK (বাংলা টিউটোরিয়াল)
- SQLite JOINS – CROSS JOIN, INNER JOIN, LEFT OUTER JOIN (বাংলা টিউটোরিয়াল)
- SQLite UNION ও UNION ALL – একাধিক SELECT একত্রিত করার সম্পূর্ণ গাইড (বাংলা)
- SQLite NULL Values – NULL কী, IS NULL, IS NOT NULL (বাংলা টিউটোরিয়াল)
- SQLite ALIAS Syntax – টেবিল ও কলামের অস্থায়ী নাম (বাংলা টিউটোরিয়াল)
- SQLite Triggers – স্বয়ংক্রিয় ট্রিগার তৈরি, ব্যবহার ও মুছে ফেলা (বাংলা টিউটোরিয়াল)
- SQLite Indexes – CREATE, UNIQUE, COMPOSITE, DROP INDEX (বাংলা টিউটোরিয়াল)
- SQLite INDEXED BY Clause – নির্দিষ্ট ইনডেক্স ব্যবহার ও NOT INDEXED (বাংলা)
- SQLite ALTER TABLE Command – টেবিলের গঠন পরিবর্তন (বাংলা টিউটোরিয়াল)
- SQLite TRUNCATE TABLE Command – DELETE ও DROP দিয়ে টেবিল খালি করা (বাংলা)
- SQLite Views – ভার্চুয়াল টেবিল তৈরি, ব্যবহার ও ডিলিট (বাংলা টিউটোরিয়াল)
- SQLite Transactions – BEGIN, COMMIT, ROLLBACK ও ACID প্রপার্টি (বাংলা)
- SQLite Subqueries – SELECT, INSERT, UPDATE, DELETE-এ সাবকোয়েরি ব্যবহার (বাংলা টিউটোরিয়াল)
- SQLite AUTOINCREMENT – স্বয়ংক্রিয়ভাবে প্রাইমারি কি মান বৃদ্ধি (বাংলা টিউটোরিয়াল)
- SQLite SQL Injection – কী, কেন বিপজ্জনক ও প্রতিরোধের উপায় (বাংলা টিউটোরিয়াল)
- SQLite EXPLAIN ও EXPLAIN QUERY PLAN – কোয়েরি বিশ্লেষণ (বাংলা টিউটোরিয়াল)
- SQLite VACUUM – ডাটাবেস পরিষ্কার, স্পেস রিক্লেইম ও অটো-ভ্যাকুয়াম (বাংলা টিউটোরিয়াল)
- SQLite Date & Time ফাংশন – date(), time(), datetime(), julianday(), strftime() (বাংলা টিউটোরিয়াল)
- SQLite Useful Functions – COUNT, MAX, MIN, AVG, SUM, RANDOM, ABS, UPPER, LOWER, LENGTH (বাংলা টিউটোরিয়াল)
- SQLite C/C++ প্রোগ্রামিং – sqlite3_open, exec, close, callback (বাংলা টিউটোরিয়াল)
- SQLite PHP প্রোগ্রামিং – PHP-তে SQLite ডাটাবেস ব্যবহার (বাংলা টিউটোরিয়াল)
- SQLite Perl প্রোগ্রামিং – DBI/DBD::SQLite দিয়ে ডাটাবেস অপারেশন (বাংলা)
- SQLite Python প্রোগ্রামিং – sqlite3 মডিউল দিয়ে CRUD অপারেশন (বাংলা টিউটোরিয়াল)
- SQLite Quick Guide – বাংলায় পূর্ণাঙ্গ সংক্ষিপ্ত টিউটোরিয়াল (শেখার সহজ গাইড)
