997

SQL Server 上の特定のデータベース内のすべてのテーブルの名前を取得する最良の方法は何ですか?

4

19 に答える 19

1573

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' 
于 2008-10-06T18:00:56.227 に答える
204
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: 拡張ストアド プロシージャ
于 2008-10-06T18:02:10.140 に答える
101
SELECT * FROM INFORMATION_SCHEMA.TABLES 

また

SELECT * FROM Sys.Tables
于 2008-10-06T17:58:19.180 に答える
31
USE YourDBName
GO 
SELECT *
FROM sys.Tables
GO

また

USE YourDBName
GO
SELECT * FROM INFORMATION_SCHEMA.TABLES 
GO
于 2013-10-03T11:23:34.820 に答える
9
exec sp_msforeachtable 'print ''?'''
于 2008-10-06T17:53:54.727 に答える
9

select * from sysobjects where xtype='U'

于 2008-10-06T17:55:21.900 に答える
9
SELECT name 
FROM sysobjects 
WHERE xtype='U' 
ORDER BY name;

(SQL Server 2000 標準。SQL Server 2005 でもサポートされています。)

于 2008-10-06T17:55:40.870 に答える
6
SELECT sobjects.name
FROM sysobjects sobjects
WHERE sobjects.xtype = 'U' 
于 2008-10-06T17:56:33.067 に答える
6

の欠点は、やINFORMATION_SCHEMA.TABLESテーブルなどのシステム テーブルも含まれており、独自のテーブルと区別する方法がないことです。dtpropertiesMSpeer_...

システム テーブルの除外をサポートする(非推奨のsysobjectssys.objectsビューの新しいバージョン) を使用することをお勧めします。

select *
from sys.objects
where type = 'U'      -- User tables
and is_ms_shipped = 0 -- Exclude system tables
于 2017-09-27T12:20:24.070 に答える
2
--for oracle
select tablespace_name, table_name from all_tables;

このリンクは、このトピックに関するより多くの情報を提供できます

于 2015-11-13T12:34:51.257 に答える
2

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
于 2017-10-13T03:10:09.693 に答える