MySQL에서는 다음을 사용하여 데이터베이스의 테이블을 나열 할 수 있다는 것을 알고 있습니다.
SHOW TABLES
그러나 이러한 테이블 이름을 다른 테이블에 삽입하려고합니다 (예 :
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? */
답변
모든 테이블의 이름을 얻으려면 다음을 사용하십시오.
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
답변
시험:
select * from information_schema.tables
참조 : http://dev.mysql.com/doc/refman/5.0/en/information-schema.html
답변
여러 데이터베이스가 있고 특정 데이터베이스에 대한 모든 테이블을 선택해야하는 경우 TABLE_SCHEMA
데이터베이스 이름을 다음과 같이 정의 하는 데 사용할 수 있습니다 .
select table_name from information_schema.tables where TABLE_SCHEMA='dbname';
답변
INFORMATION_SCHEMA 테이블을 사용하는 것 외에도 SHOW TABLES를 사용하여 테이블에 삽입하려면 다음을 사용하십시오.
<?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);
}
?>
답변
TABLES
데이터베이스 의 테이블 을 보십시오 information_schema
. 다른 데이터베이스의 테이블에 대한 정보가 들어 있습니다. 그러나 공유 호스팅을 사용하는 경우 액세스 권한이 없을 수 있습니다.
답변
INFORMATION_SCHEMA TABLES에서 원하는 데이터를 얻을 수 있다고 생각합니다.
자세한 정보는 여기에서 찾을 수 있습니다 : http://dev.mysql.com/doc/refman/5.0/en/tables-table.html
답변
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'DATABASE'