এক্সপ্রেশন (Expression) হলো এক বা একাধিক মান, অপারেটর এবং SQL ফাংশনের সমন্বয়, যা শেষ পর্যন্ত একটি নির্দিষ্ট ভ্যালুতে মূল্যায়িত হয়। সহজ ভাষায়, এগুলো ডাটাবেসের ভাষায় লেখা সূত্র (formula), যা দিয়ে আমরা নির্দিষ্ট ডেটা খুঁজে বের করি, গাণিতিক হিসাব করি অথবা তারিখ-সময় সংক্রান্ত তথ্য পাই। SQLite-তে মূলত তিন ধরনের এক্সপ্রেশন ব্যবহৃত হয়:
- বুলিয়ান এক্সপ্রেশন (Boolean Expressions) – একটি নির্দিষ্ট মানের সাথে মিলিয়ে ডেটা আনে।
- নিউমেরিক এক্সপ্রেশন (Numeric Expressions) – গাণিতিক গণনা করে ফলাফল দেয়।
- ডেট এক্সপ্রেশন (Date Expressions) – বর্তমান তারিখ-সময় এবং তারিখ সংক্রান্ত তথ্য দেয়।
আজকের পর্বে আমরা প্রতিটি এক্সপ্রেশনের সিনট্যাক্স ও বাস্তব উদাহরণ দেখব।
পূর্বপ্রস্তুতি
- SQLite ইন্সটল থাকতে হবে (সিরিজের ৩য় পর্ব দেখুন)।
company.dbডাটাবেসেCOMPANYটেবিল থাকতে হবে। যদি না থাকে, নিচের কমান্ড চালান:
bash
sqlite3 company.db
sql
CREATE TABLE COMPANY( ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR(50), SALARY REAL ); INSERT INTO COMPANY VALUES (1, 'Paul', 32, 'California', 20000.00); INSERT INTO COMPANY VALUES (2, 'Allen', 25, 'Texas', 15000.00); INSERT INTO COMPANY VALUES (3, 'Teddy', 23, 'Norway', 20000.00); INSERT INTO COMPANY VALUES (4, 'Mark', 25, 'Rich-Mond', 65000.00); INSERT INTO COMPANY VALUES (5, 'David', 27, 'Texas', 85000.00); INSERT INTO COMPANY VALUES (6, 'Kim', 22, 'South-Hall', 45000.00); INSERT INTO COMPANY VALUES (7, 'James', 24, 'Houston', 10000.00);
- টার্মিনালে
.header onও.mode columnদিয়ে আউটপুট সুন্দর করে দেখতে পারেন।
১. বুলিয়ান এক্সপ্রেশন (Boolean Expressions)
বুলিয়ান এক্সপ্রেশন মূলত WHERE ক্লজে ব্যবহৃত হয় এবং একটি শর্ত পূরণ হলে TRUE (সত্য) বা FALSE (মিথ্যা) ফেরত দেয়। এর মাধ্যমে আমরা নির্দিষ্ট মান মেলানো রেকর্ড ফিল্টার করি।
সিনট্যাক্স:
sql
SELECT column1, column2, ... FROM table_name WHERE SINGLE_VALUE_MATCHING_EXPRESSION;
এখানে SINGLE_VALUE_MATCHING_EXPRESSION এমন একটি শর্ত যা একটি মানের সাথে তুলনা করে (যেমন SALARY = 10000)।
উদাহরণ ১: যার বেতন ঠিক ১০,০০০, তাকে খুঁজে বের করা।
sql
SELECT * FROM COMPANY WHERE SALARY = 10000;
ফলাফল:
text
ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 7 James 24 Houston 10000.0
উদাহরণ ২: টেক্সাস শহরের কর্মীদের তালিকা:
sql
SELECT NAME, ADDRESS FROM COMPANY WHERE ADDRESS = 'Texas';
উদাহরণ ৩: যাদের বয়স ২৫-এর বেশি:
sql
SELECT * FROM COMPANY WHERE AGE > 25;
এখানে AGE > 25 একটি বুলিয়ান এক্সপ্রেশন, যা প্রতিটি সারির জন্য সত্য বা মিথ্যা হবে।
গুরুত্বপূর্ণ: বুলিয়ান এক্সপ্রেশনে AND, OR, NOT ইত্যাদি লজিক্যাল অপারেটর দিয়েও জটিল শর্ত তৈরি করা যায়, যা আমরা আগের পর্বে আলোচনা করেছি।
২. নিউমেরিক এক্সপ্রেশন (Numeric Expressions)
নিউমেরিক এক্সপ্রেশন গাণিতিক হিসাব (যোগ, বিয়োগ, গুণ, ভাগ) বা অ্যাগ্রিগেট ফাংশনের মাধ্যমে সংখ্যাবাচক ফলাফল তৈরি করে। এটি শুধু SELECT কলামে বা WHERE-এ ব্যবহার করা যায়।
সিনট্যাক্স:
sql
SELECT numerical_expression AS alias [FROM table_name WHERE CONDITION];
ক) সরাসরি গাণিতিক হিসাব:
sql
SELECT (15 + 6) AS ADDITION;
ফলাফল: ADDITION = 21
খ) টেবিল কলামের ওপর গণনা:
ধরুন, প্রতিটি কর্মীর ১০% বোনাস সহ মোট বেতন দেখাতে চাই:
sql
SELECT NAME, SALARY, SALARY * 0.10 AS BONUS, SALARY + (SALARY * 0.10) AS TOTAL FROM COMPANY;
এখানে SALARY * 0.10 এবং SALARY + (SALARY * 0.10) হলো নিউমেরিক এক্সপ্রেশন, যা প্রতিটি রেকর্ডের জন্য আলাদাভাবে হিসাব হয়।
গ) বিল্ট-ইন অ্যাগ্রিগেট ফাংশন:
SQLite-তে কিছু প্রি-ডিফাইন্ড ফাংশন আছে যা অনেকগুলো সারির উপর গণনা করে একটি মাত্র ফলাফল দেয়। যেমন:
COUNT(*)– সারির সংখ্যা গণনাSUM(column)– কলামের মোট যোগফলAVG(column)– গড়MAX(column)/MIN(column)– সর্বোচ্চ / সর্বনিম্ন
উদাহরণ:
sql
SELECT COUNT(*) AS "TOTAL RECORDS" FROM COMPANY;
ফলাফল: TOTAL RECORDS = 7
sql
SELECT AVG(SALARY) AS "AVERAGE SALARY" FROM COMPANY;
এটি সমস্ত কর্মীর গড় বেতন দেখাবে।
sql
SELECT MAX(AGE) AS "OLDEST", MIN(AGE) AS "YOUNGEST" FROM COMPANY;
বাস্তব উদাহরণ:
sql
SELECT SUM(SALARY) AS TOTAL_PAYROLL FROM COMPANY WHERE ADDRESS = 'Texas';
শুধুমাত্র টেক্সাস শহরের কর্মীদের মোট বেতন ফেরত দেবে।
৩. ডেট এক্সপ্রেশন (Date Expressions)
ডেট এক্সপ্রেশন বর্তমান সিস্টেমের তারিখ ও সময় অথবা তারিখ-সম্পর্কিত বিভিন্ন হিসাব ফেরত দেয়। SQLite-তে CURRENT_TIMESTAMP, CURRENT_DATE, CURRENT_TIME ইত্যাদি বিশেষ কীওয়ার্ড আছে, এবং date(), time(), datetime(), strftime() ফাংশনও আছে।
ক) বর্তমান টাইমস্ট্যাম্প পাওয়া:
sql
SELECT CURRENT_TIMESTAMP;
ফলাফল (উদাহরণ): 2025-08-07 14:23:05
খ) বর্তমান তারিখ ও সময় আলাদাভাবে:
sql
SELECT CURRENT_DATE; -- 2025-08-07 SELECT CURRENT_TIME; -- 14:23:05
গ) টেবিলে ব্যবহার: ধরুন, একটি টেবিলে created_at নামে একটি TEXT কলাম আছে। ডেট এক্সপ্রেশন দিয়ে সাম্প্রতিক রেকর্ড ফিল্টার করা যায়। তবে আমাদের COMPANY টেবিলে এমন কলাম নেই। আমরা একটি উদাহরণ দিয়ে বুঝতে পারি:
sql
CREATE TABLE events (id INTEGER PRIMARY KEY, event_date TEXT);
INSERT INTO events (event_date) VALUES (datetime('now', '-1 day'));
INSERT INTO events (event_date) VALUES (datetime('now'));
SELECT * FROM events WHERE event_date >= date('now');
এখানে date('now') আজকের তারিখ ফেরত দেয়, এবং আমরা তার চেয়ে বড় বা সমান তারিখের ইভেন্ট নির্বাচন করলাম।
ঘ) স্ট্রিং ফরম্যাটিং:
sql
SELECT strftime('%d/%m/%Y', 'now') AS BANGLA_DATE; -- ০৭/০৮/২০২৫
মনে রাখবেন: SQLite ডেট টাইপ আলাদা নয়, তবে টেক্সট/ইন্টিজার/রিয়েল হিসেবে তারিখ সংরক্ষণ করে এবং এই ফাংশনগুলো সেই মানকে সঠিকভাবে ব্যাখ্যা করতে পারে।
৪. সম্পূর্ণ অনুশীলন সেশন
আপনি চাইলে নিচের সম্পূর্ণ সেশনটি চালিয়ে দেখতে পারেন:
bash
sqlite3 company.db
sql
.header on
.mode column
-- বুলিয়ান এক্সপ্রেশন
SELECT * FROM COMPANY WHERE AGE >= 25 AND SALARY > 30000;
-- নিউমেরিক এক্সপ্রেশন
SELECT NAME, SALARY, SALARY * 12 AS ANNUAL_SALARY FROM COMPANY;
-- অ্যাগ্রিগেট ফাংশন
SELECT COUNT(*) AS কর্মী_সংখ্যা, AVG(SALARY) AS গড়_বেতন FROM COMPANY;
-- ডেট এক্সপ্রেশন
SELECT CURRENT_TIMESTAMP AS এখন_সময়;
SELECT date('now', '+7 days') AS এক_সপ্তাহ_পর;
৫. ডিরেক্টরি স্ট্রাকচার
উপরের কাজ শেষে আপনার ফোল্ডারে শুধু company.db ফাইলটি থাকবে। অন্য কোনো ফাইল তৈরি হবে না। কোনো বিশেষ প্যাকেজের প্রয়োজন নেই।
৬. গুরুত্বপূর্ণ টিপস
- এলিয়াস ব্যবহার: নিউমেরিক এক্সপ্রেশনে
ASদিয়ে কলামের নাম দিন, এতে আউটপুট পড়তে সুবিধা হয়। - NULL হ্যান্ডেলিং: অ্যাগ্রিগেট ফাংশন (যেমন
AVG) NULL মান অগ্রাহ্য করে। যদি একটি রেকর্ডের SALARY NULL হয়, তবে সেটি গড় গণনায় ধরা হবে না। - ডেট ফরম্যাট: ডেট এক্সপ্রেশন ব্যবহারের সময় স্ট্রিং ফরম্যাট নিশ্চিত করুন, বিশেষ করে
WHEREশর্তে। - অপ্টিমাইজেশন: বুলিয়ান এক্সপ্রেশনে কলামের ওপর ফাংশন ব্যবহার করলে ইনডেক্স কাজ করবে না (যেমন
WHERE UPPER(name) = 'PAUL'এড়িয়ে চলুন, বরং ডেটা সংরক্ষণের সময়ই কেস ঠিক করুন)।
পরবর্তী পর্বে
আমরা SQLite-তে WHERE ক্লজ ও LIKE, GLOB, LIMIT, ORDER BY এর ব্যবহার আরও গভীরভাবে শিখব। ফিল্টারিংয়ের মাস্টারক্লাস!
লেখকের কথা: প্রতিটি এক্সপ্রেশন নিজে টাইপ করে চালান – তবেই আয়ত্ত্বে আসবে। বাংলায় 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 – বাংলায় পূর্ণাঙ্গ সংক্ষিপ্ত টিউটোরিয়াল (শেখার সহজ গাইড)
