MySQL টেবিলের ডেটা ও গঠন কীভাবে দেখবেন (SHOW TABLES, DESCRIBE, SELECT, INFORMATION_SCHEMA)

目次

১. পরিচিতি

MySQL দিয়ে একটি ডাটাবেস পরিচালনা করার সময়, অনেক পরিস্থিতিতে আপনি একটি টেবিলের ভিতরে “কী আছে তা পরীক্ষা করতে” চান। উদাহরণস্বরূপ, আপনি পরীক্ষামূলক ডেটা সঠিকভাবে সংরক্ষিত হয়েছে কিনা তা যাচাই করতে চাইতে পারেন, অথবা একটি অ্যাপ্লিকেশন তৈরি করার সময় প্রত্যাশিত ডেটা সঠিকভাবে ইনসার্ট হচ্ছে কিনা তা নিশ্চিত করতে চাইতে পারেন। টেবিলের বিষয়বস্তু দ্রুত পরীক্ষা করার ক্ষমতা অত্যন্ত গুরুত্বপূর্ণ।

ডেভেলপমেন্ট এবং দৈনন্দিন অপারেশনের সময়, আপনার প্রায়ই এমন তথ্যের প্রয়োজন হয় যেমন “টেবিলের স্ট্রাকচার কেমন দেখায়?” অথবা “কলামের ধরন এবং কনস্ট্রেইন্টগুলো কী?” তবে, যদি আপনি MySQL-এর সাথে পরিচিত না হন, তাহলে একটি টেবিলের বিষয়বস্তু এবং স্ট্রাকচার পরীক্ষা করার উপায়টি আশ্চর্যজনকভাবে অস্পষ্ট মনে হতে পারে।

এই নিবন্ধে, আমরা MySQL-এ টেবিলের বিষয়বস্তু এবং স্ট্রাকচার পরীক্ষা করার মৌলিক বিষয় থেকে শুরু করে ব্যবহারিক, সাধারণভাবে ব্যবহৃত কমান্ড এবং উন্নত কৌশলগুলো, সাথে সাধারণ ত্রুটি এবং সমস্যা সমাধানের ব্যাখ্যা করব। এই গাইডটি নতুনদের জন্য এবং যারা নিয়মিত MySQL ব্যবহার করেন তাদের জন্য সহায়ক তথ্য অন্তর্ভুক্ত—তাই দয়া করে এটিকে একটি রেফারেন্স হিসেবে ব্যবহার করুন।

২. প্রয়োজনীয়তা: MySQL-এ কীভাবে সংযোগ স্থাপন করবেন

MySQL টেবিলের বিষয়বস্তু এবং স্ট্রাকচার পরীক্ষা করার জন্য, আপনাকে প্রথমে MySQL সার্ভারের সাথে সংযোগ স্থাপন করতে হবে। এখানে, আমরা কমান্ড লাইন (টার্মিনাল বা কমান্ড প্রম্পট) থেকে MySQL-এ লগইন করার উপায় এবং একটি ডাটাবেস নির্বাচন করার উপায় ব্যাখ্যা করব।

MySQL-এ লগইন করার উপায়

MySQL-এ সংযোগ স্থাপন করার জন্য, নিম্নলিখিত কমান্ডটি ব্যবহার করুন।

mysql -u username -p

“username” কে আপনার MySQL ইউজারনেম দিয়ে প্রতিস্থাপন করুন। কমান্ডটি চালানোর সময়, আপনাকে পাসওয়ার্ড প্রবেশ করার জন্য অনুরোধ করা হবে—সঠিক পাসওয়ার্ডটি টাইপ করুন।

একটি ডাটাবেস নির্বাচন করুন

সফলভাবে লগইন করার পর, আপনি MySQL প্রম্পট (mysql>) দেখতে পাবেন। যে ডাটাবেসটির সাথে কাজ করতে চান তা নির্বাচন করার জন্য, নিম্নলিখিত কমান্ডটি প্রবেশ করান।

USE database_name;

এর পর, পরবর্তী অপারেশনগুলো নির্বাচিত ডাটাবেসের উপর চালানো হবে।
যদি আপনি এই ধাপটি ভুলে যান, তাহলে আপনি “No database selected” এমন একটি ত্রুটি পেতে পারেন, তাই সতর্ক থাকুন।

ডাটাবেসের তালিকা দেখার উপায়

