ডেটাবেসে কোন কলাম (যেমন EmployeeAge) কোন কোন টেবিলে আছে তা খুঁজে বের করতে INFORMATION_SCHEMA.COLUMNS ভিউ কোয়েরি করা হয়। এটি স্কিমা এক্সপ্লোরেশন এবং মাইগ্রেশনের জন্য অত্যন্ত উপযোগী।
সিনট্যাক্স
SELECT table_name, column_name FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema = SCHEMA() AND column_name = 'yourColumnName';
table_schema = SCHEMA()— বর্তমান ডেটাবেস (DATABASE() সমতুল্য)।column_name = 'EmployeeAge'— খুঁজতে চাওয়া কলামের নাম।
কোয়েরি: 'EmployeeAge' কলামवाले টেবিলগুলো
mysql> SELECT table_name, column_name
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_schema = SCHEMA()
AND column_name = 'EmployeeAge';
আউটপুট (উদাহরণ):
+---------------+-------------+ | TABLE_NAME | COLUMN_NAME | +---------------+-------------+ | demotable1153 | EmployeeAge | | demotable1297 | EmployeeAge | | demotable1303 | EmployeeAge | | demotable1328 | EmployeeAge | | demotable1378 | EmployeeAge | | demotable1530 | EmployeeAge | | demotable1559 | EmployeeAge | | demotable1586 | EmployeeAge | | demotable1798 | EmployeeAge | | demotable1901 | EmployeeAge | | demotable511 | EmployeeAge | | demotable912 | EmployeeAge | +---------------+-------------+ 12 rows in set (0.00 sec)
যাচাই: একটি টেবিলের কাঠামো দেখানো
mysql> DESC demotable1153;
+--------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+-------------+------+-----+---------+----------------+ | EmployeeId | int(11) | NO | PRI | NULL | auto_increment | | EmployeeName | varchar(40) | YES | MUL | NULL | | | EmployeeAge | int(11) | YES | | NULL | | +--------------+-------------+------+-----+---------+----------------+
অতিরিক্ত ফিল্টারিং
-- নির্দিষ্ট টাইপের কলাম WHERE data_type = 'int' AND column_name LIKE '%age%' -- প্রাইমারি কী কলাম WHERE column_key = 'PRI' -- নালেবল কলাম WHERE is_nullable = 'YES'
সর্বোত্তম অনুশীলন
- স্কিমা ডকুমেন্টেশন জেনারেট করতে এই কোয়েরি ব্যবহার করুন।
- মাইগ্রেশন স্ক্রিপ্টে কলাম এক্সিস্টেন্স চেক করতে:
IF EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE ...)। information_schemaকোয়েরি মেটাডেটা লক নেয় না (বেশিরভাগ ক্ষেত্রে), তাই প্রোডাকশনে সেফ।