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