যদি আপনি সার্ভারে বিদ্যমান ডাটাবেসগুলোর তালিকা দেখতে চান, তাহলে নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন।

SHOW DATABASES;

এটি সব ডাটাবেসের নামগুলো একটি তালিকায় প্রদর্শন করবে। প্রয়োজন অনুসারে, এখানে লক্ষ্য ডাটাবেসের নাম নিশ্চিত করুন এবং USE database_name; ব্যবহার করে সুইচ করুন।

৩. টেবিলের তালিকা পরীক্ষা করুন (টেবিলগুলোর তালিকা প্রদর্শন করুন)

MySQL-এ সংযোগ স্থাপন এবং লক্ষ্য ডাটাবেস নির্বাচন করার পর, আপনি প্রায়ই “কোন কোন টেবিল বিদ্যমান” তা নিশ্চিত করতে চান। এখানে, আমরা টেবিলগুলোর তালিকা তৈরির মৌলিক পদ্ধতি পরিচয় করব, সাথে আপনার প্রয়োজনীয় টেবিলগুলোতে সীমাবদ্ধ করার জন্য উপযোগী কৌশলগুলো।

টেবিলগুলোর তালিকা তৈরির মৌলিক কমান্ড

টেবিলগুলোর তালিকা প্রদর্শন করার জন্য, নিম্নলিখিত কমান্ডটি ব্যবহার করুন।

SHOW TABLES;

এই কমান্ডটি চালানোর ফলে বর্তমান নির্বাচিত ডাটাবেসের সব টেবিলের নামগুলো একটি তালিকায় প্রদর্শিত হবে।
উদাহরণস্বরূপ, আপনি “users,” “orders,” এবং “products” এমন টেবিলের নামগুলো উল্লম্বভাবে তালিকাভুক্ত দেখতে পেতে পারেন।

অন্য ডাটাবেসে টেবিলের তালিকা পরীক্ষা করুন

যদি আপনি বর্তমানে নির্বাচিত নয় এমন অন্য একটি ডাটাবেসের টেবিলের তালিকা পরীক্ষা করতে চান, তাহলে কমান্ডটি এভাবে লিখুন:

SHOW TABLES FROM database_name;

এই পদ্ধতিতে, আপনি প্রত্যেকবার USE কমান্ড ব্যবহার করে ডাটাবেস সুইচ না করে নির্দিষ্ট ডাটাবেসের টেবিলগুলো দ্রুত পরীক্ষা করতে পারেন।

নির্দিষ্ট টেবিলের নামের জন্য অনুসন্ধান (ফিল্টার) করুন

যখন অনেক টেবিল থাকে, তখন আপনি দ্রুত একটি লক্ষ্য টেবিল খুঁজে পেতে চাইতে পারেন। সেক্ষেত্রে, আপনি LIKE অপশন ব্যবহার করে ফিল্টার করতে পারেন।

SHOW TABLES LIKE 'search_word%';

উদাহরণস্বরূপ, যদি আপনি শুধুমাত্র “user” দিয়ে শুরু হওয়া টেবিলগুলো দেখাতে চান, তাহলে এটি SHOW TABLES LIKE 'user%'; এর মতো নির্দিষ্ট করুন।

এছাড়া, MySQL ভার্সনের উপর নির্ভর করে, আপনি SHOW TABLES WHERE ক্লজ ব্যবহার করতে পারতে পারেন।

SHOW TABLES WHERE Tables_in_database_name LIKE '%keyword%';

টেবিলগুলোর তালিকা তৈরি MySQL-এর একটি মৌলিক অপারেশন, কিন্তু অল্প পরিমাণ চাতুর্য দিয়ে পরিচালনা এবং অনুসন্ধানের দক্ষতা অনেক উন্নত করা যায়।

৪. টেবিলের স্ট্রাকচার পরীক্ষা করুন (কলামগুলোর তালিকা)

টেবিলের বিষয়বস্তু পরীক্ষা করার আগে, “কোন কলামগুলি বিদ্যমান এবং কী ডেটা টাইপ এবং কনস্ট্রেইন্ট সেট করা হয়েছে” তা বোঝা খুবই গুরুত্বপূর্ণ। টেবিলের স্ট্রাকচার জানা আপনাকে ডেটা সঠিকভাবে রিট্রিভ এবং এডিট করতে সাহায্য করে, এবং এটি সিস্টেম ডেভেলপমেন্ট এবং অপারেশনসের সময় সমস্যা প্রতিরোধ করতে সাহায্য করে।

