একটি SQL এলিয়াস হলো একটি টেবিল বা কলামের জন্য একটি রেফারেন্স নাম। এগুলো আপনার কোয়েরি সংক্ষিপ্ত করতে ব্যবহৃত হয় যদি আপনার টেবিলের নাম বড় হয়। টেবিল এবং কলাম এলিয়াস দুটোই AS কিওয়ার্ড ব্যবহার করে ডিফাইন করা হয়। একটি এলিয়াস একটি কোয়ারী এক্সিকিউট হওয়া পর্যন্ত টিকে। এলিয়াস পারমানেন্ট নয়।
জটিল কোয়েরিতে লম্বা কলাম বা টেবিলের নাম বারবার লিখতে লিখতে ক্লান্ত হয়েছেন? SQL শিখতে শিখতে এটা হয়। এখানেই এলিয়াস আপনাকে রক্ষা করবে। একটি এলিয়াস আপনার কোয়েরি সংক্ষিপ্ত করতে সাহায্য করবে।
এই গাইডে আমরা আলোচনা করব SQL এলিয়াস কী এবং কেন এগুলো ব্যবহার করা হয়। আমরা এলিয়াস কর্মক্ষেত্রে দুটি দৃশ্য দেখব যাতে আপনি বুঝতে পারেন SQL এলিয়াস কীভাবে ব্যবহার করতে হয়। আর দেরি না করে শুরু করা যাক!
নোট: এই টিউটোরিয়াল PostgreSQL ব্যবহার করে লেখা হয়েছে।
SQL Alias কী?
একটি SQL এলিয়াস মানুষের এলিয়াসের মতো। SQL এলিয়াস একটি টেবিল বা টেবিলের একটি কলামে একটি প্লেসহোল্ডার নাম অ্যাসাইন করে। এলিয়াস উপযোগী কারণ এগুলো কোয়েরি এবং তাদের ফলাফল আরও পঠনযোগ্য এবং ব্যাখ্যা করা সহজ করে দেয়।
একটি ভালো এলিয়াস হলো যা যত দ্রুত সম্ভব বুঝা যায়।
name কলামকে n এলিয়াস দিলে কনফিউশন হয় যদি number_of_products নামে আরেকটি কলাম থাকে। দুটোরই প্রথম অক্ষর n।
fn আরও উপযুক্ত হতে পারে কারণ এটি full name-এর প্রতিটি শব্দের প্রথম অক্ষর নেয়। এই এলিয়াস কনফিউশন তৈরি করার কম সম্ভাবনা।
মনে রাখবেন আপনার SQL কোয়েরিগুলো অন্য কেউও ব্যবহার করতে পারে, শুধু আপনি নয়। আপনাকে সবচেয়ে চেষ্টা করা উচিত আপনার কোয়েরিগুলো সব পাঠকের জন্য যতসম্ভব ইনটিউইটিভ করতে।
SQL Aliases: কলামসমূহ
আপনি কলামের নামগুলোতে এলিয়াস ব্যবহার করেন। কলাম নাম এলিয়াস আপনাকে একটি কোয়েরির আউটপুটে কলামের নাম পরিবর্তন করতে দেয়।
আমাদের উদাহরণ ডেটাবেসের দুটি টেবিল দেখি। এই ডেটাবেসগুলো হলো employees এবং branches।
| Employees | Branches | |||||
| name | title | branch_id | salary | branch_id | branch_name | |
| Geoff | Senior Sales Associate | 1 | 38000 | 1 | San Francisco | |
| Adam | Senior Sales Associate | 2 | 38000 | 2 | Cambridge | |
| Emma | Marketing Executive | 2 | 50000 | 3 | Los Angeles | |
| Luke | Marketing Assistant | 3 | 32000 |
employees টেবিলে চারটি কলাম এবং চারটি সারি আছে। branches টেবিলে দুটি কলাম এবং তিনটি সারি আছে।
চলুন একটি SQL SELECT স্টেটমেন্ট লিখি যা আমাদের বলবে প্রতিটি শাখায় সর্বোচ্চ বেতন কত:
SELECT branches.branch_name, MAX(employees.salary) FROM employees LEFT JOIN branches ON employees.branch_id = branches.branch_id GROUP BY branches.branch_name;
আমরা MAX() SQL অ্যাগ্রিগেট ফাংশন ব্যবহার করি "employees" টেবিলের "salary" কলামের সর্বোচ্চ মান সিলেক্ট করতে। আমরা একটি SQL LEFT JOIN স্টেটমেন্ট ব্যবহার করি "branches" এবং "employees" টেবিল দুটোকে একত্রিত করতে। এতে আমরা প্রতিটি শাখার রিটার্ন দেখতে পাই।
আমাদের কোয়েরি কী ফেরত দেয় সেটি দেখি:
| branch_name | max |
| San Francisco | 38000 |
| Los Angeles | 32000 |
| Cambridge | 50000 |
আমাদের কোয়েরি কাজ করেছে। কিন্তু আমাদের কোয়েরির টাইটেল নামগুলো খুব ইনটিউইটিভ নয়। এই কোয়েরি না লিখে যারা পড়বে, তাদের জন্য "max" কনফিউজিং হতে পারে।
এটি সমাধান করি কলাম এলিয়াস নাম নির্দিষ্ট করে:
SELECT branches.branch_name AS "Branch Name", MAX(employees.salary) as "Highest Salary" FROM employees LEFT JOIN branches ON employees.branch_id = branches.branch_id GROUP BY branches.branch_name;
আমরা দুটি এলিয়াস নির্দিষ্ট করেছি। "branch_name" পায় এলিয়াস "Branch Name"। আমাদের MAX() অ্যাগ্রিগেট ফাংশন পায় এলিয়াস "Highest Salary"। চলুন আবার কোয়েরি চালাই:
| Branch Name | Highest Salary |
| San Francisco | 38000 |
| Los Angeles | 32000 |
| Cambridge | 50000 |
আমাদের কোয়েরি যেসব সারি ফেরত দিয়েছে সেগুলো একই। কিন্তু টেবিল হেডিংগুলো পরিবর্তন হয়েছে। এখন, "branch_name" হলো "Branch Name" এবং "max" হলো "Highest Salary"।
SQL Aliases: টেবিলসমূহ
আপনি একটি টেবিলের ওপর SQL এলিয়াস ডিফাইন করতে পারেন। এটি উপযোগী যদি আপনি একটি কোয়েরিতে এক টেবিলকে বারবার রেফার করেন। এমন ঘটনা জটিল কোয়েরিতে ঘটিয়ে থাকে।
যখন আপনি একাধিক টেবিল কোয়েরি করেন, আপনাকে কলামের নামের আগে প্রতিটি টেবিলের নাম নির্দিষ্ট করতে হয়। টেবিল এবং কলামের নাম একটি পিরিয়ড (.) দিয়ে আলাদা থাকে। এটি নিশ্চিত করে SQL জানতে পারে আপনার কোয়েরিতে প্রতিটি স্টেটমেন্ট কী রেফার করছে।
যদিও এই ফিচার আপনাকে অ্যমবiguous কোয়েরি থেকে বাঁচায়, কিন্তু এটা কোয়েরিগুলো কম পঠনযোগ্য করে দেয়। অতএব, আপনাকে নিশ্চিত করতে হবে আপনার এলিয়াসগুলো খুব কঠিন না হয় বুঝতে।
চলুন একটি কোয়েরি লিখি যা প্রতিটি কর্মীর নাম এবং সে যে শাখায় কাজ করে সেটির নাম ফেরত দেবে:
SELECT employees.name, branches.branch_name FROM employees LEFT JOIN branches ON employees.branch_id = branches.branch_id;
আমাদের কোয়েরি নিচের ফলাফল ফেরত দেয়:
| name | branch_name |
| Geoff | San Francisco |
| Adam | Cambridge |
| Emma | Cambridge |
| Luke | Los Angeles |
আমরা দুটি টেবিল কোয়েরি করেছি: employees এবং branches। আমরা LEFT JOIN ব্যবহার করেছি "branch_id" এর মান দুই টেবিলে সংযুক্ত করতে। এতে আমরা কর্মীর সাথে যেসব শাখা জড়িত সেগুলোর নাম দেখতে পাই।
আমাদের কোয়েরি доста বড়। আমরা "employees" এবং "branches" শব্দ দুবার রিপিট করেছি। বড় কোয়েরিতে এই শব্দগুলো আরও বেশি বার ব্যবহার করতে হয়।
আমরা এলিয়াস ব্যবহার করি আমাদের কোয়েরি ছোট করতে। SQL কোয়েরিতে একটি টেবিল নাম এলিয়াস হিসেবে তৈরি করতে AS কিওয়ার্ড ব্যবহার করতে হয়:
SELECT e.name, b.branch_name FROM employees AS e LEFT JOIN branches AS b ON e.branch_id = b.branch_id;
এই কোয়েরি আমাদের প্রথম কোয়েরির মতোই আউটপুট ফেরত দেয়।
আমরা দুটি এলিয়াস অ্যাসাইন করেছি:
- "employees" হলো "e"
- "branches" হলো "b"
আমাদের কোয়েরিতে যেকোনো সময় e বা b রেফার করলে, SQL এটিকে মনে করে আমরা "employees" এবং "branches" রেফার করছি। আমাদের টেবিল এলিয়াসগুলো আমাদের SQL স্টেটমেন্টে রিপিটেশন কমানোতে সাহায্য করে।
উপসংহার
একটি SQL এলিয়াস হলো একটি কলাম বা টেবিলের বিকল্প নাম। এলিয়াস কোয়েরি-স্পেসিফিক। এর মানে এক কোয়েরির এলিয়াস অন্য কোয়েরিতে পুনঃনির্দিষ্ট না করলে ব্যবহার করা যায় না। একটি এলিয়াস AS কিওয়ার্ড দিয়ে সেট করা হয়।
আপনি কি SQL সম্পর্কে আরও জানতে আগ্রহী? আমাদের How to Learn SQL গাইড দেখুন। এই ব্যাপক গাইডে কী কোর্স বিবেচনা করবেন থেকে সহায়ক অনলাইন SQL রিসোর্স সব কিছু কভার করা আছে।