Sql টিউটোরিয়াল, পর্ব – ৭ ( SELECT ও INSERT কামান্ড )

এই সিরিজের পূর্বের টিউটোরিয়াল গুলঃ

আরো একবার সবাইকে আমন্ত্রন জানাচ্ছি mysql টিউটোরিয়ালে। sql টিউটোরিয়ালের বিগত ৬ পর্বে sql এর মূল বিষয় গুল তুলে ধরা হয়েছে। এই পর্ব থেকে আমরা যে সকল বিষয় নিয়ে আলোচনা হবে, সেই সকল বিষয় গুলোই মূলত আমাদের বিভিন্ন কাজে লাগবে। এক কথায় বলতে গেলে এই ৬ পর্বে আমরা অ,আ, ক, খ… শিখেছি এবং এই পর্ব থেকে আমরা রিডিং পড়া শুরু করব। গত ৬ষ্ঠ পর্বে আমরা ডাটাবেজে টেবিল তৈরি করেছিলাম। আমাদের ডাটাবেজের নাম ছিল “student_info” এবং টেবিলের নাম ছিল “info” । sql সার্ভারে লগিন করুন এবং “student_info” ডাটাবেজ নির্বাচন করুন। (ছবি1)1

SHOW TABLES: কখন কখন একটি ডাটাবেজে কতটি টেবিল রয়েছে তা দেখার প্রয়োজন হতে পারে। সেক্ষেত্রে আমরা “SHOW TABLES” ষ্টেটম্যান্ট এর মাধ্যমে আমরা দেখতি পারি একটা ডাটাবেজে কতটি টেবিল রয়েছে এবং কি কি টেবিল রয়েছে। (একটি বিষয়ে শিক্ষার্থীদের পুনরায় দৃষ্টি আকর্ষন করছি, sql এ কাজ করার জন্য আপনাকে অবশ্যই sql ডাটাবেজে লগিন করতে হবে এবং ডাটাবেজ তৈরি ও ডাটাবেজ ডিলেট করা ছাড়া অন্য যে কোন কাজ করার জন্য আপনাকে অবশ্যই যে ডাটাবেজের অধীনে কাজ করতে করবেন তা নির্বাচন করতে হবে। যেমন ধরুন আপনি একটি টেবিলে ডাটা যোগ করবেন অথবা ডাটা মুছে ফেলবেন অথবা টেবিলেটিই ডিলেট করে দিবেন তাহলে আপনাকে এসব কাজ করার পূর্বে অবশ্যই ডাটাবেজ নির্বাচন করতে হবে। অর্থাৎ টেবিলটি কোন ডাটাবেজের তা “use database_name”  syntex এর মাধ্যমে নির্বাচন করে দিতে হবে। যদি নির্বাচন না করা হয় তাহলে Error আসবে (ছবি2) 2এবং সার্ভার রিটার্ন করবে “No Database Selected”) এখন গত পর্বে তৈরি করা ডটাবেজে লগিন করুন “use student_info” syntex এর মাধ্যমে। এই “use student_info” লিখে এন্টার প্রেস করার মাধ্যমে উক্ত “use student_info” syntx টি সার্ভারে পাঠানো হবে এবং সার্ভার উক্ত  “student_info” নামে কোন ডাটাবেজ থকে থাকলে “Database Changed” রিটার্ন করবে / দেখাবে (ছবি3)  3এবং সঠিক না হলে “Unknown Database database_name” রিটার্ন করবে। (ছবি4) 4ডাটাবেজ নির্বাচন করার পর দেখব উক্ত ডাটাবেজের অধীনে কি কি টেবিল রয়েছে। একটি ডাটাবেজের অধীনে কি কি টেবিল রয়েছে তা দেখার জন্য sql syntax হচ্ছে

“SHOW TABLES”