মৌলিক কমান্ড: DESCRIBE (DESC)

টেবিলের স্ট্রাকচার পরীক্ষা করার জন্য সবচেয়ে সাধারণ কমান্ড হল DESCRIBE। আপনি শর্টহ্যান্ড DESC ব্যবহার করতে পারেন।

DESCRIBE table_name;

অথবা

DESC table_name;

এই কমান্ড চালানোর সময়, MySQL কলামের নামের তালিকা, ডেটা টাইপ, NULL কনস্ট্রেইন্ট, প্রাইমারি কী তথ্য এবং আরও অনেক কিছু প্রদর্শন করে।

প্রধান আইটেমগুলি যা দেখানো হয়:

  • Field (কলামের নাম)
  • Type (ডেটা টাইপ)
  • Null (NULL অনুমোদিত কিনা)
  • Key (প্রাইমারি কী, ফরেন কী ইত্যাদি)
  • Default (ডিফল্ট মান)
  • Extra (অতিরিক্ত তথ্য যেমন অটো-ইনক্রিমেন্ট)

SHOW COLUMNS কমান্ড

SHOW COLUMNS FROM table_name; DESCRIBE-এর মতো প্রায় একই বিষয়বস্তু প্রদর্শন করে। পরিস্থিতি অনুসারে, এই কমান্ড ব্যবহার করাও ঠিক আছে।

যদি আরও বিস্তারিত তথ্য চান

যদি আপনার কলামের আরও বিস্তারিত তথ্য দরকার হয়, তাহলে SHOW FULL COLUMNS FROM table_name; ব্যবহার করুন। এতে কোলেশন (Collation) এবং প্রিভিলেজ (Privileges) এর মতো অতিরিক্ত তথ্য অন্তর্ভুক্ত থাকে।

যখন টেবিলের স্ট্রাকচার পরীক্ষা উপকারী হয়

  • নতুন ডেভেলপমেন্ট বা মেইনটেন্যান্সের সময় “কোন কলামগুলি বিদ্যমান” তা বোঝার জন্য
  • বিদ্যমান সিস্টেম তদন্ত করার সময় বা ডেটা ইন্টিগ্রেশন করার সময় কলামের টাইপ, NULL-যোগ্যতা এবং প্রাইমারি কী তথ্য পরীক্ষা করার জন্য
  • কোড লিখার সময় “কী ডেটা টাইপ সংরক্ষিত হবে” তা স্পষ্ট করার জন্য

টেবিলের বিষয়বস্তু নিরাপদে এবং সঠিকভাবে পরীক্ষা করার জন্য, প্রথমে টেবিলের স্ট্রাকচার নিশ্চিত করুন।

৫. টেবিলের বিষয়বস্তু (ডেটা) পরীক্ষা করুন

টেবিলের স্ট্রাকচার বুঝার পর, পরবর্তী ধাপ হল টেবিলে আসলে কী ডেটা সংরক্ষিত আছে তা পরীক্ষা করা। MySQL-এ, আপনি SELECT স্টেটমেন্ট ব্যবহার করে টেবিল থেকে সহজেই ডেটা রিট্রিভ করতে পারেন।

সব ডেটা দেখুন

যদি আপনি একটি টেবিলের সব রো দেখাতে চান, তাহলে কোয়েরি এভাবে লিখুন:

SELECT * FROM table_name;

এই কমান্ড চালানোর ফলে টেবিলের সব রো (রেকর্ড) প্রদর্শিত হয়।
তবে, যদি টেবিলে প্রচুর পরিমাণ ডেটা থাকে, তাহলে সবকিছু একসাথে প্রদর্শন করা পড়তে কঠিন হতে পারে—তাই সতর্কতা অবলম্বন করুন।

শুধুমাত্র প্রয়োজনীয় কলামগুলি নির্বাচন করুন

যদি আপনার সব কলামের দরকার না হয় এবং শুধুমাত্র নির্দিষ্ট তথ্য দেখতে চান, তাহলে রিট্রিভ করতে চান এমন কলামের নাম নির্দিষ্ট করুন:

SELECT column1, column2 FROM table_name;

