it-swarm-ko.tech

"테이블 표시"MySQL 쿼리에서 데이터 선택

MySQL에서 show tables 중에서 선택할 수 있습니까?

SELECT * FROM (SHOW TABLES) AS `my_tables`

위의 내용은 작동하지 않지만 (5.0.51a 이상) 이상입니다.

52
BioTronic

당신이 원한다고 생각합니다 SELECT * FROM INFORMATION_SCHEMA.TABLES

http://dev.mysql.com/doc/refman/5.0/en/tables-table.html 참조

42
Andrew

다른 사람들이 언급했듯이 INFORMATION_SCHEMA에서 선택하지 않으면 내가 아는 바가 없습니다.

그러나 SHOW 명령은 다음과 같이 매우 유연합니다.

SHOW tables like '%s%'
20
Lucas Oman

계산하기:

SELECT COUNT(*) as total FROM (SELECT TABLE_NAME as tab, TABLES.* FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='database_name' GROUP BY tab) tables;

나열하려면 :

SELECT TABLE_NAME as table, TABLES.* FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='database_name' GROUP BY table;
11
Ivan Ferrer

SHOW TABLES는 이미 SELECT와 비슷하게 동작합니다.

$pdo = new PDO("mysql:Host=$Host;dbname=$dbname",$user,$pass);
foreach ($pdo->query("SHOW TABLES") as $row) {
    print "Table $row[Tables_in_$dbname]\n";
}
4
Bob Stein

INFORMATION_SCHEMA.Tables를 쿼리 해 보셨습니까? 에서와 같이

SELECT ic.Table_Name,
    ic.Column_Name,
    ic.data_Type,
    IFNULL(Character_Maximum_Length,'') AS `Max`,
    ic.Numeric_precision as `Precision`,
    ic.numeric_scale as Scale,
    ic.Character_Maximum_Length as VarCharSize,
    ic.is_nullable as Nulls, 
    ic.ordinal_position as OrdinalPos, 
    ic.column_default as ColDefault, 
    ku.ordinal_position as PK,
    kcu.constraint_name,
    kcu.ordinal_position,
    tc.constraint_type
FROM INFORMATION_SCHEMA.COLUMNS ic
    left outer join INFORMATION_SCHEMA.key_column_usage ku
        on ku.table_name = ic.table_name
        and ku.column_name = ic.column_name
    left outer join information_schema.key_column_usage kcu
        on kcu.column_name = ic.column_name
        and kcu.table_name = ic.table_name
    left outer join information_schema.table_constraints tc
        on kcu.constraint_name = tc.constraint_name
order by ic.table_name, ic.ordinal_position;
4
BigJim

예제와 같이 하위 쿼리 안에 SHOW 문을 넣을 수 없습니다. 하위 쿼리에 들어갈 수있는 유일한 문은 SELECT입니다.

다른 답변에서 언급했듯이 SELECT를 사용하여 INFORMATION_SCHEMA를 직접 쿼리하면 훨씬 더 많은 유연성을 얻을 수 있습니다.

MySQL의 SHOW 문은 내부적으로 INFORMATION_SCHEMA 테이블에 대한 쿼리입니다.

사용자 @physicalattraction은 대부분의 다른 답변에이 의견을 게시했습니다.

이것은 OP의 의도대로 테이블의 내용이 아닌 테이블에 대한 (메타) 정보를 제공합니다. - 신체적 매력

반대로 OP의 질문은 not는 모든 테이블에서 데이터를 선택하고 싶다고 말합니다. 그들은 테이블 이름의리스트 인 SHOW TABLES의 결과에서 선택하고 싶다고 말합니다.

OP가 모든 테이블에서 모든 데이터를 선택하려는 경우 대답은 아니오이며 하나의 쿼리로 수행 할 수 없습니다. 각 쿼리는 테이블 이름을 명시 적으로 지정해야합니다. 테이블 이름을 변수로 만들거나 같은 쿼리의 다른 부분의 결과로 만들 수 없습니다. 또한 주어진 쿼리 결과의 모든 행은 동일한 열을 가져야합니다.

따라서 모든 테이블에서 모든 데이터를 선택하는 유일한 방법은 SHOW TABLES를 실행 한 다음 해당 결과에 이름이 지정된 각 테이블에 대해 다른 쿼리를 실행하는 것입니다.

4
Bill Karwin

저장 프로 시저를 만들고 테이블 이름을 커서에 넣은 다음 테이블 이름을 반복하여 데이터를 표시 할 수 있습니다.

저장 프로 시저 시작하기 : http://www.mysqltutorial.org/getting-started-with-mysql-stored-procedures.aspx

커서 만들기 : http://www.mysqltutorial.org/mysql-cursor/

예를 들어

CREATE PROCEDURE `ShowFromTables`()
BEGIN

DECLARE v_finished INTEGER DEFAULT 0;
DECLARE c_table varchar(100) DEFAULT "";

DECLARE table_cursor CURSOR FOR 
SELECT table_name FROM information_schema.tables WHERE table_name like 'wp_1%';

DECLARE CONTINUE HANDLER 
    FOR NOT FOUND SET v_finished = 1;

OPEN table_cursor;

get_data: LOOP

FETCH table_cursor INTO c_table;

IF v_finished = 1 THEN 
LEAVE get_data;
END IF;

SET @s=CONCAT("SELECT * FROM ",c_table,";");

PREPARE stmt FROM @s;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

END LOOP get_data;

CLOSE table_cursor;

END

그런 다음 저장 프로 시저를 호출하십시오.

CALL ShowFromTables();
3
Bridget Arrington
SELECT column_comment FROM information_schema.columns WHERE table_name = 'myTable' AND column_name = 'myColumnName'

이것은 myTable.myColumnName에 대한 주석을 리턴합니다.

3
Brian

나는 당신이 원하는 것이 MySQL의 information_schema view라고 생각합니다. http://dev.mysql.com/doc/refman/5.0/en/tables-table.html

3
Matt Rogish
SELECT * FROM INFORMATION_SCHEMA.TABLES

좋은 시작이되어야합니다. 자세한 내용은 INFORMATION_SCHEMA 테이블 을 확인하십시오.

3
Sören Kuklau

mySql 5.1에서는 시도해 볼 수 있습니다

show tables like 'user%';

출력 :

mysql> show tables like 'user%';

+----------------------------+

| Tables_in_test (user%) |

+----------------------------+

| user                       |

| user_password              |

+----------------------------+

2 rows in set (0.00 sec)
2
MT467

예, table_schema의 SELECT는 시스템 관리에 매우 유용 할 수 있습니다. 많은 서버, 데이터베이스, 테이블이있는 경우 때때로 여러 요소를 삭제하거나 업데이트해야합니다. 예를 들어 접두사가 "wp_old _..."인 모든 테이블을 DROP에 대한 쿼리를 작성하려면 다음을 수행하십시오.

SELECT concat('DROP TABLE ', table_name, ';') FROM INFORMATION_SCHEMA.TABLES
WHERE table_schema = '*name_of_your_database*'
AND table_name LIKE 'wp_old_%';
2
Srdjan

설명의 일부로 SELECT * FROM을 (를) 사용하려는 이유를 모르겠습니다.

12.5.5.30. 테이블 표시 구문

1
Derek B. Bell