MySQL Basics
Querying data
MySQL-এ Querying data মানে ডেটা কোয়েরি বা খোঁজা। মানে Structured Query Language (SQL) এ statements ব্যবহার করে MySQL ডাটাবেস থেকে নির্দিষ্ট তথ্য রিট্রিভ বা বের করার প্রক্রিয়া।
এই পর্বে, আমরা জানব কিভাবে একটি টেবিল থেকে ডেটা কোয়েরি করতে হয় এবং MySQL SELECT statement এর basic form ব্যবহার করতে হয়। তবে তার আগে এই পোস্টের সবগুলো উদাহরণ প্র্যাক্টিস করার জন্য আপনাকে এই Sample Database Schema টি ডাউনলোড করতে হবে এবং আপনার MySQL ডাটাবেজে ইম্পোর্ট করতে হবে।
MySQL SELECT statement
SELECT statement আমাদেরকে এক বা একাধিক table থেকে ডেটা বের করে আনার সুযোগ দেয়। এবং একই সাথে বের করে আনা ডেটাতে বিভিন্ন ফিল্টারিং এবং sorting conditions প্রয়োগ করার সুযোগ দেয়৷
MySQL এ SELECT স্টেটমেন্ট লিখতে, আমাদেরকে নিম্নোক্ত সিনট্যাক্স ব্যবহার করতে হবে:
SELECT column1, column2, ... FROM table_name;
এখানে SELECT স্টেটমেন্টের বিভিন্ন অংশের ব্রেকডাউন দেওয়া হলো :
- SELECT: এই কীওয়ার্ডটি বোঝানোর জন্য ব্যবহৃত হয় যে আপনি ডাটাবেস থেকে ডেটা বের করতে চান।
- column1, column2, …: এখানে কলামগুলির নাম থাকবে যে কলাম গুলি থেকে আপনি ডেটা বের করতে চান৷ এছাড়া আপনি কমা (,) দ্বারা পৃথক করে একাধিক কলাম নির্দিষ্ট করতে পারেন, অথবা আপনি সমস্ত কলাম সিলেক্ট করতে wildcard * ব্যবহার করতে পারেন।
- FROM: এই কীওয়ার্ডটি টেবিলটি নির্দিষ্ট করতে ব্যবহৃত হয় যেখান থেকে আপনি ডেটা বের করে আনতে চান।
- table_name: এটি সেই টেবিলের নাম যেখান থেকে আপনি ডেটা বের করতে চান। এটি ডাটাবেসের একটি বিদ্যমান টেবিলের নাম হওয়া উচিত।
- সেমিকোলন (;) এটি অপশনাল। এটি একটি statement শেষ নির্দেশ করতে ব্যবহার হয়। আপনার যদি দুটি বা ততোধিক statement থাকে, তাহলে সেগুলিকে আলাদা করতে আপনাকে সেমিকোলন(;) ব্যবহার করতে হবে যাতে MySQL প্রতিটি স্টেটমেন্ট আলাদাভাবে এক্সেকিউট করতে পারে।
MySQL SELECT statement এর উদাহরণ:
আমরা নিম্নলিখিত উদাহরণগুলির জন্য sample database এর employees table টি ব্যবহার করব।
employees টেবিলে আটটি কলাম রয়েছে: employeeNumber, lastName, firstName, extension, email, officeCode, reportsTo এবং jobTitle. এখন এই টেবিল থেকে আমরা নিম্নোক্ত তিন উপায়ে উক্ত কলাম গুলোর রো গুলোকে বের করে আনতে পারি:
- একটি একক কলাম থেকে ডেটা বের করতে MySQL SELECT স্টেটমেন্ট ব্যবহার:
- একাধিক কলাম থেকে ডেটা বের করতে MySQL SELECT স্টেটমেন্ট ব্যবহার:
- সব গুলো কলাম থেকে এক সাথে সব ডেটা বের করতে MySQL SELECT স্টেটমেন্ট ব্যবহার:
নিম্নলিখিত উদাহরণটি employees টেবিল থেকে সমস্ত এমপ্লয়ীদের last name সিলেক্ট করতে SELECT statement ব্যবহার করা হয়েছে:
SELECT lastName FROM employees;
এখানে আংশিক আউটপুট দেওয়া হলো :
+-----------+ | lastName | +-----------+ | Murphy | | Patterson | | Firrelli | | Patterson | | Bondur | | Bow | | Jennings | ...
একটি SELECT statement রেজাল্টকে একটি result set বলা হয় কারণ এটি একটি row সেট যা query থেকে পাওয়া যায়।
নিম্নলিখিত উদাহরণটি employees টেবিল থেকে এমপ্লয়ীদের first name, last name, এবং তাদের job title পেতে SELECT statement ব্যবহার করা হয়েছে :
SELECT lastName, firstName, jobTitle FROM employees;
যদিও employees টেবিলে অনেক কলাম আছে, কিন্তু SELECT statement শুধু এই তিনটি কলামের রো গুলোই রিটার্ন করবে।
+-----------+-----------+----------------------+ | lastname | firstname | jobtitle | +-----------+-----------+----------------------+ | Murphy | Diane | President | | Patterson | Mary | VP Sales | | Firrelli | Jeff | VP Marketing | | Patterson | William | Sales Manager (APAC) | | Bondur | Gerard | Sale Manager (EMEA) | ...
Web Development, Data Science and Big Data Course with Python, MongoDB, MySQL and Django
আপনি যদি employees টেবিলের সমস্ত কলাম থেকে ডেটা সিলেক্ট করতে চান তবে আপনি SELECT ক্লজে সমস্ত কলামের নাম ব্যবহার করতে পারেন:
SELECT employeeNumber, lastName, firstName, extension, email, officeCode, reportsTo, jobTitle FROM employees;
অথবা wildcard (*) ব্যবহার করতে পারেন
SELECT * FROM employees;
query টি employees টেবিলের সমস্ত কলাম থেকে ডেটা প্রদান করবে।
SELECT * কে প্রায়ই “select star” বা “select all” বলা হয় কারণ এটি টেবিলের সমস্ত কলাম থেকে ডেটা সিলেক্ট করে।
FROM clause ছাড়া শুধু SELECT statement ব্যবহার:
আপনি চাইলে MySQL এর FROM ক্লজের ব্যবহার না করেই একটি SELECT statement রেজাল্ট পেতে পারেন।
এখানে একটি ছোট উদাহরণ দেওয়া হলো:
SELECT 1 + 1;
Output:
+-------+ | 1 + 1 | +-------+ | 2 | +-------+ 1 row in set (0.00 sec)
MySQL এর অনেক বিল্ট-ইন ফাংশন আছে যেমন string, date এবং Math functions ইত্যাদি। এবং আপনি এই ফাংশনগুলি চালানোর জন্য SELECT স্টেটমেন্ট ব্যবহার করতে পারেন।
নিম্নলিখিত উদাহরণটি MySQL সার্ভারের বর্তমান তারিখ এবং সময় প্রদান করবে:
SELECT NOW();
Output:
+---------------------+ | NOW() | +---------------------+ | 2021-07-26 08:08:02 | +---------------------+ 1 row in set (0.00 sec)
NOW() ফাংশন যে সার্ভারে MySQL চলে তার বর্তমান তারিখ ও সময় প্রদান করে। NOW() ফাংশনের কোনো প্যারামিটার নেই। এটিকে কল করার জন্য, আপনি ফাংশনের নামের পরে বন্ধনী () রাখুন।
যদি একটি ফাংশনের parameters থাকে তবে আপনাকে এতে arguments পাস করতে হবে। উদাহরণস্বরূপ, স্ট্রিংগুলিকে একটি স্ট্রিংয়ে যুক্ত করতে আপনি CONCAT() ফাংশনটি ব্যবহার করতে পারেন:
SELECT CONCAT('John',' ','Doe');
Output:
+--------------------------+ | CONCAT('John',' ','Doe') | +--------------------------+ | John Doe | +--------------------------+ 1 row in set (0.00 sec)
CONCAT() ফাংশনটি এক বা একাধিক স্ট্রিং গ্রহণ করে এবং সেগুলিকে একক স্ট্রিংয়ে সংযুক্ত করে।
SELECT Statement এ column alias
বাই ডিফল্ট , MySQL রেজাল্ট সেটের কলামের নাম হিসাবে SELECT ক্লজে উল্লেখিত expression ব্যবহার করে। রেজাল্ট সেটের একটি কলামের নাম পরিবর্তন করতে, আপনি একটি কলাম alias (উপনাম )ব্যবহার করতে পারেন:
SELECT CONCAT('John',' ','Doe') AS name;
Output:
+----------+ | name | +----------+ | John Doe | +----------+ 1 row in set (0.00 sec)
যদি কলাম alias এ (উপনামে) space থাকে তবে আপনাকে এটিকে এইভাবে quotes ভিতরে রাখতে হবে:
SELECT CONCAT('Jane',' ','Doe') AS 'Full name';
Output:
+-----------+ | Full name | +-----------+ | John Doe | +-----------+ 1 row in set (0.00 sec)