এটি শুধুমাত্র নির্দিষ্ট কলামগুলি প্রদর্শন করে, যা ডেটা পর্যালোচনা বা অ্যাগ্রিগেট করা সহজ করে।

শর্ত অনুসারে ডেটা ফিল্টার করুন

যদি আপনি নির্দিষ্ট শর্তের সাথে মিলে যাওয়া ডেটা শুধুমাত্র পরীক্ষা করতে চান, তাহলে WHERE ক্লজ ব্যবহার করুন:

SELECT * FROM table_name WHERE column_name = 'value';

উদাহরণস্বরূপ, যদি আপনি users টেবিলে “শুধুমাত্র id = ১০ এর ইউজার” পরীক্ষা করতে চান, তাহলে এভাবে লিখুন:
SELECT * FROM users WHERE id = 10;

যদি আপনি আংশিক মিলের সাথে সার্চ করতে চান, তাহলে LIKE অপারেটর ব্যবহার করুন:

SELECT * FROM table_name WHERE column_name LIKE 'A%';

এই উদাহরণে, শুধুমাত্র কলামের মান “A” দিয়ে শুরু হওয়া রেকর্ডগুলি প্রদর্শিত হবে।

ফেরত দেওয়া রো-এর সংখ্যা সীমিত করুন (LIMIT ক্লজ)

যদি টেবিলে খুব বেশি সংখ্যক রো থাকে, তাহলে LIMIT ক্লজ ব্যবহার করে প্রদর্শিত ফলাফলের সংখ্যা সীমিত করা গুরুত্বপূর্ণ:

SELECT * FROM table_name LIMIT 10;

এটি শুধুমাত্র প্রথম ১০টি রো প্রদর্শন করে।
এছাড়াও, আপনি OFFSET ব্যবহার করে কোন রো থেকে শুরু করতে হবে তা নির্দিষ্ট করতে পারেন:

SELECT * FROM table_name LIMIT 10 OFFSET 20;

এটি ২১তম রো থেকে শুরু করে ১০টি রো রিট্রিভ করে, যা পেজিং এবং বড় ডেটাসেট পর্যালোচনার জন্য উপকারী।

৬. আরও বিস্তারিত টেবিলের তথ্য পান

MySQL-এ, টেবিলের বিষয়বস্তু এবং স্ট্রাকচার পরীক্ষা করার জন্য কমান্ডের পাশাপাশি আরও বিস্তারিত তথ্য রিট্রিভ করার কমান্ডও আছে। এখানে, আমরা টেবিলের স্ট্যাটাস, সৃষ্টির বিবরণ, টেবিলের সাইজ এবং আরও অনেক কিছু পরীক্ষা করার উপায় ব্যাখ্যা করছি।

টেবিলের স্ট্যাটাস পরীক্ষা করুন (SHOW TABLE STATUS)

যদি আপনি টেবিলের স্ট্যাটাস এবং মৌলিক তথ্যের একটি ওভারভিউ চান, তাহলে SHOW TABLE STATUS কমান্ড ব্যবহার করুন:

SHOW TABLE STATUS;

এই কমান্ডটি চালালে বর্তমানে নির্বাচিত ডাটাবেসের সব টেবিলের জন্য নিম্নলিখিত তথ্যের তালিকা প্রদর্শিত হয়:

  • টেবিলের নাম (Name)
  • ইঞ্জিন (Engine)
  • সারি সংখ্যা (Rows)
  • টেবিলের আকার (Data_length, Index_length)
  • সৃষ্টির সময় (Create_time)
  • সর্বশেষ আপডেটের সময় (Update_time)
  • কোলেশন (Collation), ইত্যাদি।

যদি আপনি শুধুমাত্র একটি নির্দিষ্ট টেবিল পরীক্ষা করতে চান, তবে এভাবে নির্দিষ্ট করুন:

SHOW TABLE STATUS LIKE 'table_name';

SQL used to create the table (SHOW CREATE TABLE)

আপনি যদি জানতে চান “এই টেবিলটি তৈরি করতে কোন SQL ব্যবহার হয়েছে?”, তবে SHOW CREATE TABLE কমান্ডটি উপযোগী:

SHOW CREATE TABLE table_name;

এক্সিকিউট করলে, এটি টেবিলটি তৈরি করতে ব্যবহৃত সঠিক CREATE TABLE স্টেটমেন্ট আউটপুট করে।
এই কমান্ডটি টেবিল মাইগ্রেশন, ব্যাকআপ এবং অন্য পরিবেশে একই টেবিল পুনরায় তৈরি করার জন্য অত্যন্ত সহায়ক।

