[sql] SQL 쿼리로 특정 데이터베이스의 모든 테이블 이름을 가져 옵니까?

“MySQL”및 “MS SQL Server”와 같은 여러 데이터베이스 서버를 처리 할 수있는 응용 프로그램을 작업 중입니다.

모든 데이터베이스 유형에 적합한 일반 쿼리를 사용하여 특정 데이터베이스의 테이블 이름을 가져 오려고합니다. 나는 다음을 시도했다.

SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE'

그러나 특정 서버의 모든 데이터베이스의 테이블 이름을 제공하지만 선택한 데이터베이스의 테이블 이름 만 가져 오려고합니다. 특정 데이터베이스의 테이블을 가져 오려면이 쿼리를 어떻게 제한 할 수 있습니까?



답변

다른 SQL dbms가 스키마를 처리하는 방식 때문일 수 있습니다.

다음을 시도하십시오

SQL Server의 경우 :

SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_CATALOG='dbName'

MySQL의 경우 :

SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_SCHEMA='dbName' 

Oracle의 경우에는 동등한 것이 사용된다고 생각합니다 DBA_TABLES.


답변

여기 에서 도난당한 :

USE YOURDBNAME
GO
SELECT *
FROM sys.Tables
GO


답변

다음 쿼리는 Tables데이터베이스에서 모든 이름을 선택합니다 DBName.

USE DBName
GO
SELECT *
FROM sys.Tables
GO


답변

USE DBName;
SELECT * FROM sys.Tables;

우리는 GO세미콜론을 사용할 수 있습니다 ;.


답변

그냥 DATABASE NAME앞에 넣어 INFORMATION_SCHEMA.TABLES:

select table_name from YOUR_DATABASE.INFORMATION_SCHEMA.TABLES where TABLE_TYPE = 'BASE TABLE'


답변

mysql에서 다음을 사용하십시오.

SHOW TABLES;

다음을 사용하여 DB를 선택한 후 :

USE db_name


답변

나는이 대답을 보지 못했지만 이것이 내가하는 일이다.

SELECT name FROM databaseName.sys.Tables;