MySQL에서 SELECT 문을 사용하여 테이블 이름 가져오기
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
. 여기에는 다른 데이터베이스의 테이블에 대한 정보가 포함되어 있습니다.그러나 공유 호스팅을 사용하는 경우 액세스 권한이 없을 수 있습니다.
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'DATABASE'
MySQLINFORMATION_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'
INFORMATION_SCHEMA TABLES에서 원하는 데이터를 얻을 수 있다고 생각합니다.
상세한 것에 대하여는, http://dev.mysql.com/doc/refman/5.0/en/tables-table.html 를 참조해 주세요.
모든 테이블의 이름을 가져오는 경우:
SELECT table_name
FROM information_schema.tables;
특정 데이터베이스에 대해 가져올 필요가 있는 경우:
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'your_db_name';
출력:
+--------------------+
| table_name |
+--------------------+
| myapp |
| demodb |
| cliquein |
+--------------------+
3 rows in set (0.00 sec)
테이블 이름을 얻는 또 다른 간단한 방법이 있습니다.
SHOW TABLES FROM <database_name>
특정 단어가 포함된 표를 선택하고 싶다면 이 표를 사용하여 쉽게 할 수 있다는 점을 지적하는 것이 도움이 될 것 같습니다.SELECT
(의 일부SHOW
아래 쿼리는 검색 범위를 "키워드"를 포함하는 테이블로 쉽게 좁힙니다.
SELECT *
FROM information_schema.tables
WHERE table_name like "%keyword%"
아래의 질문은 저에게 효과가 있었습니다.데이터베이스, 테이블, 열 이름, 데이터 유형 및 열 수를 표시할 수 있습니다.
**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;**
네, information_schema를 사용합니다.표. 이는 아래 Skyvia와 같은 클라우드 솔루션에서도 작동합니다.
이를 통해 위와 같은 SELECT 문을 사용하여 INSERT 문에 추가할 수 있습니다.그러나 table_schema 값을 실제 설정에 사용할 데이터베이스 이름과 일치하도록 변경합니다.
삽입, 업데이트 및 삭제를 수행하려면 다음 절차를 수행합니다.
$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;
언급URL : https://stackoverflow.com/questions/8334493/get-table-names-using-select-statement-in-mysql
'programing' 카테고리의 다른 글
MariaDB Server vs MariaDB Galera 클러스터 HA 리플리케이션 (0) | 2023.02.01 |
---|---|
액티비티는?finish()는 Android에서 작동합니까? (0) | 2023.02.01 |
Seaborn 플롯을 파일에 저장하는 방법 (0) | 2023.02.01 |
프로그램 방식으로 SearchView를 열려면 어떻게 해야 합니까? (0) | 2023.02.01 |
MySQLi가 준비한 문 오류 보고 (0) | 2023.02.01 |