5অতএব ডাটাবেজ নির্বাচন করে পুনরায় cmd রে লিখুন “SHOW TABLES” । এই সাইন্টেক্স এর জন্য সার্ভার উক্ত ডাটাবেজের অধীনে যদি কোন ডাটাবেজ থাকে তা রিটার্ন করবে / দেখাবে। (ছবি5) অন্যথায় যদি উক্ত ডাটাবেজের অধীনে কোণ টেবিল না থেকে থাকে তাহলে সার্ভার রিটার্ন করেবে “Empty Set” (ছবি6)।গত পর্বে আমরা যেহেতু “info” একটি টেবিল তৈরি করেছে তাই সার্ভার রিটার্ন করবে “info” টেবিল রয়েছে।

SELECT: একটি টেবিলে অনেক গুল ফিল্ড থাকে এবং ফিল্ডের অধীনে ডাটা সংরক্ষন করা হয়। 6কখন কখন আমাদেরকে উক্ত টেবিলের ফিল্ড গুলোতে কিকি ডাটা সংরক্ষন করা হয়েছে তা দেখার প্রয়োজন হতে পারে, গননা করার প্রয়োজন হতে পারে, একটি ফিল্ডের ডাটার সাথে অন্য ফিল্ডের ডাটার যোগ করা প্রয়োজন হতে পারে, কখন ডাটা খোজ করার / সার্চ করার প্রয়োজন হতে পারে ইত্যাদি ক্ষেত্রে “SELETC” সাইন্টেক্স ব্যবহার করা হয়। “SELECT” এর সাথে অনেক ফাংশন যুক্ত করে নানা রকম অপারেশন / কাজ সম্পন্ন করা হয়ে থাকে।

SELECT FROM TABELE: একটি টেবিলের এক বা একাধিক অথবা সকল ফিল্ডের কি কি ডাটা আছে তা দেখার জন্য “SELECT FROM TABLE” সাইন্টেক্স ব্যবহার করা হয়। একটি টেবিলের অধীনের সকল ফিল্ডের ডাটা দেখার জন্য sql সাইন্টেক্স হচ্ছে

“SELECT * FROM table_name”

চলুন দেখা যাক “info” টেবিলের কি কি ফিল্ড রয়েছে ও উক্ত ফিল্ডের অধীনে কি কি ডাটা রয়েছে। তাহলে “info” টেবিলের সকল ফিল্ড ও ফিল্ডের অধীনস্ত ডাটা দেখার জন্য sql সাইন্টেক্স হবে

“SELECT * FROM info”

7Cmd তে উক্ত লিখুন “SELECT * FROM info;” এবং এন্টার প্রেস করুন। (উল্লেখ্য থাকে যে, sql এর প্রতিটি সাইন্টেক্স এর শেষে অবশ্যই  সেমিক্লোন (;) ব্যবহার করতে হবে।) যেহেতু এখন পর্যন্ত উক্ত “info” টেবিলে কোন ডাটা যোগ করা হয়নি তাই সার্ভার রিটার্ন করবে “Empty Set” (ছবি7) ।  পুনরায় “SELECT” সাইন্টেক্স নিয়ে আলোচনা করা হবে তবে তার পূর্বে চলুন টেবিলে ডাটা যোগ করা সাইন্টেক্স নিয়ে আলোচনা করি।

INSERT: sql তথা ডটাবেজের প্রান হচ্ছে ডাটা। ডাটাবেজ, টেবিল ও ফিল্ড তৈরিই করা হয় মূলত ডাটা জমা রাখার জন্য। এমন কি ডাটাবেজ ম্যনেজমেন্ট সিষ্টেম ডাটা জমা রাখার জন্যই তৈরি। শুরু করা যাক, কিভাবে ডাটাবেজে ডাটা জমা করতে হয়। ডাটা জমা করার জন্য sql এ “INSERT” সাইন্টেক্স ব্যবহার করা হয়। ২ টি পদ্ধতিতে ডাটাবেজে ডাটা জমা করা হয়।

১ম পদ্ধতিঃ ফ্লিল্ড এর নাম উল্লেখ্যা করে। এ ক্ষেত্রে আপনি যে টেবিলের ফিল্ড সমূহে ডাটা  সকল অথবা যে ফিল্ডে ডাটা যোগ করবেন যেই সকল ফিল্ড অথবা সেই ফিল্ড উল্লেখ্য করে দিতে হবে। এই পদ্ধতির sql সাইন্টেক্স হচ্ছে

