SQL Serverでテーブルの列情報を取得するクエリ例
SQL Serverでテーブルの列情報を取得するクエリ
以下のクエリを使用すると、SQL Serverの特定のテーブルの列名、データ型、NOT NULL制約、およびPRIMARY KEY制約を取得することができます:
SELECT
COLUMN_NAME,
DATA_TYPE,
IS_NULLABLE,
COLUMN_ID,
KEY_CONSTRAINT_NAME
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = 'YourTableName'
ORDER BY
COLUMN_ID;
各列の解説:
- COLUMN_NAME: 列名
- DATA_TYPE: データ型
- IS_NULLABLE: NULL許容フラグ (YES: NULL許容, NO: NULL不許容)
- COLUMN_ID: 列の順序番号
- KEY_CONSTRAINT_NAME: PRIMARY KEY制約の名前 (もしあれば)
使用方法:
- YourTableName を実際のテーブル名に置き換えてください。
- クエリを実行すると、指定したテーブルの列に関する情報が取得されます。
例:
SELECT
COLUMN_NAME,
DATA_TYPE,
IS_NULLABLE,
COLUMN_ID,
KEY_CONSTRAINT_NAME
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = 'Customers';
このクエリは、"Customers" テーブルの列に関する情報を取得します。
注意:
INFORMATION_SCHEMA
はシステムカタログであり、データベース内のメタデータ情報を提供します。COLUMN_ID
は列の順序を示しますが、実際のアプリケーションでの順序とは異なる場合があります。- PRIMARY KEY制約が定義されている場合、
KEY_CONSTRAINT_NAME
列に制約の名前が表示されます。
SELECT
COLUMN_NAME,
DATA_TYPE,
IS_NULLABLE,
COLUMN_ID,
KEY_CONSTRAINT_NAME
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = 'YourTableName'
ORDER BY
COLUMN_ID;
SELECT
COLUMN_NAME,
DATA_TYPE,
IS_NULLABLE,
COLUMN_ID,
KEY_CONSTRAINT_NAME
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = 'Customers';
sys.columnsシステムビュー
SELECT
c.name AS COLUMN_NAME,
t.name AS DATA_TYPE,
c.is_nullable,
c.column_id,
k.constraint_name AS KEY_CONSTRAINT_NAME
FROM
sys.columns c
INNER JOIN
sys.types t ON c.user_type_id = t.user_type_id
LEFT JOIN
sys.key_constraints k ON c.object_id = k.parent_object_id AND c.column_id = k.column_id
WHERE
c.object_id = OBJECT_ID('YourTableName');
この方法では、sys.columns
システムビューを使用して列情報を取得します。
Dynamic SQL
DECLARE @TableName NVARCHAR(128) = 'YourTableName';
DECLARE @SQL NVARCHAR(MAX);
SET @SQL = N'
SELECT
COLUMN_NAME,
DATA_TYPE,
IS_NULLABLE,
COLUMN_ID,
KEY_CONSTRAINT_NAME
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = ''' + @TableName + '''
ORDER BY
COLUMN_ID;';
EXEC sp_executesql @SQL;
この方法では、動的SQLを使用してテーブル名をパラメータとして受け取り、クエリを実行します。
Stored Procedure
CREATE PROCEDURE sp_GetTableColumns
@TableName NVARCHAR(128)
AS
BEGIN
SELECT
COLUMN_NAME,
DATA_TYPE,
IS_NULLABLE,
COLUMN_ID,
KEY_CONSTRAINT_NAME
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = @TableName
ORDER BY
COLUMN_ID;
END;
EXEC sp_GetTableColumns 'YourTableName';
この方法では、ストアドプロシージャを作成し、テーブル名を引数として受け取り、クエリを実行します。
sql sql-server database