When detailed table info is useful

  • পারফরম্যান্স উন্নতি এবং স্টোরেজ ম্যানেজমেন্টের জন্য টেবিলের আকার ও সারি সংখ্যা বোঝা
  • মাইগ্রেশন ও রিফ্যাক্টরিংয়ের রেফারেন্স উপাদান হিসেবে DDL (টেবিল সংজ্ঞা) পরীক্ষা করা
  • ইঞ্জিনের ধরন, ক্যারেক্টার সেট এবং ইনডেক্স তথ্য তদন্ত করে সিস্টেম সমস্যার কারণ চিহ্নিত করা

এই কমান্ডগুলো আয়ত্ত করে, আপনি MySQL অপারেশন ও ট্রাবলশুটিং-এ আপনার সক্ষমতা ব্যাপকভাবে বাড়াতে পারবেন।

7. Checking via INFORMATION_SCHEMA (Advanced)

MySQL একটি বিশেষ ডাটাবেস INFORMATION_SCHEMA প্রদান করে। এটি পুরো MySQL সার্ভারের বিভিন্ন ধরণের মেটাডেটা সংরক্ষণ করে, যেমন টেবিলের তথ্য, কলামের বিশদ, ইনডেক্স, অনুমতি ইত্যাদি। এটি ব্যবহার করে আপনি টেবিল ও কলামের তথ্য আরও নমনীয় ও বিশদভাবে পুনরুদ্ধার করতে পারেন।

Retrieve table information using INFORMATION_SCHEMA

উদাহরণস্বরূপ, যদি আপনি নির্দিষ্ট একটি ডাটাবেসের সব টেবিলের নামের তালিকা পুনরুদ্ধার করতে চান, তবে নিম্নলিখিত SQL ব্যবহার করতে পারেন:

SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'database_name';

এই SQLটি তখন উপযোগী যখন আপনাকে ম্যানেজমেন্ট টুল ব্যবহার করে বড় সংখ্যক টেবিল পরীক্ষা করতে হয় অথবা স্ক্রিপ্টের মাধ্যমে স্বয়ংক্রিয়ভাবে তথ্য সংগ্রহ করতে হয়।

Retrieve column and index information

আপনি একইভাবে কলামের তথ্য পুনরুদ্ধার করতে পারেন:

SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_KEY
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'database_name'
  AND TABLE_NAME = 'table_name';

আপনি INFORMATION_SCHEMA ব্যবহার করে ইনডেক্সের বিশদ, কনস্ট্রেইন্ট, ফরেন কী এবং অন্যান্য মেটাডেটা সহজে পুনরুদ্ধার করতে পারেন।

Relation to ANALYZE TABLE

পারফরম্যান্স টিউনিং এবং স্ট্যাটিস্টিক্স রিফ্রেশের জন্য ANALYZE TABLE কমান্ডটি ব্যবহার করা হয়।
আপনি যখন এই কমান্ডটি চালান, টেবিলের স্ট্যাটিস্টিক্স আপডেট হয়, এবং INFORMATION_SCHEMA থেকে প্রাপ্ত (যেমন অনুমানিত সারি সংখ্যা) পরিসংখ্যানিক মানগুলো আরও সঠিক হয়ে ওঠে।

ANALYZE TABLE table_name;

When to use INFORMATION_SCHEMA

  • যখন আপনি একসাথে একাধিক টেবিল বা কলামের তথ্য পুনরুদ্ধার করতে চান
  • ব্যাচ প্রসেসিং বা অটোমেশন স্ক্রিপ্টে টেবিল ও কলামের গঠন পরীক্ষা করার সময়
  • ইনডেক্স, ফরেন কী বা টেবিলের মন্তব্যের মতো বিশদ তথ্যের প্রয়োজন হলে

INFORMATION_SCHEMA MySQL-কে আরও গভীরভাবে বুঝতে এবং আরও কার্যকরভাবে পরিচালনা করতে একটি শক্তিশালী টুল। দৈনন্দিন ম্যানেজমেন্ট কাজ এবং সিস্টেম ডেভেলপমেন্টে এটি পূর্ণভাবে ব্যবহার করুন।

8. CLI Tools and Shortcuts