“INSERT INTO table_name (fild_name0, fild_name1, fild_name2, …… ) VALUES (value_for_fild0, value_for_fild1, value_for_fild2, ……….)”

0(একটি বিষয় উল্লেখ্য থাকে যে এ ক্ষেত্রে আপনাকে অবশ্যই ফিল্ড সমূহের নাম ব্যবহার করার সময় সতর্কতা অবলম্বন করতে হবে। যে সকল ফিল্ড এর নাম উল্লেখ্য করা হবে সেই সকল ফিল্ড এর প্রথম ফিল্ড এর ইন্ডেক্স / ক্রমিক নং হবে 0। এভাবে এর পরের ফিল্ড সমূহের ইন্ডেক্স নম্বার ক্রম অনুসারে হবে 1, 2, 3, 4, … … …  । একই ভাবে প্রথম ভ্যালু এর ইন্ডেক্স নম্বার হবে 0 এবং এর পরের ভ্যালু গুলুর ইন্ডেক্স নাম্বার হবে যথাক্রমে  1, 2, 3, 4, … … …  একটি উদাহরনের মাধ্যমে বিষটি পরিষ্কার হয়ে যাবে। sql অবশ্যই ক্যশ সেনসেটিভ। তাই ফিল্ড এর নাম উল্লেখ্য করার সময় অবশ্যই যে ভাবে ফিল্ড এর নাম রয়েছে ঠিক সেই ভাবে বড় অক্ষর ছোট অক্ষর এর প্রতি দৃষ্টি রেখে ফিল্ড এর নাম উল্লেখ্য করতে হবে।) এই টিউটরিয়ালে পূর্বে “info” নামে একটি টেবিল তৈরি করা হয়েছে যার ৩টি ফিল্ড রয়েছে যা হচ্ছে “ID, Name, Email” ।“DESCRIBE table_name” সাইন্টেক্স এর মাধ্যমেও দেখে সম্ভাব একটি টেবিলে কি কি ফিল্ড রয়েছে, ধারন ক্ষমতা কত? ও কোন ফিল্ড এর কি বৈশিষ্ট রয়েছে। cmd তে লিখুন

“DESCRIBE info;”

8(ছবি8)  এখানে দেখা যাচ্ছে যে “ID” ফিল্ড কে PRIMARY KEY, AUTO INCREMENT ও NOT NULL বৈশিষ্ট দেওয়া হয়েছে। ( এই আলাদা বৈশিষ্ট গুল কি কি কাজে ব্যবহার করা হয় এবং এর অর্থ কি তা পূর্বের ৬ষ্ঠ টিউটোরিয়ালে উল্লেখ্য করা হয়েছে। ) এখানে “ID” ফিল্ডে যেহেতু AUTO INCREMENT করে দেওয়া আছে সে ক্ষেত্রে এর ভ্যালু নিমেরিক 1, 2 , 3 হারে আটোমেটিক বাড়োতে থকবে ও NOT NULL এর কারনে আমরা “ID” ফিল্ডে NULL ডাটা পাঠালেও সার্ভার উক্ত “ID” ফিল্ডে AUTO INCREMENT এর ভ্যালু বসিয়ে নিবে এবং PRIMARY KEY এর কারনে AUTO INCREMENT এর ভ্যালু ইউনিক হবে ও উক্ত “ID” ফিল্ড কোন ভাবেই NULL / শূন্য থাকবেনা। যেহেতু “ID” ফিল্ড এর ভ্যালু সার্ভার নির্ধারন করবে সেহেতু আমরা “ID” ফিল্ড সাইন্টেক্সে উল্লেখ্য না করলেও চলবে অথবা উল্লেখ্য করলে ভ্যাল্য এর স্থলে NULL লিখে দিলেও চলবে। তাহলে উক্ত “info”  টেবিলের ফিল্ড সমূহে ডাটা যোগ করার জন্য sql সাইন্টেক্স হবে

