SQL Server で DESCRIBE TABLE を使う:GUI ツールを使う方法
SQL Server における DESCRIBE TABLE の同等機能
MySQL や PostgreSQL などのデータベースでは、DESCRIBE TABLE
コマンドを使ってテーブルの構造を簡単に確認できます。一方、SQL Server では同等の単一コマンドは存在しません。しかし、いくつか代替方法を使って同様の情報を得ることができます。
代替方法
- sp_columns システムストアドプロシージャ
EXEC sp_columns @table_name = 'テーブル名';
この方法は、テーブル名、列名、データ型、長さ、桁数、許容値、デフォルト値、主キー情報など、詳細な列情報を取得できます。
- sys.columns システムビュー
SELECT *
FROM sys.columns
WHERE object_id = OBJECT_ID('テーブル名');
この方法は、sp_columns
よりも簡潔な方法で列情報を取得できます。
- INFORMATION_SCHEMA ビュー
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'テーブル名';
この方法は、標準 SQL に準拠した方法で列情報を取得できます。
各方法の詳細
- 最も詳細な情報
- 複雑なオプション指定が可能
- 習得難易度が高い
- 簡潔な記述
sp_columns
よりも情報量が少ない
- 標準 SQL に準拠
- 他データベースとの互換性が高い
補足
- 上記以外にも、GUI ツールや SSMS のオブジェクトエクスプローラーを使ってテーブル構造を確認することもできます。
- SQL Server 2016 以降では、
sys.dm_db_column_partitions
DMV を使ってパーティションテーブルの列情報を取得できます。
関連用語
- SQL
- SQL Server
- T-SQL
- DESCRIBE TABLE
- sp_columns
sp_columns システムストアドプロシージャ
USE AdventureWorks2019;
EXEC sp_columns @table_name = 'Person.Address';
sys.columns システムビュー
USE AdventureWorks2019;
SELECT *
FROM sys.columns
WHERE object_id = OBJECT_ID('Person.Address');
INFORMATION_SCHEMA ビュー
USE AdventureWorks2019;
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'Person.Address';
- 上記のコードは、SQL Server Management Studio (SSMS) などのクエリ エディターで実行できます。
- テーブル名やデータベース名を変更して、他のテーブルの情報を確認することもできます。
SQL Server で DESCRIBE TABLE の同等機能を実現するその他の方法
- SSMS でデータベースに接続します。
- オブジェクトエクスプローラーでテーブルを展開します。
- テーブル名の上で右クリックし、「テーブルの定義を表示」を選択します。
GUI ツール
- SQL Server Data Tools (SSDT)
- Visual Studio
- Toad for SQL Server
これらのツールには、テーブル構造を表示する機能が備わっています。
T-SQL スクリプト
SELECT
c.name AS 列名,
t.name AS データ型,
c.length AS 長さ,
c.is_nullable AS 許容値
FROM sys.columns c
INNER JOIN sys.types t ON c.system_type_id = t.system_type_id
WHERE c.object_id = OBJECT_ID('テーブル名');
PowerShell
Get-SqlColumn -DatabaseName 'データベース名' -TableName 'テーブル名'
.NET Framework
using (var connection = new SqlConnection("接続文字列"))
{
var cmd = new SqlCommand("SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'テーブル名'", connection);
var reader = cmd.ExecuteReader();
while (reader.Read())
{
Console.WriteLine("{0} ({1})", reader["COLUMN_NAME"], reader["DATA_TYPE"]);
}
}
sql sql-server t-sql