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에서 지원됩니다.)