your programing

TSQL을 사용하여 데이터베이스의 모든 테이블 목록을 얻으려면 어떻게해야합니까?

lovepro 2020. 9. 28. 09:47
반응형

TSQL을 사용하여 데이터베이스의 모든 테이블 목록을 얻으려면 어떻게해야합니까?


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


SQL Server 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 : FOREIGN KEY 제약
  • 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

select * from sys.tables;

또는

SELECT * FROM INFORMATION_SCHEMA.TABLES 

또는

SELECT * FROM sysobjects WHERE xtype='U'

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 서버 2012


exec sp_msforeachtable 'print ''?'''

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

(SQL Server 2000 표준, SQL Server 2005에서 계속 지원됨)


select * from sysobjects where xtype='U'


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

단점은 INFORMATION_SCHEMA.TABLES테이블과 같은 시스템 테이블도 포함되어 있으며 자신의 테이블과 구분할 방법이 없다는 것입니다.dtpropertiesMSpeer_...

시스템 테이블 제외를 지원 sys.objects하는 (더 이상 사용되지 않는 sysobjects의 새 버전)을 사용 하는 것이 좋습니다 .

select *
from sys.objects
where type = 'U'      -- User tables
and is_ms_shipped = 0 -- Exclude system tables

SSMS에서 특정 데이터베이스 (예 : "MyDatabase")의 모든 정규화 된 테이블 이름을 가져 오려면 :

SELECT [TABLE_CATALOG] + '.' + [TABLE_SCHEMA] + '.' + [TABLE_NAME]
FROM   MyDatabase.INFORMATION_SCHEMA.Tables
WHERE  [TABLE_TYPE] = 'BASE TABLE' and [TABLE_NAME] <> 'sysdiagrams'
ORDER BY [TABLE_SCHEMA], [TABLE_NAME]

결과 :

  • MyDatabase.dbo.MyTable1
  • MyDatabase.dbo.MyTable2
  • MyDatabase.MySchema.MyTable3
  • MyDatabase.MySchema.MyTable4
  • 기타

이것을 이용하십시오. 스키마 이름과 함께 테이블 이름을 얻을 수 있습니다.

SELECT SYSSCHEMA.NAME, SYSTABLE.NAME
FROM SYS.tables SYSTABLE
INNER JOIN SYS.SCHEMAS SYSSCHEMA
ON SYSTABLE.SCHEMA_ID = SYSSCHEMA.SCHEMA_ID

먼저 데이터베이스를 선택하기 만하면됩니다.

use database_name;

그런 다음 입력

show tables;

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

Thanks to Ray Vega, whose response gives all user tables in a database...

exec sp_msforeachtable 'print ''?'''

sp_helptext shows the underlying query, which summarises to...

select * from dbo.sysobjects o 
join sys.all_objects syso on o.id =  syso.object_id  
where OBJECTPROPERTY(o.id, 'IsUserTable') = 1 
and o.category & 2 = 0 

Well you can use sys.objects to get all database objects.

 GO
 select * from sys.objects where type_desc='USER_TABLE' order by name
 GO

OR

--  For all tables
select * from INFORMATION_SCHEMA.TABLES 
GO 

  --- For user defined tables
select * from INFORMATION_SCHEMA.TABLES where TABLE_TYPE='BASE TABLE'
GO

  --- For Views
select * from INFORMATION_SCHEMA.TABLES where TABLE_TYPE='VIEW'
GO

--for oracle
select tablespace_name, table_name from all_tables;

This link can provide much more information on this topic


Using SELECT * FROM INFORMATION_SCHEMA.COLUMNS also shows you all tables and related columns.

참고URL : https://stackoverflow.com/questions/175415/how-do-i-get-list-of-all-tables-in-a-database-using-tsql

반응형