“INSERT INTO info (ID, Name, Email) VALUES (Null, ‘Emran’, ‘xmanemran@yahoo.com’);” অথবা “ID” ফিল্ড উল্লেখ্য না করে লিখতে পারেন যেহেতু “ID” ফিল্ড এর ভ্যালু সার্ভার বসিয়ে নিবে। “INSERT INTO info (Name, Email) VALUES ( ‘Emran’, ‘xmanemran@yahoo.com’);”

উক্ত কোডটুক লিখে এন্টার প্রস করুন সার্ভার রিটার্ন করবে “Query OK, 1 row affected ”  (ছবি9)

9

  1. ID ফিল্ড এর ভ্যালু হচ্ছে NULL
  2. Name ফিল্ড এর ভ্যালু হচ্ছে ‘Emran’
  3. Email ফিল্ড এর ভ্যালু হচ্ছে ‘xmanemran@yahoo.com’

“ID” ফিল্ড উল্লেখ্য না করলে

  1. Name ফিল্ড এর ভ্যালু হচ্ছে ‘Emran’
  2. Email ফিল্ড এর ভ্যালু হচ্ছে ‘xmanemran@yahoo.com’

চলুন দেখা নেয়া যাক ডাটা টেবিলে সঠিক ভাবে ভ্যালু গুল যোগ হয়েছে কিনা তা “SELECT” কামান্ড এর মাধ্যমে দেখে নেই। লিখুন “SELECT * FROM info;” এবং এন্টার প্রেস করুন। মাত্র আমাদের যে ভ্যালু গুল যোগ করলাম তা দেখাবে ঠিক এই ছবির মত (ছবি10) ।

10

২য় পদ্ধতিঃ এই পদ্ধতিতে ফিল্ড এর নাম উল্লেখ্য করা প্রয়োজন নেই। তবে এ ক্ষত্রে আপনাকে অবশ্যই সব গুল ফিল্ড এর ভ্যালু উল্লেখ্য করতে হবে। কোন ফিল্ড এর ভ্যালু যোগ করতে না চাইলে “NULL”  লিখতে হবে। এ ক্ষত্রে sql সাইন্টেক্স হচ্ছে-

“INSERT INTO table_name  VALUES (value_for_fild0, value_for_fild1, value_for_fild2)”

আমাদের “info” টেবিলে 3 টি ফিল্ড রয়েছে। উক্ত ৩ টি ফিল্ড এর ইন্ডেক্স নাম্বার হচ্ছে “ID” = “0”, “Name” = “1”, “Email” = “2” ।  এই ২য় পদ্ধতিতে ফিল্ড এর নাম উল্লেখ্য করা না হলে সার্ভার প্রথম ভ্যালু 0 নম্বার ইন্ডেক্স ফিল্ড এর ভ্যালু ধরে নিবে ২য় ভ্যালু 1 নম্বার ইনডেক্স এর ভ্যালু ধরে নিবে। এভাবে বাকী সকল ভ্যালু ফিল্ড সমূহের জন্য নির্ধারিত হবে। একটি উদাহরন দখা যাক

“INSERT INTO info VALUES (Null, ‘Rupkotha’, ‘rupkotha@yahoo.com’);”

উক্ত সাইন্টেক্সটুক লিখুন এবং এন্টার প্রেস করুন সার্ভার রিটার্ন করবের “Query OK, 1 row affected ” । পুনরায় “SELECT * FROM info;” সাইন্টেক্স এর মাধ্যমে দেখা নেয়া যাক…… সার্ভার উক্ত টেবিলের সকল ফিল্ড সহ ডাটা গুল রিটার্ন করবে নিচের (ছবি11) ন্যায়।

11

আশা করছি সবাই “INSERT” কামন্ড ব্যবহার করা সঠিক ভাবে শিখেছেন এবং সার্ভারে ডাটা যোগ করতে পারছেন। আগামী পর্ব সার্ভারে ডাটা সার্চ করা ও “SELECT” কামান্ড এর বাকী অংশ নিয়ে আলোচনা করা হবে। সিবাই ভাল থাকুন সুস্থ থাকেন এবং অবশ্যই টিউটোরিয়ালবিডির সাথেই থাকুন।

Leave a Comment