SELECT কী?
টেবিলে রাখা ডেটা দেখার জন্য SELECT কমান্ড ব্যবহার করা হয়। SELECT শুধু ডেটা দেখায়। টেবিলের কোনো ডেটা পরিবর্তন করে না।
এই পাঠের সব উদাহরণে ডেটাবেজ ম্যানেজমেন্ট পাঠে তৈরি করা student, contact, subject ও result টেবিল ব্যবহার করবো।
সিনট্যাক্স
SELECT [কলামের নাম], [কলামের নাম] FROM [টেবিলের নাম];
SELECT এর পরে যে কলামগুলো দেখতে চাই তাদের নাম লিখবো। একাধিক কলাম হলে নামগুলোর মাঝে কমা “,” দিবো। FROM এর পরে টেবিলের নাম লিখবো। সবশেষে সেমিকোলন “;” দিবো।
উদাহরণ ১: টেবিলের সব ডেটা দেখা
student টেবিলের সব কলাম ও সব সারি দেখতে চাই। সব কলাম বোঝাতে কলামের নামের জায়গায় তারকা চিহ্ন * লিখবো।
SELECT * FROM student;ব্যাখ্যা
SELECT→ডেটা দেখার কমান্ড*→সব কলামFROM→কোন টেবিল থেকে ডেটা আসবে তা বোঝায়student→টেবিলের নাম;→কমান্ড এখানে শেষ
ফলাফল
| roll | name | class | section | group_name |
|---|---|---|---|---|
| 1 | Rudra | 11 | A | Science |
| 2 | Habib | 12 | A | Commerce |
| 3 | Pappu | 11 | B | Arts |
| 4 | Anik | 12 | B | Science |
| 5 | Priya | 11 | A | Commerce |
উদাহরণ ২: নির্দিষ্ট কলাম দেখা
সব কলাম সবসময় দরকার হয় না। ধরো শুধু শিক্ষার্থীদের নাম ও গ্রুপ জানতে চাই। তখন * এর জায়গায় কলাম দুটোর নাম লিখবো।
SELECT name, group_name FROM student;ব্যাখ্যা
name, group_name→শুধু এই দুইটি কলাম দেখাবে,→দুইটি কলামের নাম আলাদা করেFROM student→ডেটা আসবে student টেবিল থেকে
নিচের মূল টেবিলে কমলা রঙের কলাম দুটো বেছে নেওয়া হয়েছে। বাকি কলাম (roll, class, section) ফলাফলে আসবে না।
| roll | name | class | section | group_name |
|---|---|---|---|---|
| 1 | Rudra | 11 | A | Science |
| 2 | Habib | 12 | A | Commerce |
| 3 | Pappu | 11 | B | Arts |
| 4 | Anik | 12 | B | Science |
| 5 | Priya | 11 | A | Commerce |
| name | group_name |
|---|---|
| Rudra | Science |
| Habib | Commerce |
| Pappu | Arts |
| Anik | Science |
| Priya | Commerce |
কলামের ক্রম
SELECT এ কলামের নাম যে ক্রমে লিখবো, ফলাফলে কলাম সেই ক্রমেই আসবে। এবার group_name আগে লিখি।
SELECT group_name, name FROM student;| group_name | name |
|---|---|
| Science | Rudra |
| Commerce | Habib |
| Arts | Pappu |
| Science | Anik |
| Commerce | Priya |
ডেটা একই আছে। শুধু কলাম দুটোর জায়গা বদলেছে।
আরও একটি উদাহরণ
কলেজে কোন কোন বিষয় পড়ানো হয় তা দেখতে চাই। বিষয়ের নাম আছে subject টেবিলের subject_name কলামে।
SELECT subject_name FROM subject;| subject_name |
|---|
| Bangla |
| ICT |
| Physics |
| Accounting |
| Economics |
| History |
এক কলাম দেখাতে চাইলে কমা লাগে না।
- কলামের নাম হুবহু টেবিলের মতো লিখতে হবে।
group_nameএর জায়গায়groupnameলিখলে Error আসবে, কারণ টেবিলে এই নামে কোনো কলাম নেই। - দুই কলামের মাঝে কমা ভুলে গেলে সাবধান।
SELECT name group_name FROM student;লিখলে Error আসে না। SQL তখন name কলামের ডেটাকে group_name শিরোনামে দেখায়। ফলে ভুল ফলাফল পাবে কিন্তু বুঝতে পারবে না। - SQL কীওয়ার্ড ছোট বা বড় হাতের অক্ষরে লেখা যায় (
selectআরSELECTএকই)। তবে পড়তে সুবিধার জন্য কীওয়ার্ড বড় হাতের অক্ষরে লেখা হয়। - ফলাফলে সারিগুলো কোন ক্রমে আসবে তা SELECT নিশ্চিত করে না। একেক DBMS এ ক্রম একেক রকম হতে পারে। নির্দিষ্ট ক্রমে সাজাতে ORDER BY লাগে, যা পাঠ ৭ এ শিখবো।
নিজে চেষ্টা করো
একটি টেবিল বেছে নাও। তারপর কলামে ক্লিক করো। যে ক্রমে ক্লিক করবে, Query তে কলাম সেই ক্রমে বসবে এবং ফলাফল সাথে সাথে বদলাবে।
অনুশীলন
প্রতিটি প্রশ্নের Query নিজে লেখো। চাইলে SQL Playground এ টেবিল তৈরি করে চালিয়ে দেখো। তারপর উত্তর মিলিয়ে নাও।
contact টেবিলের সব ডেটা দেখাও।
উত্তর দেখো
SELECT * FROM contact;| contact_id | roll | address | mobile_no |
|---|---|---|---|
| 101 | 1 | Gopalganj | 01711111111 |
| 102 | 2 | Narayanganj | 01822222222 |
| 103 | 3 | Barisal | 01933333333 |
| 104 | 4 | Dhaka | 01644444444 |
| 105 | 5 | Khulna | 01555555555 |
subject টেবিল থেকে subject_code ও subject_name দেখাও।
উত্তর দেখো
SELECT subject_code, subject_name FROM subject;| subject_code | subject_name |
|---|---|
| 101 | Bangla |
| 275 | ICT |
| 174 | Physics |
| 253 | Accounting |
| 109 | Economics |
| 304 | History |
student টেবিল থেকে roll, name ও class দেখাও।
উত্তর দেখো
SELECT roll, name, class FROM student;| roll | name | class |
|---|---|---|
| 1 | Rudra | 11 |
| 2 | Habib | 12 |
| 3 | Pappu | 11 |
| 4 | Anik | 12 |
| 5 | Priya | 11 |
প্রত্যেক শিক্ষার্থীর ঠিকানা ও মোবাইল নম্বর দেখাও। (কোন টেবিলে এই তথ্য আছে আগে খুঁজে বের করো)
উত্তর দেখো
SELECT address, mobile_no FROM contact;| address | mobile_no |
|---|---|
| Gopalganj | 01711111111 |
| Narayanganj | 01822222222 |
| Barisal | 01933333333 |
| Dhaka | 01644444444 |
| Khulna | 01555555555 |
