【初心者向け】SQL Server テーブル定義の確認方法:T-SQL クエリとシステムプロシージャを使いこなす
SQL Server でテーブル定義を表示するには、主に以下の 2 つの方法があります。
- システムストアドプロシージャを使用する
- Transact-SQL (T-SQL) クエリを使用する
利点
- シンプルでわかりやすい
- 初心者でも使いやすい
手順
- SQL Server Management Studio (SSMS) を起動します。
- 接続するサーバーとデータベースを選択します。
- オブジェクト エクスプローラーで、テーブル定義を確認したいテーブルを右クリックします。
- コンテキスト メニューから 「スクリプトを作成」 > **「テーブル DDL として」**を選択します。
結果
選択したテーブルの CREATE TABLE ステートメントを含むスクリプトが生成されます。このスクリプトには、テーブル名、列名、データ型、制約などの情報が含まれています。
- 柔軟性が高い
- 他の操作と組み合わせることができる
- SSMS で新しいクエリ ウィンドウを開きます。
- 以下の T-SQL クエリを貼り付け、テーブル名に置き換えて実行します。
sp_help @objname = N'テーブル名', @db = N'データベース名'
例
sp_help @objname = N'dbo.Employees', @db = N'MyDatabase'
クエリの結果は、選択したテーブルの列名、データ型、長さ、許容値、デフォルト値などの情報を含むテーブルになります。
補足
sp_help
プロシージャは、テーブルだけでなく、ビュー、プロシージャ、ストアド プロシージャなどの他のデータベース オブジェクトの定義も表示できます。- T-SQL クエリを使用する場合は、
sys.columns
やsys.types
などのシステム テーブルビューを使用して、より詳細な情報を取得することもできます。
sp_help @objname = N'dbo.Employees', @db = N'MyDatabase'
このコードを実行すると、次のようになります。
Output:
--
-- 列名 データ型 長さ 許容値 デフォルト値
--
EmployeeID int 4 NOT NULL (No default value)
FirstName nvarchar(50) 50 NULL ''
LastName nvarchar(50) 50 NULL ''
Email nvarchar(100) 100 NULL ''
HireDate datetime (23) NULL (GetDate())
Salary decimal(18, 2) 18, 2 NULL 0.00
--
-- 主キー制約
--
CONSTRAINT PK_Employees PRIMARY KEY (EmployeeID)
説明
sp_help
プロシージャは、2 つの引数を受け取ります。@objname
: 表示するオブジェクトの名前。この例では、dbo.Employees
テーブルを指定します。@db
: オブジェクトが存在するデータベースの名前。この例では、MyDatabase
データベースを指定します。
- クエリの結果は、次の列を含むテーブルになります。
ColumnName
: 列名DataType
: データ型Length
: データの長さNullable
: 列が NULL 値を許容するかどうかDefaultValue
: 列のデフォルト値
追加例
以下のコードは、sys.columns
システムビューを使用して、MyDatabase
データベースの dbo.Employees
テーブルの列に関するより詳細な情報を取得する例です。
SELECT
c.name AS 列名,
t.name AS データ型,
c.length AS 長さ,
c.is_nullable AS 許容値,
d.name AS デフォルト値
FROM sys.columns c
INNER JOIN sys.types t ON c.type_id = t.type_id
LEFT JOIN sys.default_constraints d ON c.object_id = d.parent_id AND c.column_id = d.column_id
WHERE c.object_id = OBJECT_ID(N'dbo.Employees')
ORDER BY c.column_id;
Output:
列名 データ型 長さ 許容値 デフォルト値
---------- ------------ -------- ------------ -------------
EmployeeID int 4 否 (なし)
FirstName nvarchar(50) 50 はい ''
LastName nvarchar(50) 50 はい ''
Email nvarchar(100) 100 はい ''
HireDate datetime (23) はい GETDATE()
Salary decimal(18, 2) 18, 2 はい 0.00
このクエリは、sp_help
プロシージャよりも詳細な情報を提供します。各列のデータ型、長さ、許容値、デフォルト値だけでなく、列名も表示します。
これらの例は、T-SQL クエリを使用して SQL Server でテーブル定義を表示する方法を示すほんの一例です。ニーズに合わせてクエリをカスタマイズして、必要な情報を取得することができます。
SQL Server でテーブル定義を表示するその他の方法
上記に加えて、テーブル定義を表示するその他の方法をいくつか紹介します。
方法 3: SSMS のオブジェクト エクスプローラーを使用する
- グラフィカルなインターフェースを使用して簡単に操作できる
- SSMS を起動します。
- テーブルを右クリックし、コンテキスト メニューから **「プロパティ」**を選択します。
- 「定義」 ページに移動すると、テーブルの CREATE TABLE ステートメントが表示されます。
方法 4: SQL Server Management Studio Integration Services (SSIS) を使用する
- テーブル定義をレポートとして生成できる
- スケジュール実行できる
- SSIS パッケージを作成します。
- 「データフロー タスク」 を追加します。
- 「OLE DB ソース」 アダプターを追加し、テーブル定義を取得するテーブルを構成します。
- 「スクリプト コンポーネント」 を追加し、以下の T-SQL クエリを貼り付けます。
SELECT
'CREATE TABLE ' + QUOTENAME(t.schema_name) + '.' + QUOTENAME(t.name) + ' (' +
STRING_AGG(
QUOTENAME(c.name) + ' ' +
DATA_TYPE_NAME(c.data_type) +
(CASE WHEN c.is_nullable = 1 THEN ' NULL' ELSE '' END) +
(CASE WHEN c.is_identity = 1 THEN ' IDENTITY(' + CONVERT(VARCHAR(20), c.seed_value) + ',' + CONVERT(VARCHAR(20), c.increment_value) + ')' ELSE '' END) +
(CASE WHEN d.definition IS NOT NULL THEN ' DEFAULT ' + d.definition ELSE '' END) + ',',
'\n'
)
FROM sys.columns c
INNER JOIN sys.types t ON c.type_id = t.type_id
LEFT JOIN sys.default_constraints d ON c.object_id = d.parent_id AND c.column_id = d.column_id
WHERE c.object_id = OBJECT_ID(@TableName)
ORDER BY c.column_id
) + ')'
FROM sys.tables t
WHERE t.name = @TableName
- 「スクリプト コンポーネント」 を 「ファイル デスティネーション」 アダプターに接続します。
方法 5: PowerShell を使用する
- 自動化スクリプトに組み込むことができる
- PowerShell で以下のコマンドを実行します。
Get-SqlTableDefinition -DatabaseName MyDatabase -TableName dbo.Employees | Out-File C:\EmployeesTableDefinition.txt
このコマンドは、MyDatabase
データベースの dbo.Employees
テーブルの定義を C:\EmployeesTableDefinition.txt
ファイルに出力します。
上記の方法以外にも、サードパーティ製のツールを使用してテーブル定義を表示する方法があります。
これらの方法はそれぞれ異なる利点と欠点があります。ニーズに合わせて最適な方法を選択してください。
この説明
sql-server t-sql