SQL Serverのシステムカタログビューの3つには、sys.columns
が含まれます。 、sys.system_columns
、およびsys.all_columns
。
これらの3つのカタログビューはそれぞれ、データベース内の列に関するメタデータを提供しますが、それらの間には違いがあります。
それぞれの機能は次のとおりです。
-
sys.columns
- ユーザー定義オブジェクトから列を返します。これには、システムベーステーブルの列が含まれます。
-
sys.system_columns
- システムオブジェクトから列を返します。
-
sys.all_columns
- すべてのユーザー定義オブジェクトとシステムオブジェクトから列を返します。
つまり、最後のビューは、前の2つのビューの結果を組み合わせたものです。
次のオブジェクトタイプには列を含めることができます:
- テーブル値アセンブリ関数(FT)
- インラインテーブル値SQL関数(IF)
- 内部テーブル(IT)
- システムテーブル(S)
- テーブル値SQL関数(TF)
- ユーザーテーブル(U)
- ビュー(V)
例
これらのビューによって返される結果の違いを示す例を次に示します。
USE Music; SELECT COUNT(*) AS columns FROM sys.columns; SELECT COUNT(*) AS system_columns FROM sys.system_columns; SELECT COUNT(*) AS all_columns FROM sys.all_columns;
結果:
+-----------+ | columns | |-----------| | 1025 | +-----------+ (1 row affected) +------------------+ | system_columns | |------------------| | 8982 | +------------------+ (1 row affected) +---------------+ | all_columns | |---------------| | 10007 | +---------------+ (1 row affected)
最初の2つのクエリの結果を合計すると、sys.all_columns
と同じ結果が得られます。 :
USE Music; SELECT (SELECT COUNT(*) FROM sys.columns) + (SELECT COUNT(*) FROM sys.system_columns) AS Result;
結果:
+----------+ | Result | |----------| | 10007 | +----------+