2011-11-16 2 views
0

제 질문은 mysql 명령이 실행될 테이블과 스키마를 식별하는 것과 관련이 있습니다. 나는 예를 들어 PHPMySQL 명령에서 테이블 이름을 추출하십시오.

에 PDO 래퍼에서이 작업을 실행 해요 :

USE db1; 
SELECT * FROM `table`; 

나는 DESCRIBE SELECT * FROM table를 사용하는 테이블의 이름을 얻고 스키마의 이름 DB1이라고 가정 할 수있다. 이제

, 나는 내가 다시 명령을 설명 사용하여 테이블의 이름을 얻을 수있는이

USE db1; 
SELECT * FROM `db2`.`table` 

처럼 뭔가를 할 수 있습니다. 그러나 나는 명령이 실행 된 스키마를 제공하는 MySQL에서 메서드를 찾을 수 없습니다.

정규식을 사용하여 MySQL 명령에서 데이터베이스와 테이블 이름을 추출하는 방법이 있습니까? 조인이없는 것으로 가정하고 명령은 SELECT 일 뿐이라고 가정합니다.

+0

난 당신이 * 데이터베이스 *을 의미 생각하지 * 스키마 *. –

+0

쿼리를 실행하기 위해 방금 테이블 이름을 다시 사용할 필요가있는 이유는 무엇입니까? – ManseUK

+0

그리고'select database'를 사용하여 현재 데이터베이스를 얻을 수 있습니까? – ManseUK

답변

0

쿼리 분석기에서 생성하는 쿼리를 사용하면 내가 생각하는 것을 제공해야합니다. 이것은 데이터베이스 테스트의 테이블 테스트입니다.

explain extended select * from test; 

+----+-------------+-------+------+---------------+------+---------+------+------+----------+-------+ 
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | filtered | Extra | 
+----+-------------+-------+------+---------------+------+---------+------+------+----------+-------+ 
| 1 | SIMPLE  | test | ALL | NULL   | NULL | NULL | NULL | 5 | 100.00 |  | 
+----+-------------+-------+------+---------------+------+---------+------+------+--------- -+-------+ 
1 row in set, 1 warning (0.00 sec) 

망가 쇼 경고를 할 것을 잊지

show warnings; 
+-------+------+--------------------------------------------------------------------------------------------------------------------------------------+ 
| Level | Code | Message                                | 
+-------+------+--------------------------------------------------------------------------------------------------------------------------------------+ 
| Note | 1003 | select `test`.`test`.`id` AS `id`,`test`.`test`.`name` AS `name`,`test`.`test`.`date_modified` AS `date_modified` from `test`.`test` | 
+-------+------+--------------------------------------------------------------------------- -----------------------------------------------------------+ 
1 row in set (0.00 sec) 
관련 문제