MySQL-এ টেবিলের বিষয়বস্তু এবং গঠন পরীক্ষা করার সময়, সুবিধাজনক কমান্ড-লাইন ইন্টারফেস (CLI) কমান্ড এবং অপশনগুলো জানলে আপনার দক্ষতা উল্লেখযোগ্যভাবে বাড়ে। এখানে আমরা সাধারণত ব্যবহৃত CLI টুল এবং সহায়ক শর্টকাটগুলো পরিচয় করিয়ে দিচ্ছি।

The mysqlshow command

MySQL একটি নিবেদিত CLI টুল mysqlshow প্রদান করে। এটি ডাটাবেস এবং টেবিলের তালিকা তৈরি করার জন্য বিশেষায়িত এবং আপনাকে MySQL-এ ইন্টার্যাক্টিভভাবে লগইন না করেও দ্রুত তথ্য চেক করতে দেয়।

Display a list of databases

mysqlshow -u username -p

Display tables in a specific database

mysqlshow -u username -p database_name

নির্দিষ্ট টেবিলের জন্য কলাম তথ্য প্রদর্শন করুন

mysqlshow -u username -p database_name table_name

এই সংক্ষিপ্ত কমান্ডগুলো ব্যবহার করে আপনি দ্রুত গঠন এবং অস্তিত্ব পরীক্ষা করতে পারেন, যা সার্ভার ব্যবস্থাপনা ও স্ক্রিপ্টিংয়ের জন্য সুবিধাজনক।

“\G” অপশন দিয়ে আউটপুটকে সহজে পড়া যায়

সাধারণত, MySQL-এ আপনি যখন SQL চালান, ফলাফলগুলো একটি অনুভূমিক টেবিল ফরম্যাটে প্রদর্শিত হয়। তবে, যদি কলামের সংখ্যা বেশি হয় বা তথ্যের পরিমাণ বেশি হয়, “\G” ব্যবহার করলে ফলাফলগুলো উল্লম্বভাবে প্রদর্শিত হয়, যা পড়া অনেক সহজ করে দেয়।

উদাহরণ ব্যবহার

SELECT * FROM table_name\G

এইভাবে লিখলে, প্রতিটি রেকর্ড উল্লম্বভাবে প্রদর্শিত হয়, যেখানে কলামের নাম এবং মান জোড়া হিসেবে দেখানো হয়।
এটি টেবিলের গঠন পরীক্ষা করার সময় বা একক রেকর্ডের বিশদ বিবরণ সতর্কতার সাথে পর্যালোচনা করার সময় বিশেষভাবে উপকারী।

অন্যান্য উপকারী CLI কৌশল

  • কমান্ড ইতিহাস ব্যবহার আপনি উপরে ও নিচে তীর কী ব্যবহার করে পূর্বে চালানো কমান্ডগুলো পুনরায় আহ্বান করতে পারেন, ফলে একই কমান্ড বারবার টাইপ করতে হবে না।
  • ট্যাব সম্পূর্ণকরণ টেবিল বা কলামের নাম টাইপ করার সময়, নামের কিছু অংশ টাইপ করার পরে ট্যাব কী চাপলে স্বয়ংক্রিয়ভাবে সম্পূর্ণ হয়, যা বানান ও ইনপুট ত্রুটি কমায়।

CLI টুল এবং শর্টকাটগুলো আয়ত্ত করে, MySQL অপারেশনগুলো আরও স্বাচ্ছন্দ্যপূর্ণ এবং কার্যকরী হয়। সেগুলোকে আপনার দৈনন্দিন কাজ ও ডেভেলপমেন্ট টাস্কে অন্তর্ভুক্ত করার চেষ্টা করুন।

9. সাধারণ ত্রুটি এবং সেগুলি কীভাবে সমাধান করবেন

MySQL-এ টেবিলের বিষয়বস্তু এবং গঠন পরীক্ষা করার সময়, এমন বেশ কিছু সাধারণ ত্রুটি রয়েছে যা নবীন ও অভিজ্ঞ উভয় ব্যবহারকারীই কমপক্ষে একবার করে দেখেন। এখানে আমরা স্পষ্টভাবে সাধারণ ত্রুটি, তাদের কারণ এবং সমাধান ব্যাখ্যা করছি।

কোনো ডাটাবেস নির্বাচিত হয়নি

ত্রুটি বার্তা

