データディクショナリとは何ですか?
SQL Serverでは、データディクショナリは、データベースの定義に関する情報を格納するために使用されるデータベーステーブルのセットです。 ディクショナリには、テーブル、インデックス、列、データ型、ビューなどのデータベースオブジェクトに関する情報が含まれています。
データディクショナリは、SQL Serverでクエリを実行するために使用され、データベース内でオブジェクトが追加、削除、または変更されるたびに自動的に更新
この記事のすべての例は、Microsoft SQL Server Management StudioおよびAdventureworks2012データベースに基づいています。 あなたは、SQL Serverの使用を開始する私のガイドを使用して、これらの無料のツールを使用して開始することができます。
SQL Serverでのデータディクショナリの使用方法
SQL Serverでは、データベースディクショナリを使用してSQLステートメントを検証します。 SQL文を実行すると、DBMS(データベース管理システム)がその文を解析し、参照しているテーブルとフィールドが有効かどうかを判断します。 これをすばやく行うには、データディクショナリを参照します。
SQL Serverでは、ステートメントの有効性のテストに加えて、データディクショナリを使用してクエリプランの生成を支援し、データベースの構造を定義する情
データ辞書は、SQL Serverがデータにアクセスするために使用するためのガイドブックになります。 簡単に言えば、データディクショナリがなければ、SQL ServerはSQL言語を認識して理解していますが、データベースのテーブルと列については認識しません。
データディクショナリのその他の用途
データディクショナリにはデータベースの定義が含まれているため、データベースに関する情報を得るために使 本当にクールなことは、データディクショナリがSQLテーブルとビューで構成されていることです。 これは、クエリを介してDBに関する情報を取得できることを意味します!
データディクショナリは、データベースの構造を理解するために設計者や開発者によって使用されます。 辞書は最新の参照文書と考えることができます。
SQL Server Management Studioなどの設計ツールは、データディクショナリを使用してオブジェクトエクスプローラーを介してデータベースに関する情報を表示します。
上記のテーブルは魔法のように知られていない、むしろ、オブジェクトエクスプローラーは、すべてのユーザーテーブルを取得するためにデータディクショナリにクエリを発行しました。
データディクショナリは、一連のシステムテーブルに格納されます。 これらのテーブルを直接照会することはできますが、Microsoftはデータディクショナリを構成するシステムテーブルを変更する権利を留保します。 このため、テーブルに直接アクセスするのではなく、INFORMATION_SCHEMAビューを照会することをお勧めします。
データディクショナリを自分で照会することができるので、そうでなければオブジェクトエクスプローラを介して多くの狩りやつつきを必要とす たとえば、BusinessEntityID列を使用して、すべてのテーブルとビューを簡単に見つけるにはどうすればよいですか? データディクショナリがない場合は、オブジェクトエクスプローラを使用して、すべてのテーブルとビューを開き、列の定義を確認する必要があります。 ただし、データディクショナリを使用すると、単純なクエリを使用してこれを行うことができます。
INFORMATION_SCHEMAビュー
SQL Serverに含まれるINFORMATION_SCHEMAビューは、SQL-92ISO標準に準拠しています。 これは、ISO標準に準拠する他のデータベースベンダーが同じビューセットを提供することを意味します。
ここでは、より一般的に使用されるビューとその説明のいくつかがあります:
- COLUMNS–現在のユーザーが現在のデータベースで使用するアクセス権を持つ列ごとに1つの行を返します。 このビューは、使用する列が定義されているデータ型とテーブルを決定するために使用できます。
- TABLES–ユーザーが現在のデータベース内で使用するアクセス権を持っているテーブルごとに1つの行を返します。 テーブルとビューの両方がテーブルビューを使用して返されることに注意してください。
- VIEW_TABLE_USAGE–現在のデータベース内のビューで使用されているテーブルごとに1つの行を返します。
- VIEWS–現在のデータベースから現在のユーザーのアクセス許可を使用してアクセスできるビューの行を1つ返します。
Information_SCHEMAビューを使用する例
指定された列を含むすべてのテーブルを一覧表示する
INFORMATION_SCHEMAを使用してこれを行うことができます。列ビュー。 たとえば、次のリストには、すべてのテーブルとビューにBusinessEntityID
SELECT TABLE_NAMEFROM AdventureWorks2012_Data.INFORMATION_SCHEMA.COLUMNSWHERE COLUMN_NAME = 'BusinessEntityID'
列が含まれています。 データベース内のフィールドのすべての出現を見つけるために、すべての定義を手作業で検索する必要があると想像できますか?
データベース内のすべてのテーブルを一覧表示
INFORMATION_SCHEMAを使用します。これを行うには、テーブルビュー。
SELECT TABLE_NAME, TABLE_TYPEFROM AdventureWorks2012_Data.INFORMATION_SCHEMA.TABLESORDER BY TABLE_NAME
このクエリは、ベーステーブルとビューの両方を返します。
各スキーマ内のテーブルの数を一覧表示する
この例では、各スキーマとその中で定義されているテーブルとビューの数が一覧表示されます。
SELECT TABLE_SCHEMA, Count(TABLE_SCHEMA)FROM AdventureWorks2012_Data.INFORMATION_SCHEMA.TABLESGROUP BY TABLE_SCHEMA
SQL Serverカタログビュー
カタログビューは、データディクショナリを表示する別の方法です。 私はオブジェクトカタログビューがより多くの情報を提供していると感じており、INFORMATION_SCHEMAビューでこれらのビューを使用する傾向があります。オブジェクト–データベース内で定義された外部キーや主キー制約など、各オブジェクトの行が含まれています。
最も有用なビューのいくつかは次のとおり
カタログビューを使用する例
次の例では、MICROSOFT SQL Serverカタログビューを使用して、INFORMATION_SCHEMAを使用して上記と同じ情報
指定された列を含むすべてのテーブルを一覧表示する
特定の列を使用してテーブルの名前を取得するために、両方のsys。テーブルとsys。列ビューは一緒に使用する必要があります。 これらは、表やビューなどの共通データベースオブジェクトを識別するために使用されるobject_idを介して結合されます。
SELECT t.name, t.type_descFROM AdventureWorks2012_Data.sys.columns AS cINNER JOIN sys.tables AS t ON c.object_id = t.object_idWHERE c.name = 'BusinessEntityID'
データベース内のすべてのテーブルを一覧表示
sys。テーブルビューは、データベースで定義されているすべてのテーブルの名前を取得するために使用できます。 このビューは、ベーステーブルとビューの両方を返します。
SELECT name, type_descFROM AdventureWorks2012_Data.sys.tablesORDER BY Name
各スキーマ内のテーブルの数を一覧表示
sys。テーブルビューにはスキーマ名が含まれていないため、組み込み関数SCHEMA_NAMEを使用してスキーマ名を取得します。例からわかるように、INFORMATION_SCHEMAを使用するよりも少し技術的です。 しかし、私は経験から、カタログビューにはもっと多くの情報が含まれていると言います…データベースの構造について特定の質問がある場合、これらはヒット