[sql-server] TSQL을 사용하여 데이터베이스의 모든 테이블 목록을 어떻게 얻습니까?

SQL Server의 특정 데이터베이스에있는 모든 테이블의 이름을 얻는 가장 좋은 방법은 무엇입니까?



답변

SQL Server 2000, 2005, 2008, 2012, 2014, 2016, 2017 또는 2019 :

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

특정 데이터베이스의 테이블 만 표시하려면

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

또는,

SELECT TABLE_NAME 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_TYPE = 'BASE TABLE' 
    AND TABLE_CATALOG='dbName' --(for MySql, use: TABLE_SCHEMA='dbName' )

PS : SQL Server 2000의 경우 :

SELECT * FROM sysobjects WHERE xtype='U' 


답변

SELECT sobjects.name
FROM sysobjects sobjects
WHERE sobjects.xtype = 'U'

검색 할 수있는 다른 객체 유형 목록은 다음과 같습니다.

  • AF : 집계 기능 (CLR)
  • C : CHECK 제약
  • D : 디폴트 또는 DEFAULT 제약
  • F : 외래 키 제약
  • L : 로그
  • FN : 스칼라 함수
  • FS : 어셈블리 (CLR) 스칼라 함수
  • FT : 어셈블리 (CLR) 테이블 반환 함수
  • IF : 인라인 테이블 함수
  • IT : 내부 테이블
  • P : 저장 프로 시저
  • PC : 조립 (CLR) 저장 프로 시저
  • PK : PRIMARY KEY 제약 조건 (유형은 K)
  • RF : 복제 필터 저장 프로 시저
  • S : 시스템 테이블
  • SN : 동의어
  • SQ : 서비스 대기열
  • TA : 어셈블리 (CLR) DML 트리거
  • TF : 테이블 함수
  • TR : SQL DML 트리거
  • TT : 테이블 유형
  • U : 사용자 테이블
  • UQ : UNIQUE 제약 조건 (유형은 K)
  • V :보기
  • X : 확장 저장 프로 시저

답변

SELECT * FROM INFORMATION_SCHEMA.TABLES 

또는

SELECT * FROM Sys.Tables


답변

USE YourDBName
GO 
SELECT *
FROM sys.Tables
GO

또는

USE YourDBName
GO
SELECT * FROM INFORMATION_SCHEMA.TABLES 
GO


답변

SELECT * FROM information_schema.tables
where TABLE_TYPE = 'BASE TABLE'

SQL Server 2012


답변

exec sp_msforeachtable 'print ''?'''


답변

SELECT name 
FROM sysobjects 
WHERE xtype='U' 
ORDER BY name;

(SQL Server 2000 표준. 여전히 SQL Server 2005에서 지원됩니다.)