মাইএসকিউএলে নির্বাচন করুন স্টেটমেন্ট ব্যবহার করে টেবিলের নাম পান


260

মাইএসকিউএলে, আমি জানি যে আমি একটি ডাটাবেসে টেবিলগুলি তালিকাভুক্ত করতে পারি:

SHOW TABLES

তবে আমি এই টেবিলের নামগুলি অন্য টেবিলে sertোকাতে চাই, উদাহরণস্বরূপ:

INSERT INTO metadata(table_name) SHOW TABLES /* does not work */

কোনও স্ট্যান্ডার্ড SELECT স্টেটমেন্ট ব্যবহার করে টেবিলের নামগুলি পাওয়ার কোনও উপায় আছে:

INSERT INTO metadata(table_name) SELECT name FROM table_names /* what should table_names be? */

সম্ভাব্য সদৃশ stackoverflow.com/questions/64894/...
hafichuk

উত্তর:


381

সমস্ত টেবিলের নাম পেতে ব্যবহার করুন:

SELECT table_name FROM information_schema.tables;

নির্দিষ্ট ডাটাবেস থেকে সারণির নাম পেতে:

SELECT table_name FROM information_schema.tables
WHERE table_schema = 'your_database_name';

এখন, মূল প্রশ্নের উত্তর দিতে, এই কোয়েরিটি ব্যবহার করুন:

INSERT INTO table_name
    SELECT table_name FROM information_schema.tables
        WHERE table_schema = 'your_database_name';

আরও তথ্যের জন্য দেখুন: http://dev.mysql.com/doc/refman/5.0/en/information-schema.html


144

চেষ্টা করুন:

select * from information_schema.tables

দেখুন: http://dev.mysql.com/doc/refman/5.0/en/information-schema.html


4
এটি সঠিক দিকে নির্দেশ করে তবে সত্যই প্রশ্নের উত্তর দেয় না। আরও বিস্তারিত বলতে পারে।
মুরিলো গার্সিয়া

@ মুরিলোগ্র্যাকিয়া তথ্য_স্কেমা এসকিউএল স্ট্যান্ডার্ডের একটি অংশ। পোস্টগ্রিসের পাশাপাশি এটি রয়েছে। এসকিউএলাইটের জন্য, আপনি সন্ধান করুনsqlite_master
পিটারচাউলা

LIKE ব্যবহার করে নাম অনুসারে টেবিলগুলি আনা হচ্ছে: তথ্য থেকে সারণী ট্যাবলেট নির্বাচন করুন_সেমি t টেবিলগুলি যেখানে ট্যাবলেটকে '% কীওয়ার্ড%' পছন্দ করে;
জ্যারেট বার্নেট 18

19

যদি আমাদের একাধিক ডাটাবেস থাকে এবং একটি নির্দিষ্ট ডাটাবেসের জন্য আমাদের সকল সারণী নির্বাচন করতে হয় তবে আমরা TABLE_SCHEMAডাটাবেসের নামটি নির্ধারণ করতে ব্যবহার করতে পারি:

select table_name from information_schema.tables where TABLE_SCHEMA='dbname';


12

INFORMATION_SCHEMA টেবিলটি ব্যবহার করার পাশাপাশি একটি টেবিলের মধ্যে SHোকানোর জন্য শো টেবিলগুলি ব্যবহার করার জন্য আপনি নিম্নলিখিতটি ব্যবহার করবেন

