【SQLServer】テーブル定義情報 / カラム一覧を確認する方法
- 
          カテゴリ:
                      
 - DB
 
- 
          タグ:
                      
 - #SQLServer
 
SQLServerでテーブル定義を確認する方法をご紹介します。
ここで言うテーブル定義とは、MySQLの「SHOW CREATE TABLE」で取得できる、カラムの商材情報一覧のようなものを指します。
-- テーブル定義取得
SELECT 
    O.object_id
    , C.name AS column_name 
    , TY.name AS type 
    , CASE WHEN I.index_column_id is not null 
        THEN 'TRUE' 
        ELSE   NULL 
        END AS index_column 
    , CASE WHEN KC.parent_object_id is not null 
        THEN 'TRUE' 
        ELSE NULL
        END AS PK 
    , C.user_type_id
    , C.max_length
    , C.precision
    , C.scale
    , C.collation_name
    , C.is_nullable
    , C.is_ansi_padded
    , C.is_rowguidcol
    , C.is_identity
    , C.is_computed
    , C.is_filestream
FROM (
    SELECT  object_id  FROM  sys.objects 
    WHERE  type = 'U' 
    AND name = [テーブル名] ) O 
INNER JOIN 
    sys.columns C
    ON O.object_id = C.object_id 
LEFT JOIN 
    sys.types TY
    ON C.system_type_id = TY.system_type_id 
LEFT JOIN 
    sys.index_columns I
    ON C.object_id = I.object_id 
    AND C.column_id = I.column_id 
LEFT JOIN 
    sys.key_constraints KC
    ON C.object_id = KC.parent_object_id 
    AND KC.type = 'PK' 
    AND I.index_id = KC.unique_index_id 
;
※クエリの結果はあくまでサンプルの内容になります。
| object_id | column_name | type | index_column | PK | user_type_id | max_length | precision | scale | collation_name | is_nullable | is_ansi_padded | is_rowguidcol | is_identity | is_computed | is_filestream | 
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1975 | ID | numeric | TRUE | TRUE | 108 | 9 | 19 | 0 | (NULL) | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | 
| 1975 | コード | varchar | TRUE | (NULL) | 167 | 10 | 0 | 0 | Japanese_CI_AS | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | 
| 1975 | 苗字 | nvarchar | (NULL) | (NULL) | 231 | 80 | 0 | 0 | Japanese_CI_AS | TRUE | TRUE | FALSE | FALSE | FALSE | FALSE | 
| 1975 | 名前 | nvarchar | (NULL) | (NULL) | 231 | 80 | 0 | 0 | Japanese_CI_AS | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | 
| 1975 | メールアドレス | varchar | (NULL) | (NULL) | 167 | 255 | 0 | 0 | Japanese_CI_AS | TRUE | TRUE | FALSE | FALSE | FALSE | FALSE | 
| 1975 | 最終ログイン日 | datetime | (NULL) | (NULL) | 61 | 8 | 23 | 3 | (NULL) | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | 
| 1975 | パスワード | varchar | (NULL) | (NULL) | 167 | 65 | 0 | 0 | Japanese_CI_AS | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | 
| 1975 | トークン | varchar | TRUE | (NULL) | 167 | 65 | 0 | 0 | Japanese_CI_AS | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | 
| 1975 | 登録者 | numeric | (NULL) | (NULL) | 108 | 9 | 19 | 0 | (NULL) | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | 
| 1975 | 登録日 | datetime | (NULL) | (NULL) | 61 | 8 | 23 | 3 | (NULL) | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | 
| 1975 | 更新者 | numeric | (NULL) | (NULL) | 108 | 9 | 19 | 0 | (NULL) | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | 
| 1975 | 更新日 | datetime | (NULL) | (NULL) | 61 | 8 | 23 | 3 | (NULL) | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | 
          投稿日:2019-09-09            
          更新日:2020-08-13      
 
    