কোয়েরি লেখার সময় টেবিল বা কলামের আসল নাম বড় ও অসুবিধাজনক হতে পারে। অথবা আমাদের এমন একটি নাম দরকার যা আউটপুটে বেশি অর্থবহ। SQLite-তে ALIAS (উপনাম) ব্যবহার করে আমরা টেবিল বা কলামের জন্য একটি অস্থায়ী নাম দিতে পারি। এই নাম শুধু সেই কোয়েরির জন্যই কার্যকর, ডাটাবেসের প্রকৃত নামের কোনো পরিবর্তন হয় না। ALIAS ব্যবহার করলে কোয়েরি সংক্ষিপ্ত, পঠনযোগ্য এবং জটিল জয়েনের সময় অপরিহার্য হয়ে ওঠে। আজ আমরা টেবিল অ্যালিয়াস ও কলাম অ্যালিয়াসের ব্যবহার উদাহরণসহ শিখব।
পূর্বপ্রস্তুতি
- SQLite ইন্সটল থাকতে হবে (সিরিজের ৩য় পর্ব দেখুন)।
- আমাদের পরিচিত
COMPANYওDEPARTMENTটেবিল ব্যবহার করব।alias_demo.dbনামে ডাটাবেস তৈরি করি।
টার্মিনাল:
bash
sqlite3 alias_demo.db
sql
-- COMPANY টেবিল 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); -- DEPARTMENT টেবিল (বর্ধিত) CREATE TABLE DEPARTMENT( ID INT PRIMARY KEY NOT NULL, DEPT CHAR(50) NOT NULL, EMP_ID INT NOT NULL ); INSERT INTO DEPARTMENT VALUES (1, 'IT Billing', 1); INSERT INTO DEPARTMENT VALUES (2, 'Engineering', 2); INSERT INTO DEPARTMENT VALUES (3, 'Finance', 7); INSERT INTO DEPARTMENT VALUES (4, 'Engineering', 3); INSERT INTO DEPARTMENT VALUES (5, 'Finance', 4); INSERT INTO DEPARTMENT VALUES (6, 'Engineering', 5); INSERT INTO DEPARTMENT VALUES (7, 'Finance', 6);
- আউটপুট সুন্দর করতে:
.header on,.mode column।
১. টেবিল অ্যালিয়াস (Table Alias)
টেবিলের অস্থায়ী নাম দিতে AS কীওয়ার্ড ব্যবহার করা হয়, তবে AS বাদ দিলেও চলে। অ্যালিয়াস দিয়ে টেবিলের কলাম রেফারেন্স করা যায় সংক্ষেপে।
সিনট্যাক্স:
sql
SELECT column_list FROM table_name AS alias_name WHERE condition;
অথবা FROM table_name alias_name (AS ছাড়া)।
আমাদের উদাহরণ: COMPANY-কে C এবং DEPARTMENT-কে D দিয়ে কর্মী ও তাদের বিভাগ দেখি:
sql
SELECT C.ID, C.NAME, C.AGE, D.DEPT FROM COMPANY AS C, DEPARTMENT AS D WHERE C.ID = D.EMP_ID;
এখানে FROM COMPANY AS C, DEPARTMENT AS D দুটি টেবিলকে অ্যালিয়াস দেয়। WHERE-এ C.ID = D.EMP_ID শর্ত। (এটি আসলে ইমপ্লিসিট INNER JOIN, তবে আমরা পরবর্তীতে JOIN-ও ব্যবহার করতে পারি)।
ফলাফল:
text
ID NAME AGE DEPT ---------- ---------- ---------- ---------- 1 Paul 32 IT Billing 2 Allen 25 Engineering 3 Teddy 23 Engineering 4 Mark 25 Finance 5 David 27 Engineering 6 Kim 22 Finance 7 James 24 Finance
JOIN এর সাথে অ্যালিয়াস:
sql
SELECT C.ID, C.NAME, D.DEPT FROM COMPANY AS C INNER JOIN DEPARTMENT AS D ON C.ID = D.EMP_ID;
এটি আরও পরিষ্কার।
কেন ব্যবহার করবেন?
- টেবিলের নাম বড় হলে (যেমন
employee_payroll_details) তার বদলেepdব্যবহার করলে কোয়েরি ছোট হয়। - একই টেবিল একাধিকবার ব্যবহার করলে (self-join) অ্যালিয়াস ছাড়া অসম্ভব।
২. কলাম অ্যালিয়াস (Column Alias)
কলামের আউটপুটে একটি অস্থায়ী নাম দিতে AS ব্যবহার করা হয়। এটি কেবল রেজাল্ট সেটে প্রদর্শিত হয়।
সিনট্যাক্স:
sql
SELECT column_name AS alias_name FROM table_name;
উদাহরণ ১: ID-কে COMPANY_ID এবং NAME-কে COMPANY_NAME হিসেবে দেখানো:
sql
SELECT C.ID AS COMPANY_ID, C.NAME AS COMPANY_NAME, C.AGE, D.DEPT FROM COMPANY AS C, DEPARTMENT AS D WHERE C.ID = D.EMP_ID;
ফলাফল:
text
COMPANY_ID COMPANY_NAME AGE DEPT ---------- ------------ ---------- ---------- 1 Paul 32 IT Billing 2 Allen 25 Engineering 3 Teddy 23 Engineering 4 Mark 25 Finance 5 David 27 Engineering 6 Kim 22 Finance 7 James 24 Finance
উদাহরণ ২: বেতনের উপর ১০% বোনাস সহ নতুন কলামের নাম TOTAL_SALARY:
sql
SELECT NAME, SALARY, SALARY * 1.1 AS TOTAL_SALARY FROM COMPANY;
গুরুত্বপূর্ণ: কলাম অ্যালিয়াস WHERE ক্লজে ব্যবহার করা যায় না (SQLite-তে কিছু ব্যতিক্রম থাকলেও স্ট্যান্ডার্ড নয়)। তবে ORDER BY এবং GROUP BY-তে ব্যবহার করা যায়।
sql
SELECT NAME, SALARY * 1.1 AS BONUS FROM COMPANY ORDER BY BONUS DESC; -- কাজ করবে
৩. অ্যালিয়াস নামকরণের নিয়ম
- অ্যালিয়াস একটি ইংরেজি শব্দ বা আন্ডারস্কোর সহ নাম হতে পারে।
- যদি নামে স্পেস বা বিশেষ অক্ষর থাকে, তবে ডাবল কোটেশন (“) বা স্কয়ার ব্র্যাকেট ([]) ব্যবহার করতে হবে, যেমন
"Employee Name"। তবে সরল নামই ভালো। ASকীওয়ার্ড ঐচ্ছিক;SELECT NAME EMPLOYEE_NAME FROM COMPANY;চলবে।
৪. ডিরেক্টরি স্ট্রাকচার ও প্যাকেজ
শুধু alias_demo.db ফাইলই ব্যবহৃত হচ্ছে। কোনো অতিরিক্ত প্যাকেজ প্রয়োজন নেই।
text
project-folder/ └── alias_demo.db
৫. গুরুত্বপূর্ণ টিপস
- অ্যালিয়াস অর্থবহ রাখুন:
a,bনা দিয়েemp,deptব্যবহার করুন। - সেলফ-জয়েনে অ্যালিয়াস মাস্ট: একই টেবিল দুইবার JOIN করলে ভিন্ন অ্যালিয়াস বাধ্যতামূলক।
- কলাম অ্যালিয়াস কোটেশন: যদি অ্যালিয়াসে বড় হাতের-ছোট হাতের মিশ্রণ চান, তবে ডাবল কোটেশন ব্যবহার করুন, যেমন
AS "Total Salary"। নইলে SQLite অ্যালিয়াসকে ছোট হাতের করে ফেলতে পারে (স্ট্রিং না হলে)। - WHERE-এ অ্যালিয়াস: SQLite কিছু ক্ষেত্রে WHERE-এ কলাম অ্যালিয়াস গ্রহণ করলেও নির্ভরযোগ্য নয়, তাই মূল কলাম ব্যবহার করুন।
- সাবকোয়েরিতে অ্যালিয়াস: সাবকোয়েরির জন্য অবশ্যই অ্যালিয়াস দিতে হবে, যেমন
FROM (SELECT ...) AS sub।
৬. সম্পূর্ণ অনুশীলন সেশন
টার্মিনালে নিচের কোয়েরিগুলো চালান:
sql
.headers on .mode column -- টেবিল অ্যালিয়াস সহ পুরো ডেটা SELECT c.ID, c.NAME, d.DEPT FROM COMPANY c, DEPARTMENT d WHERE c.ID = d.EMP_ID; -- JOIN এর সাথে অ্যালিয়াস SELECT c.NAME, d.DEPT FROM COMPANY AS c INNER JOIN DEPARTMENT AS d ON c.ID = d.EMP_ID ORDER BY c.NAME; -- কলাম অ্যালিয়াস SELECT ID AS কর্মী_আইডি, NAME AS নাম, AGE AS বয়স FROM COMPANY; -- এক্সপ্রেশন সহ অ্যালিয়াস SELECT NAME, SALARY, SALARY * 12 AS বার্ষিক_বেতন FROM COMPANY;
পরবর্তী পর্বে
আমরা শিখব SQLite Indexes – কিভাবে ইনডেক্স তৈরি করে কোয়েরির গতি বাড়ানো যায়।
লেখকের কথা: ALIAS ছোট্ট একটি টুল, কিন্তু বড় কোয়েরিতে এর প্রয়োজনীয়তা অপরিসীম। বাংলায় এই টিউটোরিয়াল সিরিজ এগিয়ে নিতে আপনার শেয়ার ও উৎসাহ আমাদের শক্তি জোগায়। পোস্টটি ভালো লাগলে বন্ধুদের জানাতে ভুলবেন না! নিয়মিত আপডেট পেতে 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 – বাংলায় পূর্ণাঙ্গ সংক্ষিপ্ত টিউটোরিয়াল (শেখার সহজ গাইড)