<?php
 $sql = "SHOW TABLES FROM $dbname";
 $result = mysql_query($sql);
 $arrayCount = 0
 while ($row = mysql_fetch_row($result)) {
  $tableNames[$arrayCount] = $row[0];
  $arrayCount++; //only do this to make sure it starts at index 0
 }
 foreach ($tableNames as &$name {
  $query = "INSERT INTO metadata (table_name) VALUES ('".$name."')";
  mysql_query($query);
 }
?>

8

TABLESডাটাবেসে টেবিলটি একবার দেখুন information_schema। এটিতে আপনার অন্যান্য ডাটাবেসে টেবিলগুলি সম্পর্কে তথ্য রয়েছে। তবে আপনি যদি শেয়ার্ড হোস্টিংয়ে থাকেন তবে আপনার সম্ভবত এটিতে অ্যাক্সেস নেই।



5
SELECT table_name 
FROM information_schema.tables 
WHERE table_schema = 'DATABASE'

3
আমি আপনাকে অনুরোধ করতে দয়া করে আপনার উত্তর কাছাকাছি আরও কিছু প্রসঙ্গ যুক্ত করুন। কোড-কেবল উত্তরগুলি বোঝা মুশকিল। আপনি যদি আপনার পোস্টে আরও তথ্য যুক্ত করতে পারেন তবে এটি প্রশ্নকারী এবং ভবিষ্যতের পাঠকদের উভয়কেই সহায়তা করবে।
আরবিটি

4

মাইএসকিউএল INFORMATION_SCHEMA.TABLESটেবিলটিতে উভয় সারণী (অস্থায়ী নয় তবে স্থায়ী নয়) এবং দর্শন সম্পর্কে ডেটা রয়েছে। কলামটি TABLE_TYPEনির্ধারণ করে যে এটি সারণী বা দেখার জন্য রেকর্ড কিনা (সারণী TABLE_TYPE='BASE TABLE'এবং দর্শনগুলির জন্য TABLE_TYPE='VIEW')। সুতরাং আপনি যদি আপনার স্কিমা (ডাটাবেস) সারণীগুলি থেকে দেখতে চান তবে কেবলমাত্র নিম্নলিখিত কোয়েরি রয়েছে:

SELECT *
FROM information_schema.tables
WHERE table_type='BASE TABLE'
AND table_schema='myschema'

2

আমি মনে করি এটি উল্লেখ করা সহায়ক হতে পারে যে আপনি যদি নির্দিষ্ট সারণীগুলিতে নির্দিষ্ট শব্দগুলি সমন্বিত করতে চান তবে আপনি সহজেই SELECT(পরিবর্তে SHOW) ব্যবহার করে এটি করতে পারেন । ক্যোয়ারির নীচে সহজেই টেবিলগুলিতে অনুসন্ধানটি সঙ্কুচিত করে যা "কীওয়ার্ড" রয়েছে

SELECT *
FROM information_schema.tables
WHERE table_name like "%keyword%"

0

টেবিলের নাম পাওয়ার আরও একটি সহজ উপায় আছে

SHOW TABLES FROM <database_name>

2
এটি প্রশ্নের কোনও উত্তর দেয় না।
মাইক চেম্বারলাইন

যখন আমি প্রশ্নের শিরোনামকে হিট করে এমন কোনও বিষয় অনুসন্ধান করি তখন আমাকে সহায়তা করে।
শিহে ঝাং

না। এটি ভাল নয় কারণ এটি কেবল মাইএসকিএল সরঞ্জামগুলিতে সারণীগুলি দেখায়।
টিএস

0

নীচের এই জিজ্ঞাসাটি আমার পক্ষে কাজ করেছে। এটি ডাটাবেস, টেবিল, কলামের নাম, ডেটা ধরণের এবং কলামগুলির গণনা প্রদর্শন করতে সক্ষম।

**select table_schema Schema_Name ,table_name TableName,column_name ColumnName,ordinal_position "Position",column_type DataType,COUNT(1) ColumnCount
FROM information_schema.columns
GROUP by table_schema,table_name,column_name,ordinal_position, column_type;**

-3

সন্নিবেশ করানোর জন্য, নিম্নলিখিতটি আপডেট করুন এবং মুছুন:

$teste = array('LOW_PRIORITY', 'DELAYED', 'HIGH_PRIORITY', 'IGNORE', 'INTO', 'INSERT', 'UPDATE', 'DELETE', 'QUICK', 'FROM');
$teste1 = array("\t", "\n", "\r", "\0", "\x0B");
$strsql = trim(str_ireplace($teste1, ' ', str_ireplace($teste, '', $strsql)));
$nomeTabela = substr($strsql, 0, strpos($strsql, ' '));

print($nomeTabela);
exit;

আমরা এখানে ইংরেজি আশা করি expect তবে আমাদের এখানে পর্তুগিজ ভাষায় একটি সাইট রয়েছে: pt.stackoverflow.com
লরেল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.