ERROR 1046 (3D000): No database selected

কারণ ও সমাধান
আপনি যদি কোনো ডাটাবেস নির্বাচন না করে টেবিলের উপর কাজ করার চেষ্টা করেন, তখন এই ত্রুটি ঘটে।
ডাটাবেসটি আগে থেকেই নির্দিষ্ট করতে নিশ্চিত হন, উদাহরণস্বরূপ:

USE database_name;

অজানা ডাটাবেস

ত্রুটি বার্তা

ERROR 1049 (42000): Unknown database 'database_name'

কারণ ও সমাধান
যদি নির্দিষ্ট ডাটাবেসটি না থাকে, তখন এই ত্রুটি ঘটে। সাধারণ কারণগুলো হল বানান ভুল, বড়-ছোট অক্ষরের ভুল ব্যবহার, অথবা ডাটাবেসটি এখনও তৈরি না হওয়া।
সঠিক নাম নিশ্চিত করতে নিম্নলিখিত কমান্ড ব্যবহার করুন:

SHOW DATABASES;

অনুমতি ত্রুটি (SHOW TABLES / SHOW COLUMNS-এ কোনো ফলাফল না দেখানো)

উদাহরণ পরিস্থিতি

  • SHOW TABLES চালানোর সময় কোনো টেবিল দেখা যায় না
  • SHOW COLUMNS চালানোর সময় কোনো তথ্য দেখা যায় না

কারণ ও সমাধান
এটি ঘটে যখন MySQL ব্যবহারকারীর ডাটাবেস বা টেবিলের জন্য পর্যাপ্ত অধিকার নেই।
একজন প্রশাসক (যেমন root ব্যবহারকারী)কে প্রয়োজনীয় অনুমতি প্রদান করতে বলুন, অথবা উপযুক্ত GRANT কমান্ড ব্যবহার করে অধিকার কনফিগার করুন।

অতিরিক্ত সারি ফেরত আসা, ফলে ফলাফল পড়া কঠিন

উদাহরণ পরিস্থিতি

  • SELECT * FROM table_name; চালালে একসাথে দশ হাজারেরও বেশি সারি প্রদর্শিত হয়

সমাধান
LIMIT ক্লজ ব্যবহার করে ফেরত আসা সারির সংখ্যা সীমিত করুন।
উদাহরণ:

SELECT * FROM table_name LIMIT 10;

টেবিল বা কলামের নামের বানান ভুল

উদাহরণ পরিস্থিতি

  • ‘field list’ এ অজানা কলাম ‘column_name’
  • টেবিল ‘database_name.table_name’ অস্তিত্ব নেই

সমাধান
বানান ভুল এড়াতে, SHOW TABLES, SHOW COLUMNS অথবা CLI-তে ট্যাব সম্পূর্ণকরণ ফিচার ব্যবহার করুন।

এই ত্রুটিগুলোর বেশিরভাগই মৌলিক চেকগুলো সতর্কতার সাথে করে এড়ানো যায়। কিছু ভুল হলে, উপরের পয়েন্টগুলো ধাপে ধাপে পর্যালোচনা করুন।

10. সারাংশ

MySQL-এ “টেবিলের বিষয়বস্তু পরীক্ষা” করার মৌলিক অপারেশনের জন্য বিভিন্ন পদ্ধতি রয়েছে। এই প্রবন্ধে আমরা টেবিল তালিকাভুক্ত করা, বিস্তারিত টেবিল গঠন পরীক্ষা করা, প্রকৃত ডেটা পুনরুদ্ধার করা, পাশাপাশি উন্নত মেটাডেটা এবং বিশদ ব্যবস্থাপনা তথ্য প্রাপ্তি পর্যন্ত সবকিছু কভার করেছি।

  • SHOW TABLES ব্যবহার করে টেবিলের তালিকা দেখুন,
  • DESCRIBE (DESC) অথবা SHOW COLUMNS ব্যবহার করে কলামের তথ্য ও গঠন পরীক্ষা করুন,
  • SELECT স্টেটমেন্ট ব্যবহার করে প্রকৃত ডেটা পুনরুদ্ধার করুন,
  • প্রয়োজন অনুযায়ী SHOW TABLE STATUS, SHOW CREATE TABLE, এবং INFORMATION_SCHEMA ব্যবহার করে বিস্তারিত ম্যানেজমেন্ট তথ্য ও DDL পর্যালোচনা করুন,
  • CLI টুল, শর্টকাট, এবং ট্রাবলশুটিং জ্ঞান ব্যবহার করে দৈনন্দিন ডেভেলপমেন্ট ও অপারেশন দক্ষতা বৃদ্ধি করুন।

