programing

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

bestcode 2022. 11. 6. 10:35
반응형

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

선택 가능합니까?show tablesMySQL에서요?

SELECT * FROM (SHOW TABLES) AS `my_tables`

위의 것은 동작하지 않지만, 이러한 라인상의 무엇인가가 있습니다(적어도 5.0.51a에서는).

네가 원하는 것 같아SELECT * FROM INFORMATION_SCHEMA.TABLES

http://dev.mysql.com/doc/refman/5.0/en/tables-table.html 를 참조해 주세요.

내가 아는 바로는, 당신이 선택해주지 않는 한INFORMATION_SCHEMA다른 사람들이 언급했듯이.

하지만, 그SHOW명령어는 매우 유연합니다.예:

SHOW tables like '%s%'

계산 방법:

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;

넣을 수 없습니다.SHOW예시와 같이 서브쿼리 내에 있는 문.서브쿼리에서 사용할 수 있는 유일한 문장은SELECT.

기타 답변에서 설명한 바와 같이 INFORMATION_SCHEMA에 직접 문의할 수 있습니다.SELECT더 많은 유연성을 얻을 수 있습니다.

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

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

그러면 OP가 의도한 대로 테이블의 내용이 아닌 테이블에 대한 정보가 제공됩니다.– 물리적인 매력

반대로, OP의 질문에는 모든 표의 데이터를 선택하려는 이 아닙니다.그 결과에서 뽑고 싶다고 합니다.SHOW TABLES테이블 이름 목록입니다.

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

따라서 모든 테이블에서 모든 데이터를 선택하려면SHOW TABLES그런 다음 해당 결과에 명명된 각 테이블에 대해 다른 쿼리를 실행합니다.

생각보다 가까운 것 같습니다.SHOW TABles는 이미 SELECT 문과 같은 동작을 하고 있습니다.다음은 해당 "행"을 가져오는 방법에 대한 PHP 예입니다.

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

SHOW TABLES는 1열 테이블에서 SELECT와 같이 동작합니다.그 컬럼명은Tables_in_데이터베이스 이름을 추가합니다.

SELECT * FROM INFORMATION_SCHEMA.TABLES

좋은 출발이 될 거야자세한 내용은 INFORMATION_SCHEMA Tables를 참조하십시오.

INFORMATION_SCHEMA에 대한 쿼리를 검토해 보셨습니까?테이블이요?

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;

당신이 원하는 것은 MySQL의 information_displays: http://dev.mysql.com/doc/refman/5.0/en/tables-table.html 입니다.

SELECT column_comment FROM information_schema.columns WHERE table_name = 'myTable' AND column_name = 'myColumnName'

myTable.myColumnName에 대한 코멘트가 반환됩니다.

네, 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_%';

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)

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

스토어드 프로시저 시작: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();

쓰려고 안 돼요.SELECT * FROM성명의 일부로서

12.5.5.30. SHOW TABles 구문

언급URL : https://stackoverflow.com/questions/64894/select-data-from-show-tables-mysql-query

반응형