SQL Serverでテーブル一覧を取得する方法【実務で使える完全ガイド】
CONTENTS
SQL Serverでテーブル一覧を取得する方法は、
データベース構造を正確に把握し、安定した運用や効率的な保守を行ううえで欠かせない基本スキルです。
特にテーブル数が多い環境では、
- どのスキーマに
- どんなテーブルが
- どのような目的で存在しているのか
を素早く把握できるかどうかで、調査や改修のスピードが大きく変わります。
本記事では、
- SQL Serverでテーブル一覧を取得したい
- sys.tables と INFORMATION_SCHEMA の違いを理解したい
- SSMS(GUI)でも確認できる方法を知りたい
- 行数・インデックス・履歴テーブルまで把握したい
といった検索意図を満たすことを目的に、実務でそのまま使える視点で解説します。
SQL Serverでテーブル一覧を取得する基本
SQL Serverでは、主に次の3つの方法でテーブル一覧を取得できます。
- システムカタログビュー(sys.tables など)
- INFORMATION_SCHEMA
- SQL Server Management Studio(SSMS)のGUI
それぞれ得意分野が異なるため、用途に応じて使い分けることが重要です。
sys.tables を使ってテーブル一覧を取得する
sys.tables の基本クエリ
ユーザーテーブルの一覧を取得する最も一般的な方法が sys.tables です。
SELECT
name,
create_date,
modify_date
FROM sys.tables;
このクエリで以下の情報を確認できます。
- テーブル名
- 作成日時
- 最終更新日時
最近変更されたテーブルを洗い出したい場合にも便利です。
スキーマ名を含めて取得する
実務では、スキーマ名を含めた一覧取得がほぼ必須です。
SELECT
s.name AS schema_name,
t.name AS table_name
FROM sys.tables t
JOIN sys.schemas s ON t.schema_id = s.schema_id;
同名テーブルが異なるスキーマに存在するケースでも、正確なオブジェクト構成を把握できます。
sys.tables を使うメリット
- SQL Server固有の詳細情報を取得できる
- sys.columns / sys.indexes などと連携しやすい
- 大規模データベースでも安定して使える
実務では 最も使用頻度の高い方法 と言えるでしょう。
▶ 参考(公式):Microsoft Learn – sys.tables
INFORMATION_SCHEMA.TABLES を使った取得方法
SQL標準に準拠したテーブル一覧
SELECT
TABLE_SCHEMA,
TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE';
INFORMATION_SCHEMA は SQL標準に準拠しているため、
- 他RDBMSとの共通SQLを意識したい場合
- 基本的な構造だけを確認したい場合
に向いています。
INFORMATION_SCHEMA の注意点
- SQL Server独自機能(テンポラルテーブルなど)は取得不可
- 詳細なメタデータ取得には不向き
そのため、sys.tables と併用するのが実務では一般的です。
▶ 参考(公式):Microsoft Learn – INFORMATION_SCHEMA.TABLES
SSMSでテーブル一覧を確認する方法(GUI)
オブジェクトエクスプローラでの確認手順
SQL Server Management Studio(SSMS)を使えば、
クエリを書かずにテーブル一覧を確認できます。
手順
-
SSMSを起動して接続
-
対象データベースを展開
-
「Tables」フォルダを展開
テーブルを右クリックすれば、列構成・インデックス・制約もすぐ確認できます。
クエリエディタと併用するメリット
SSMSではGUIとSQLを併用できます。
SELECT * FROM sys.tables;
結果セットの並び替えやCSV出力も可能なため、
調査・報告業務の効率化にもつながります。
▶ 参考(公式):SQL Server Management Studio
実務で役立つ応用テクニック
特定のカラムを含むテーブルを検索する
影響調査や設計変更時によく使われる方法です。
SELECT
t.name AS table_name,
c.name AS column_name
FROM sys.tables t
JOIN sys.columns c ON t.object_id = c.object_id
WHERE c.name = 'user_id';
- カラム変更時の影響範囲確認
- 不要カラムの洗い出し
に役立ちます。
テンポラルテーブル(履歴テーブル)の一覧取得
SQL Server 2016以降ではテンポラルテーブルが利用可能です。
SELECT
name,
temporal_type
FROM sys.tables
WHERE temporal_type = 2;
temporal_type = 2:システムバージョン管理あり- 履歴テーブルとの関連確認が可能
監査ログや履歴管理を行うシステムでは重要なチェックポイントです。
▶ 参考(公式):Microsoft Learn – テンポラルテーブル
テーブル一覧とあわせて確認したい追加情報
インデックス・キー情報
- sys.indexes
- sys.key_constraints
- sys.foreign_keys
を使うことで、
- パフォーマンス改善
- テーブル間の依存関係把握
が容易になります。
行数の確認方法
SELECT
OBJECT_NAME(object_id) AS table_name,
row_count
FROM sys.dm_db_partition_stats
WHERE index_id < 2;
- データ増加傾向の把握
- 想定外の肥大化検知
に有効です。
まとめ:SQL Serverのテーブル一覧を効率的に扱うために
SQL Serverでテーブル一覧を取得する方法には、
- sys.tables を使った詳細な管理
- INFORMATION_SCHEMA による標準的な確認
- SSMS(GUI)による直感的な把握
といった複数の選択肢があります。
目的に応じて使い分けることで、
調査・設計・運用・トラブル対応のすべてが効率化されます。
テーブル一覧に加えて、
行数・インデックス・履歴情報まで把握できるようになると、
より信頼性の高いデータベース運用につながるでしょう。
SQL Serverを深く理解できるエンジニアを募集しています
本記事で解説したような、
データベース構造を正しく理解し、運用まで見据えて考えられる力は、
システムの品質を支える重要な技術です。
私たちは、
- SQL ServerやRDBMSを論理的に扱える
- 「なぜこの設計なのか」を考えられる
- 保守・運用も含めて技術に向き合いたい
そんなエンジニアと一緒に、
長く使われるシステムを丁寧に育てていきたいと考えています。
本記事の考え方に共感いただけた方は、
ぜひ採用情報もご覧ください。
学んだSQLを、実務で使えるスキルにしたい方へ
本記事ではSQLの基本的な考え方や使い方を解説しましたが、
「実務で使えるレベルまで身につけたい」と感じた方も多いのではないでしょうか。
SQLは、文法を理解するだけでなく、
- どんなデータ構造で使われるのか
- どんなクエリが現場で求められるのか
を意識して学ぶことで、実践力が大きく変わります。
そうした「実務を見据えたSQL学習」を進めたい方には、
完全無料で学べるプログラミングスクール ZeroCode という選択肢もあります。
- SQLを含むWeb・データベース系スキルを体系的に学べる
- 未経験者でも実務を意識したカリキュラム
- 受講料・教材費がかからない完全無料の学習環境
※学習内容や進め方を確認するだけでもOKです