এই টেকনিকগুলো আয়ত্ত করলে MySQL ডাটাবেস অপারেশনগুলো আরও নিরাপদ ও নির্ভরযোগ্য হয়, এবং ভুল বা সমস্যার সম্ভাবনা কমে যায়। এই বিষয়বস্তুটি নবীন, মধ্যম স্তরের ব্যবহারকারী এবং বাস্তব পরিবেশে কাজ করা পেশাদারদের জন্য উপযোগী। আপনার ভবিষ্যৎ ডেভেলপমেন্ট ও সিস্টেম অ্যাডমিনিস্ট্রেশন কাজগুলোতে এই টেকনিকগুলো প্রয়োগ করুন।

11. FAQ (প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী)

Q1. নির্দিষ্ট শর্তের সাথে টেবিলের ডেটা কীভাবে পরীক্ষা করব?

A:
WHERE ক্লজটি নিম্নরূপ ব্যবহার করুন:

SELECT * FROM table_name WHERE condition;

উদাহরণস্বরূপ:

SELECT * FROM users WHERE age > 30;

এটি শুধুমাত্র 30 বছরের বেশি বয়সের ব্যবহারকারীদের পুনরুদ্ধার করবে। আপনি LIMIT ক্লজের সঙ্গে যুক্ত করে কতগুলো রো প্রদর্শিত হবে তা নিয়ন্ত্রণ করতে পারেন।

Q2. আমি SHOW TABLES চালালাম কিন্তু কোনো টেবিল দেখাচ্ছে না। কেন?

A:
সম্ভাব্য কারণগুলো হল:
(১) আপনি কোনো ডাটাবেস নির্বাচন করেননি (USE database_name; অনুপস্থিত),
(২) নির্দিষ্ট ডাটাবেসের নাম ভুল,
(৩) পর্যাপ্ত অনুমতি নেই।
ডাটাবেসের নাম নিশ্চিত করতে এবং আপনার অনুমতি যাচাই করতে SHOW DATABASES; ব্যবহার করুন।

Q3. টেবিলের গঠনকে DDL (CREATE স্টেটমেন্ট) হিসেবে কীভাবে দেখব?

A:
নিম্নলিখিত কমান্ডটি চালান:

SHOW CREATE TABLE table_name;

এটি টেবিল তৈরি করতে ব্যবহৃত সঠিক CREATE TABLE স্টেটমেন্ট প্রদর্শন করে। টেবিল মাইগ্রেশন ও ব্যাকআপের জন্য এটি উপকারী।

Q4. টেবিলে ডেটা খুব বেশি, একবারে সব দেখানো সম্ভব নয়।

A:
LIMIT ক্লজ ব্যবহার করুন:

SELECT * FROM table_name LIMIT 10;

আপনি OFFSET এর সঙ্গে যুক্ত করে নির্দিষ্ট রেঞ্জ ধাপে ধাপে পরীক্ষা করতে পারেন।

Q5. INFORMATION_SCHEMA কী এবং কখন ব্যবহার করা উচিত?

A:
INFORMATION_SCHEMA হল একটি বিশেষ ডাটাবেস যা MySQL মেটাডেটা সংরক্ষণ করে। টেবিল, কলাম, ইনডেক্স বা প্রিভিলেজের ব্যাপক তথ্য পুনরুদ্ধার বা পরিচালনা করার সময় এটি খুবই উপযোগী। যেহেতু এটি সরাসরি SQL দিয়ে কুয়েরি করা যায়, তাই অটোমেশন ও রিপোর্টিংয়ের জন্যও আদর্শ।

Q6. ফলাফলগুলোকে উল্লম্বভাবে কীভাবে প্রদর্শন করব?

A:
SQL স্টেটমেন্টের শেষে “\G” যোগ করুন।
উদাহরণ:

SELECT * FROM table_name\G

এটি প্রতিটি রেকর্ডকে উল্লম্বভাবে প্রদর্শন করে, যেখানে কলামের নাম ও মানগুলো পাঠযোগ্য জোড়া ফরম্যাটে থাকে।